gem5  v21.0.1.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
instructions.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015-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 
35 
36 #include <cmath>
37 
39 #include "debug/GCN3.hh"
40 #include "debug/GPUSync.hh"
41 #include "gpu-compute/shader.hh"
42 
43 namespace Gcn3ISA
44 {
45 
47  : Inst_SOP2(iFmt, "s_add_u32")
48  {
49  setFlag(ALU);
50  } // Inst_SOP2__S_ADD_U32
51 
53  {
54  } // ~Inst_SOP2__S_ADD_U32
55 
56  // D.u = S0.u + S1.u;
57  // SCC = (S0.u + S1.u >= 0x100000000ULL ? 1 : 0) is an unsigned
58  // overflow/carry-out.
59  void
61  {
62  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
63  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
64  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
65  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
66 
67  src0.read();
68  src1.read();
69 
70  sdst = src0.rawData() + src1.rawData();
71  scc = ((ScalarRegU64)src0.rawData() + (ScalarRegU64)src1.rawData())
72  >= 0x100000000ULL ? 1 : 0;
73 
74  sdst.write();
75  scc.write();
76  }
77 
79  : Inst_SOP2(iFmt, "s_sub_u32")
80  {
81  setFlag(ALU);
82  } // Inst_SOP2__S_SUB_U32
83 
85  {
86  } // ~Inst_SOP2__S_SUB_U32
87 
88  // D.u = S0.u - S1.u;
89  // SCC = (S1.u > S0.u ? 1 : 0) is an unsigned overflow or carry-out.
90  void
92  {
93  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
94  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
95  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
96  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
97 
98  src0.read();
99  src1.read();
100 
101  sdst = src0.rawData() - src1.rawData();
102  scc = (src1.rawData() > src0.rawData()) ? 1 : 0;
103 
104  sdst.write();
105  scc.write();
106  }
107 
109  : Inst_SOP2(iFmt, "s_add_i32")
110  {
111  setFlag(ALU);
112  } // Inst_SOP2__S_ADD_I32
113 
115  {
116  } // ~Inst_SOP2__S_ADD_I32
117 
118  // D.i = S0.i + S1.i;
119  // SCC = (S0.u[31] == S1.u[31] && S0.u[31] != D.u[31]) is a signed
120  // overflow.
121  void
123  {
124  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
125  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
126  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
127  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
128 
129  src0.read();
130  src1.read();
131 
132  sdst = src0.rawData() + src1.rawData();
133  scc = (bits(src0.rawData(), 31) == bits(src1.rawData(), 31)
134  && bits(src0.rawData(), 31) != bits(sdst.rawData(), 31))
135  ? 1 : 0;
136 
137  sdst.write();
138  scc.write();
139  }
140 
142  : Inst_SOP2(iFmt, "s_sub_i32")
143  {
144  setFlag(ALU);
145  } // Inst_SOP2__S_SUB_I32
146 
148  {
149  } // ~Inst_SOP2__S_SUB_I32
150 
151  // D.i = S0.i - S1.i;
152  // SCC = (S0.u[31] != S1.u[31] && S0.u[31] != D.u[31]) is a signed
153  // overflow.
154  void
156  {
157  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
158  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
159  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
160  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
161 
162  src0.read();
163  src1.read();
164 
165  sdst = src0.rawData() - src1.rawData();
166  scc = (bits(src0.rawData(), 31) != bits(src1.rawData(), 31)
167  && bits(src0.rawData(), 31) != bits(sdst.rawData(), 31)) ? 1 : 0;
168 
169  sdst.write();
170  scc.write();
171  }
172 
174  : Inst_SOP2(iFmt, "s_addc_u32")
175  {
176  setFlag(ALU);
177  } // Inst_SOP2__S_ADDC_U32
178 
180  {
181  } // ~Inst_SOP2__S_ADDC_U32
182 
183  // D.u = S0.u + S1.u + SCC;
184  // SCC = (S0.u + S1.u + SCC >= 0x100000000ULL ? 1 : 0) is an unsigned
185  // overflow.
186  void
188  {
189  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
190  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
191  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
192  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
193 
194  src0.read();
195  src1.read();
196  scc.read();
197 
198  sdst = src0.rawData() + src1.rawData() + scc.rawData();
199  scc = ((ScalarRegU64)src0.rawData() + (ScalarRegU64)src1.rawData()
200  + (ScalarRegU64)scc.rawData()) >= 0x100000000ULL ? 1 : 0;
201 
202  sdst.write();
203  scc.write();
204  }
205 
207  : Inst_SOP2(iFmt, "s_subb_u32")
208  {
209  setFlag(ALU);
210  } // Inst_SOP2__S_SUBB_U32
211 
213  {
214  } // ~Inst_SOP2__S_SUBB_U32
215 
216  // D.u = S0.u - S1.u - SCC;
217  // SCC = (S1.u + SCC > S0.u ? 1 : 0) is an unsigned overflow.
218  void
220  {
221  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
222  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
223  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
224  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
225 
226  src0.read();
227  src1.read();
228  scc.read();
229 
230  sdst = src0.rawData() - src1.rawData() - scc.rawData();
231  scc = (src1.rawData() + scc.rawData()) > src0.rawData() ? 1 : 0;
232 
233  sdst.write();
234  scc.write();
235  }
236 
238  : Inst_SOP2(iFmt, "s_min_i32")
239  {
240  setFlag(ALU);
241  } // Inst_SOP2__S_MIN_I32
242 
244  {
245  } // ~Inst_SOP2__S_MIN_I32
246 
247  // D.i = (S0.i < S1.i) ? S0.i : S1.i;
248  // SCC = 1 if S0 is chosen as the minimum value.
249  void
251  {
252  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
253  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
254  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
255  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
256 
257  src0.read();
258  src1.read();
259 
260  sdst = std::min(src0.rawData(), src1.rawData());
261  scc = (src0.rawData() < src1.rawData()) ? 1 : 0;
262 
263  sdst.write();
264  scc.write();
265  }
266 
268  : Inst_SOP2(iFmt, "s_min_u32")
269  {
270  setFlag(ALU);
271  } // Inst_SOP2__S_MIN_U32
272 
274  {
275  } // ~Inst_SOP2__S_MIN_U32
276 
277  // D.u = (S0.u < S1.u) ? S0.u : S1.u;
278  // SCC = 1 if S0 is chosen as the minimum value.
279  void
281  {
282  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
283  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
284  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
285  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
286 
287  src0.read();
288  src1.read();
289 
290  sdst = std::min(src0.rawData(), src1.rawData());
291  scc = (src0.rawData() < src1.rawData()) ? 1 : 0;
292 
293  sdst.write();
294  scc.write();
295  }
296 
298  : Inst_SOP2(iFmt, "s_max_i32")
299  {
300  setFlag(ALU);
301  } // Inst_SOP2__S_MAX_I32
302 
304  {
305  } // ~Inst_SOP2__S_MAX_I32
306 
307  // D.i = (S0.i > S1.i) ? S0.i : S1.i;
308  // SCC = 1 if S0 is chosen as the maximum value.
309  void
311  {
312  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
313  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
314  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
315  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
316 
317  src0.read();
318  src1.read();
319 
320  sdst = std::max(src0.rawData(), src1.rawData());
321  scc = (src0.rawData() > src1.rawData()) ? 1 : 0;
322 
323  sdst.write();
324  scc.write();
325  }
326 
328  : Inst_SOP2(iFmt, "s_max_u32")
329  {
330  setFlag(ALU);
331  } // Inst_SOP2__S_MAX_U32
332 
334  {
335  } // ~Inst_SOP2__S_MAX_U32
336 
337  // D.u = (S0.u > S1.u) ? S0.u : S1.u;
338  // SCC = 1 if S0 is chosen as the maximum value.
339  void
341  {
342  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
343  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
344  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
345  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
346 
347  src0.read();
348  src1.read();
349 
350  sdst = std::max(src0.rawData(), src1.rawData());
351  scc = (src0.rawData() > src1.rawData()) ? 1 : 0;
352 
353  sdst.write();
354  scc.write();
355  }
356 
358  : Inst_SOP2(iFmt, "s_cselect_b32")
359  {
360  setFlag(ALU);
361  } // Inst_SOP2__S_CSELECT_B32
362 
364  {
365  } // ~Inst_SOP2__S_CSELECT_B32
366 
367  // D.u = SCC ? S0.u : S1.u (conditional select).
368  void
370  {
371  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
372  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
373  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
374  ConstScalarOperandU32 scc(gpuDynInst, REG_SCC);
375 
376  src0.read();
377  src1.read();
378  scc.read();
379 
380  sdst = scc.rawData() ? src0.rawData() : src1.rawData();
381 
382  sdst.write();
383  }
384 
386  : Inst_SOP2(iFmt, "s_cselect_b64")
387  {
388  setFlag(ALU);
389  } // Inst_SOP2__S_CSELECT_B64
390 
392  {
393  } // ~Inst_SOP2__S_CSELECT_B64
394 
395  // D.u64 = SCC ? S0.u64 : S1.u64 (conditional select).
396  void
398  {
399  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
400  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
401  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
402  ConstScalarOperandU32 scc(gpuDynInst, REG_SCC);
403 
404  src0.read();
405  src1.read();
406  scc.read();
407 
408  sdst = scc.rawData() ? src0.rawData() : src1.rawData();
409 
410  sdst.write();
411  }
412 
414  : Inst_SOP2(iFmt, "s_and_b32")
415  {
416  setFlag(ALU);
417  } // Inst_SOP2__S_AND_B32
418 
420  {
421  } // ~Inst_SOP2__S_AND_B32
422 
423  // D.u = S0.u & S1.u;
424  // SCC = 1 if result is non-zero.
425  void
427  {
428  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
429  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
430  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
431  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
432 
433  src0.read();
434  src1.read();
435 
436  sdst = src0.rawData() & src1.rawData();
437  scc = sdst.rawData() ? 1 : 0;
438 
439  sdst.write();
440  scc.write();
441  }
442 
444  : Inst_SOP2(iFmt, "s_and_b64")
445  {
446  setFlag(ALU);
447  } // Inst_SOP2__S_AND_B64
448 
450  {
451  } // ~Inst_SOP2__S_AND_B64
452 
453  // D.u64 = S0.u64 & S1.u64;
454  // SCC = 1 if result is non-zero.
455  void
457  {
458  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
459  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
460  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
461  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
462 
463  src0.read();
464  src1.read();
465 
466  sdst = src0.rawData() & src1.rawData();
467  scc = sdst.rawData() ? 1 : 0;
468 
469  sdst.write();
470  scc.write();
471  }
472 
474  : Inst_SOP2(iFmt, "s_or_b32")
475  {
476  setFlag(ALU);
477  } // Inst_SOP2__S_OR_B32
478 
480  {
481  } // ~Inst_SOP2__S_OR_B32
482 
483  // D.u = S0.u | S1.u;
484  // SCC = 1 if result is non-zero.
485  void
487  {
488  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
489  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
490  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
491  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
492 
493  src0.read();
494  src1.read();
495 
496  sdst = src0.rawData() | src1.rawData();
497  scc = sdst.rawData() ? 1 : 0;
498 
499  sdst.write();
500  scc.write();
501  }
502 
504  : Inst_SOP2(iFmt, "s_or_b64")
505  {
506  setFlag(ALU);
507  } // Inst_SOP2__S_OR_B64
508 
510  {
511  } // ~Inst_SOP2__S_OR_B64
512 
513  // D.u64 = S0.u64 | S1.u64;
514  // SCC = 1 if result is non-zero.
515  void
517  {
518  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
519  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
520  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
521  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
522 
523  src0.read();
524  src1.read();
525 
526  sdst = src0.rawData() | src1.rawData();
527  scc = sdst.rawData() ? 1 : 0;
528 
529  sdst.write();
530  scc.write();
531  }
532 
534  : Inst_SOP2(iFmt, "s_xor_b32")
535  {
536  setFlag(ALU);
537  } // Inst_SOP2__S_XOR_B32
538 
540  {
541  } // ~Inst_SOP2__S_XOR_B32
542 
543  // D.u = S0.u ^ S1.u;
544  // SCC = 1 if result is non-zero.
545  void
547  {
548  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
549  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
550  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
551  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
552 
553  src0.read();
554  src1.read();
555 
556  sdst = src0.rawData() ^ src1.rawData();
557  scc = sdst.rawData() ? 1 : 0;
558 
559  sdst.write();
560  scc.write();
561  }
562 
564  : Inst_SOP2(iFmt, "s_xor_b64")
565  {
566  setFlag(ALU);
567  } // Inst_SOP2__S_XOR_B64
568 
570  {
571  } // ~Inst_SOP2__S_XOR_B64
572 
573  // D.u64 = S0.u64 ^ S1.u64;
574  // SCC = 1 if result is non-zero.
575  void
577  {
578  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
579  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
580  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
581  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
582 
583  src0.read();
584  src1.read();
585 
586  sdst = src0.rawData() ^ src1.rawData();
587  scc = sdst.rawData() ? 1 : 0;
588 
589  sdst.write();
590  scc.write();
591  }
592 
594  : Inst_SOP2(iFmt, "s_andn2_b32")
595  {
596  setFlag(ALU);
597  } // Inst_SOP2__S_ANDN2_B32
598 
600  {
601  } // ~Inst_SOP2__S_ANDN2_B32
602 
603  // D.u = S0.u & ~S1.u;
604  // SCC = 1 if result is non-zero.
605  void
607  {
608  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
609  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
610  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
611  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
612 
613  src0.read();
614  src1.read();
615 
616  sdst = src0.rawData() &~ src1.rawData();
617  scc = sdst.rawData() ? 1 : 0;
618 
619  sdst.write();
620  scc.write();
621  }
622 
624  : Inst_SOP2(iFmt, "s_andn2_b64")
625  {
626  setFlag(ALU);
627  } // Inst_SOP2__S_ANDN2_B64
628 
630  {
631  } // ~Inst_SOP2__S_ANDN2_B64
632 
633  // D.u64 = S0.u64 & ~S1.u64;
634  // SCC = 1 if result is non-zero.
635  void
637  {
638  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
639  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
640  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
641  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
642 
643  src0.read();
644  src1.read();
645 
646  sdst = src0.rawData() &~ src1.rawData();
647  scc = sdst.rawData() ? 1 : 0;
648 
649  sdst.write();
650  scc.write();
651  }
652 
654  : Inst_SOP2(iFmt, "s_orn2_b32")
655  {
656  setFlag(ALU);
657  } // Inst_SOP2__S_ORN2_B32
658 
660  {
661  } // ~Inst_SOP2__S_ORN2_B32
662 
663  // D.u = S0.u | ~S1.u;
664  // SCC = 1 if result is non-zero.
665  void
667  {
668  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
669  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
670  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
671  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
672 
673  src0.read();
674  src1.read();
675 
676  sdst = src0.rawData() |~ src1.rawData();
677  scc = sdst.rawData() ? 1 : 0;
678 
679  sdst.write();
680  scc.write();
681  }
682 
684  : Inst_SOP2(iFmt, "s_orn2_b64")
685  {
686  setFlag(ALU);
687  } // Inst_SOP2__S_ORN2_B64
688 
690  {
691  } // ~Inst_SOP2__S_ORN2_B64
692 
693  // D.u64 = S0.u64 | ~S1.u64;
694  // SCC = 1 if result is non-zero.
695  void
697  {
698  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
699  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
700  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
701  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
702 
703  src0.read();
704  src1.read();
705 
706  sdst = src0.rawData() |~ src1.rawData();
707  scc = sdst.rawData() ? 1 : 0;
708 
709  sdst.write();
710  scc.write();
711  }
712 
714  : Inst_SOP2(iFmt, "s_nand_b32")
715  {
716  setFlag(ALU);
717  } // Inst_SOP2__S_NAND_B32
718 
720  {
721  } // ~Inst_SOP2__S_NAND_B32
722 
723  // D.u = ~(S0.u & S1.u);
724  // SCC = 1 if result is non-zero.
725  void
727  {
728  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
729  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
730  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
731  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
732 
733  src0.read();
734  src1.read();
735 
736  sdst = ~(src0.rawData() & src1.rawData());
737  scc = sdst.rawData() ? 1 : 0;
738 
739  sdst.write();
740  scc.write();
741  }
742 
744  : Inst_SOP2(iFmt, "s_nand_b64")
745  {
746  setFlag(ALU);
747  } // Inst_SOP2__S_NAND_B64
748 
750  {
751  } // ~Inst_SOP2__S_NAND_B64
752 
753  // D.u64 = ~(S0.u64 & S1.u64);
754  // SCC = 1 if result is non-zero.
755  void
757  {
758  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
759  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
760  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
761  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
762 
763  src0.read();
764  src1.read();
765 
766  sdst = ~(src0.rawData() & src1.rawData());
767  scc = sdst.rawData() ? 1 : 0;
768 
769  sdst.write();
770  scc.write();
771  }
772 
774  : Inst_SOP2(iFmt, "s_nor_b32")
775  {
776  setFlag(ALU);
777  } // Inst_SOP2__S_NOR_B32
778 
780  {
781  } // ~Inst_SOP2__S_NOR_B32
782 
783  // D.u = ~(S0.u | S1.u);
784  // SCC = 1 if result is non-zero.
785  void
787  {
788  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
789  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
790  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
791  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
792 
793  src0.read();
794  src1.read();
795 
796  sdst = ~(src0.rawData() | src1.rawData());
797  scc = sdst.rawData() ? 1 : 0;
798 
799  sdst.write();
800  scc.write();
801  }
802 
804  : Inst_SOP2(iFmt, "s_nor_b64")
805  {
806  setFlag(ALU);
807  } // Inst_SOP2__S_NOR_B64
808 
810  {
811  } // ~Inst_SOP2__S_NOR_B64
812 
813  // D.u64 = ~(S0.u64 | S1.u64);
814  // SCC = 1 if result is non-zero.
815  void
817  {
818  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
819  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
820  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
821  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
822 
823  src0.read();
824  src1.read();
825 
826  sdst = ~(src0.rawData() | src1.rawData());
827  scc = sdst.rawData() ? 1 : 0;
828 
829  sdst.write();
830  scc.write();
831  }
832 
834  : Inst_SOP2(iFmt, "s_xnor_b32")
835  {
836  setFlag(ALU);
837  } // Inst_SOP2__S_XNOR_B32
838 
840  {
841  } // ~Inst_SOP2__S_XNOR_B32
842 
843  // D.u = ~(S0.u ^ S1.u);
844  // SCC = 1 if result is non-zero.
845  void
847  {
848  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
849  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
850  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
851  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
852 
853  src0.read();
854  src1.read();
855 
856  sdst = ~(src0.rawData() ^ src1.rawData());
857  scc = sdst.rawData() ? 1 : 0;
858 
859  sdst.write();
860  scc.write();
861  }
862 
864  : Inst_SOP2(iFmt, "s_xnor_b64")
865  {
866  setFlag(ALU);
867  } // Inst_SOP2__S_XNOR_B64
868 
870  {
871  } // ~Inst_SOP2__S_XNOR_B64
872 
873  // D.u64 = ~(S0.u64 ^ S1.u64);
874  // SCC = 1 if result is non-zero.
875  void
877  {
878  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
879  ConstScalarOperandU64 src1(gpuDynInst, instData.SSRC1);
880  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
881  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
882 
883  src0.read();
884  src1.read();
885 
886  sdst = ~(src0.rawData() ^ src1.rawData());
887  scc = sdst.rawData() ? 1 : 0;
888 
889  sdst.write();
890  scc.write();
891  }
892 
894  : Inst_SOP2(iFmt, "s_lshl_b32")
895  {
896  setFlag(ALU);
897  } // Inst_SOP2__S_LSHL_B32
898 
900  {
901  } // ~Inst_SOP2__S_LSHL_B32
902 
903  // D.u = S0.u << S1.u[4:0];
904  // SCC = 1 if result is non-zero.
905  void
907  {
908  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
909  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
910  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
911  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
912 
913  src0.read();
914  src1.read();
915 
916  sdst = (src0.rawData() << bits(src1.rawData(), 4, 0));
917  scc = sdst.rawData() ? 1 : 0;
918 
919  sdst.write();
920  scc.write();
921  }
922 
924  : Inst_SOP2(iFmt, "s_lshl_b64")
925  {
926  setFlag(ALU);
927  } // Inst_SOP2__S_LSHL_B64
928 
930  {
931  } // ~Inst_SOP2__S_LSHL_B64
932 
933  // D.u64 = S0.u64 << S1.u[5:0];
934  // SCC = 1 if result is non-zero.
935  void
937  {
938  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
939  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
940  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
941  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
942 
943  src0.read();
944  src1.read();
945 
946  sdst = (src0.rawData() << bits(src1.rawData(), 5, 0));
947  scc = sdst.rawData() ? 1 : 0;
948 
949  sdst.write();
950  scc.write();
951  }
952 
954  : Inst_SOP2(iFmt, "s_lshr_b32")
955  {
956  setFlag(ALU);
957  } // Inst_SOP2__S_LSHR_B32
958 
960  {
961  } // ~Inst_SOP2__S_LSHR_B32
962 
963  // D.u = S0.u >> S1.u[4:0];
964  // SCC = 1 if result is non-zero.
965  // The vacated bits are set to zero.
966  void
968  {
969  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
970  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
971  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
972  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
973 
974  src0.read();
975  src1.read();
976 
977  sdst = (src0.rawData() >> bits(src1.rawData(), 4, 0));
978  scc = sdst.rawData() ? 1 : 0;
979 
980  sdst.write();
981  scc.write();
982  }
983 
985  : Inst_SOP2(iFmt, "s_lshr_b64")
986  {
987  setFlag(ALU);
988  } // Inst_SOP2__S_LSHR_B64
989 
991  {
992  } // ~Inst_SOP2__S_LSHR_B64
993 
994  // D.u64 = S0.u64 >> S1.u[5:0];
995  // SCC = 1 if result is non-zero.
996  // The vacated bits are set to zero.
997  void
999  {
1000  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
1001  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1002  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
1003  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1004 
1005  src0.read();
1006  src1.read();
1007 
1008  sdst = (src0.rawData() >> bits(src1.rawData(), 5, 0));
1009  scc = sdst.rawData() ? 1 : 0;
1010 
1011  sdst.write();
1012  scc.write();
1013  }
1014 
1016  : Inst_SOP2(iFmt, "s_ashr_i32")
1017  {
1018  setFlag(ALU);
1019  } // Inst_SOP2__S_ASHR_I32
1020 
1022  {
1023  } // ~Inst_SOP2__S_ASHR_I32
1024 
1025  // D.i = signext(S0.i) >> S1.u[4:0];
1026  // SCC = 1 if result is non-zero.
1027  // The vacated bits are set to the sign bit of the input value.
1028  void
1030  {
1031  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
1032  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1033  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1034  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1035 
1036  src0.read();
1037  src1.read();
1038 
1039  sdst = (src0.rawData() >> bits(src1.rawData(), 4, 0));
1040  scc = sdst.rawData() ? 1 : 0;
1041 
1042  sdst.write();
1043  scc.write();
1044  }
1045 
1047  : Inst_SOP2(iFmt, "s_ashr_i64")
1048  {
1049  setFlag(ALU);
1050  } // Inst_SOP2__S_ASHR_I64
1051 
1053  {
1054  } // ~Inst_SOP2__S_ASHR_I64
1055 
1056  // D.i64 = signext(S0.i64) >> S1.u[5:0];
1057  // SCC = 1 if result is non-zero.
1058  // The vacated bits are set to the sign bit of the input value.
1059  void
1061  {
1062  ConstScalarOperandI64 src0(gpuDynInst, instData.SSRC0);
1063  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1064  ScalarOperandI64 sdst(gpuDynInst, instData.SDST);
1065  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1066 
1067  src0.read();
1068  src1.read();
1069 
1070  sdst = (src0.rawData() >> bits(src1.rawData(), 5, 0));
1071  scc = sdst.rawData() ? 1 : 0;
1072 
1073  sdst.write();
1074  scc.write();
1075  }
1076 
1078  : Inst_SOP2(iFmt, "s_bfm_b32")
1079  {
1080  setFlag(ALU);
1081  } // Inst_SOP2__S_BFM_B32
1082 
1084  {
1085  } // ~Inst_SOP2__S_BFM_B32
1086 
1087  // D.u = ((1 << S0.u[4:0]) - 1) << S1.u[4:0] (bitfield mask).
1088  void
1090  {
1091  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
1092  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1093  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
1094 
1095  src0.read();
1096  src1.read();
1097 
1098  sdst = ((1 << bits(src0.rawData(), 4, 0)) - 1)
1099  << bits(src1.rawData(), 4, 0);
1100 
1101  sdst.write();
1102  }
1103 
1105  : Inst_SOP2(iFmt, "s_bfm_b64")
1106  {
1107  setFlag(ALU);
1108  } // Inst_SOP2__S_BFM_B64
1109 
1111  {
1112  } // ~Inst_SOP2__S_BFM_B64
1113 
1114  // D.u64 = ((1ULL << S0.u[5:0]) - 1) << S1.u[5:0] (bitfield mask).
1115  void
1117  {
1118  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
1119  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1120  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
1121 
1122  src0.read();
1123  src1.read();
1124 
1125  sdst = ((1ULL << bits(src0.rawData(), 5, 0)) - 1)
1126  << bits(src1.rawData(), 5, 0);
1127 
1128  sdst.write();
1129  }
1130 
1132  : Inst_SOP2(iFmt, "s_mul_i32")
1133  {
1134  setFlag(ALU);
1135  } // Inst_SOP2__S_MUL_I32
1136 
1138  {
1139  } // ~Inst_SOP2__S_MUL_I32
1140 
1141  // D.i = S0.i * S1.i.
1142  void
1144  {
1145  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
1146  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
1147  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1148 
1149  src0.read();
1150  src1.read();
1151 
1152  sdst = src0.rawData() * src1.rawData();
1153 
1154  sdst.write();
1155  }
1156 
1158  : Inst_SOP2(iFmt, "s_bfe_u32")
1159  {
1160  setFlag(ALU);
1161  } // Inst_SOP2__S_BFE_U32
1162 
1164  {
1165  } // ~Inst_SOP2__S_BFE_U32
1166 
1167  // Bit field extract. S0 is Data, S1[4:0] is field offset, S1[22:16] is
1168  // field width.
1169  // D.u = (S0.u >> S1.u[4:0]) & ((1 << S1.u[22:16]) - 1);
1170  // SCC = 1 if result is non-zero.
1171  void
1173  {
1174  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
1175  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1176  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
1177  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1178 
1179  src0.read();
1180  src1.read();
1181 
1182  sdst = (src0.rawData() >> bits(src1.rawData(), 4, 0))
1183  & ((1 << bits(src1.rawData(), 22, 16)) - 1);
1184  scc = sdst.rawData() ? 1 : 0;
1185 
1186  sdst.write();
1187  scc.write();
1188  }
1189 
1191  : Inst_SOP2(iFmt, "s_bfe_i32")
1192  {
1193  setFlag(ALU);
1194  } // Inst_SOP2__S_BFE_I32
1195 
1197  {
1198  } // ~Inst_SOP2__S_BFE_I32
1199 
1200  // Bit field extract. S0 is Data, S1[4:0] is field offset, S1[22:16] is
1201  // field width.
1202  // D.i = (S0.i >> S1.u[4:0]) & ((1 << S1.u[22:16]) - 1);
1203  // Sign-extend the result;
1204  // SCC = 1 if result is non-zero.
1205  void
1207  {
1208  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
1209  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1210  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1211  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1212 
1213  src0.read();
1214  src1.read();
1215 
1216  sdst = (src0.rawData() >> bits(src1.rawData(), 4, 0))
1217  & ((1 << bits(src1.rawData(), 22, 16)) - 1);
1218  scc = sdst.rawData() ? 1 : 0;
1219 
1220  sdst.write();
1221  scc.write();
1222  }
1223 
1225  : Inst_SOP2(iFmt, "s_bfe_u64")
1226  {
1227  setFlag(ALU);
1228  } // Inst_SOP2__S_BFE_U64
1229 
1231  {
1232  } // ~Inst_SOP2__S_BFE_U64
1233 
1234  // Bit field extract. S0 is Data, S1[5:0] is field offset, S1[22:16] is
1235  // field width.
1236  // D.u64 = (S0.u64 >> S1.u[5:0]) & ((1 << S1.u[22:16]) - 1);
1237  // SCC = 1 if result is non-zero.
1238  void
1240  {
1241  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
1242  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1243  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
1244  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1245 
1246  src0.read();
1247  src1.read();
1248 
1249  sdst = (src0.rawData() >> bits(src1.rawData(), 5, 0))
1250  & ((1 << bits(src1.rawData(), 22, 16)) - 1);
1251  scc = sdst.rawData() ? 1 : 0;
1252 
1253  sdst.write();
1254  scc.write();
1255  }
1256 
1258  : Inst_SOP2(iFmt, "s_bfe_i64")
1259  {
1260  setFlag(ALU);
1261  } // Inst_SOP2__S_BFE_I64
1262 
1264  {
1265  } // ~Inst_SOP2__S_BFE_I64
1266 
1267  // Bit field extract. S0 is Data, S1[5:0] is field offset, S1[22:16] is
1268  // field width.
1269  // D.i64 = (S0.i64 >> S1.u[5:0]) & ((1 << S1.u[22:16]) - 1);
1270  // Sign-extend result;
1271  // SCC = 1 if result is non-zero.
1272  void
1274  {
1275  ConstScalarOperandI64 src0(gpuDynInst, instData.SSRC0);
1276  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
1277  ScalarOperandI64 sdst(gpuDynInst, instData.SDST);
1278  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1279 
1280  src0.read();
1281  src1.read();
1282 
1283  sdst = (src0.rawData() >> bits(src1.rawData(), 5, 0))
1284  & ((1 << bits(src1.rawData(), 22, 16)) - 1);
1285  scc = sdst.rawData() ? 1 : 0;
1286 
1287  sdst.write();
1288  scc.write();
1289  }
1290 
1292  : Inst_SOP2(iFmt, "s_cbranch_g_fork")
1293  {
1294  setFlag(Branch);
1295  } // Inst_SOP2__S_CBRANCH_G_FORK
1296 
1298  {
1299  } // ~Inst_SOP2__S_CBRANCH_G_FORK
1300 
1301  // Conditional branch using branch-stack.
1302  // S0 = compare mask(vcc or any sgpr) and
1303  // S1 = 64-bit byte address of target instruction.
1304  void
1306  {
1308  }
1309 
1311  : Inst_SOP2(iFmt, "s_absdiff_i32")
1312  {
1313  setFlag(ALU);
1314  } // Inst_SOP2__S_ABSDIFF_I32
1315 
1317  {
1318  } // ~Inst_SOP2__S_ABSDIFF_I32
1319 
1320  // D.i = S0.i - S1.i;
1321  // if (D.i < 0) then D.i = -D.i;
1322  // SCC = 1 if result is non-zero.
1323  // Compute the absolute value of difference between two values.
1324  void
1326  {
1327  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
1328  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
1329  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1330  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1331 
1332  sdst = std::abs(src0.rawData() - src1.rawData());
1333  scc = sdst.rawData() ? 1 : 0;
1334 
1335  sdst.write();
1336  scc.write();
1337  }
1338 
1340  InFmt_SOP2 *iFmt)
1341  : Inst_SOP2(iFmt, "s_rfe_restore_b64")
1342  {
1343  } // Inst_SOP2__S_RFE_RESTORE_B64
1344 
1346  {
1347  } // ~Inst_SOP2__S_RFE_RESTORE_B64
1348 
1349  // Return from exception handler and continue.
1350  void
1352  {
1354  }
1355 
1357  : Inst_SOPK(iFmt, "s_movk_i32")
1358  {
1359  setFlag(ALU);
1360  } // Inst_SOPK__S_MOVK_I32
1361 
1363  {
1364  } // ~Inst_SOPK__S_MOVK_I32
1365 
1366  // D.i = signext(SIMM16) (sign extension).
1367  void
1369  {
1370  ScalarRegI32 simm16 = (ScalarRegI32)sext<16>(instData.SIMM16);
1371  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1372 
1373  sdst = simm16;
1374 
1375  sdst.write();
1376  }
1377 
1379  : Inst_SOPK(iFmt, "s_cmovk_i32")
1380  {
1381  setFlag(ALU);
1382  } // Inst_SOPK__S_CMOVK_I32
1383 
1385  {
1386  } // ~Inst_SOPK__S_CMOVK_I32
1387 
1388  // if (SCC) then D.i = signext(SIMM16);
1389  // else NOP.
1390  // Conditional move with sign extension.
1391  void
1393  {
1394  ScalarRegI32 simm16 = (ScalarRegI32)sext<16>(instData.SIMM16);
1395  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1396  ConstScalarOperandU32 scc(gpuDynInst, REG_SCC);
1397 
1398  scc.read();
1399 
1400  if (scc.rawData()) {
1401  sdst = simm16;
1402  sdst.write();
1403  }
1404  }
1405 
1407  : Inst_SOPK(iFmt, "s_cmpk_eq_i32")
1408  {
1409  setFlag(ALU);
1410  } // Inst_SOPK__S_CMPK_EQ_I32
1411 
1413  {
1414  } // ~Inst_SOPK__S_CMPK_EQ_I32
1415 
1416  // SCC = (S0.i == signext(SIMM16)).
1417  void
1419  {
1420  ScalarRegI32 simm16 = (ScalarRegI32)sext<16>(instData.SIMM16);
1421  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1422  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1423 
1424  src.read();
1425 
1426  scc = (src.rawData() == simm16) ? 1 : 0;
1427 
1428  scc.write();
1429  }
1430 
1432  : Inst_SOPK(iFmt, "s_cmpk_lg_i32")
1433  {
1434  setFlag(ALU);
1435  } // Inst_SOPK__S_CMPK_LG_I32
1436 
1438  {
1439  } // ~Inst_SOPK__S_CMPK_LG_I32
1440 
1441  // SCC = (S0.i != signext(SIMM16)).
1442  void
1444  {
1445  ScalarRegI32 simm16 = (ScalarRegI32)sext<16>(instData.SIMM16);
1446  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1447  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1448 
1449  src.read();
1450 
1451  scc = (src.rawData() != simm16) ? 1 : 0;
1452 
1453  scc.write();
1454  }
1455 
1457  : Inst_SOPK(iFmt, "s_cmpk_gt_i32")
1458  {
1459  setFlag(ALU);
1460  } // Inst_SOPK__S_CMPK_GT_I32
1461 
1463  {
1464  } // ~Inst_SOPK__S_CMPK_GT_I32
1465 
1466  // SCC = (S0.i > signext(SIMM16)).
1467  void
1469  {
1470  ScalarRegI32 simm16 = (ScalarRegI32)sext<16>(instData.SIMM16);
1471  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1472  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1473 
1474  src.read();
1475 
1476  scc = (src.rawData() > simm16) ? 1 : 0;
1477 
1478  scc.write();
1479  }
1480 
1482  : Inst_SOPK(iFmt, "s_cmpk_ge_i32")
1483  {
1484  setFlag(ALU);
1485  } // Inst_SOPK__S_CMPK_GE_I32
1486 
1488  {
1489  } // ~Inst_SOPK__S_CMPK_GE_I32
1490 
1491  // SCC = (S0.i >= signext(SIMM16)).
1492  void
1494  {
1495  ScalarRegI32 simm16 = (ScalarRegI32)sext<16>(instData.SIMM16);
1496  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1497  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1498 
1499  src.read();
1500 
1501  scc = (src.rawData() >= simm16) ? 1 : 0;
1502 
1503  scc.write();
1504  }
1505 
1507  : Inst_SOPK(iFmt, "s_cmpk_lt_i32")
1508  {
1509  setFlag(ALU);
1510  } // Inst_SOPK__S_CMPK_LT_I32
1511 
1513  {
1514  } // ~Inst_SOPK__S_CMPK_LT_I32
1515 
1516  // SCC = (S0.i < signext(SIMM16)).
1517  void
1519  {
1520  ScalarRegI32 simm16 = (ScalarRegI32)sext<16>(instData.SIMM16);
1521  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1522  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1523 
1524  src.read();
1525 
1526  scc = (src.rawData() < simm16) ? 1 : 0;
1527 
1528  scc.write();
1529  }
1530 
1532  : Inst_SOPK(iFmt, "s_cmpk_le_i32")
1533  {
1534  setFlag(ALU);
1535  } // Inst_SOPK__S_CMPK_LE_I32
1536 
1538  {
1539  } // ~Inst_SOPK__S_CMPK_LE_I32
1540 
1541  // SCC = (S0.i <= signext(SIMM16)).
1542  void
1544  {
1545  ScalarRegI32 simm16 = (ScalarRegI32)sext<16>(instData.SIMM16);
1546  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1547  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1548 
1549  src.read();
1550 
1551  scc = (src.rawData() <= simm16) ? 1 : 0;
1552 
1553  scc.write();
1554  }
1555 
1557  : Inst_SOPK(iFmt, "s_cmpk_eq_u32")
1558  {
1559  setFlag(ALU);
1560  } // Inst_SOPK__S_CMPK_EQ_U32
1561 
1563  {
1564  } // ~Inst_SOPK__S_CMPK_EQ_U32
1565 
1566  // SCC = (S0.u == SIMM16).
1567  void
1569  {
1571  ConstScalarOperandU32 src(gpuDynInst, instData.SDST);
1572  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1573 
1574  src.read();
1575 
1576  scc = (src.rawData() == simm16) ? 1 : 0;
1577 
1578  scc.write();
1579  }
1580 
1582  : Inst_SOPK(iFmt, "s_cmpk_lg_u32")
1583  {
1584  setFlag(ALU);
1585  } // Inst_SOPK__S_CMPK_LG_U32
1586 
1588  {
1589  } // ~Inst_SOPK__S_CMPK_LG_U32
1590 
1591  // SCC = (S0.u != SIMM16).
1592  void
1594  {
1596  ConstScalarOperandU32 src(gpuDynInst, instData.SDST);
1597  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1598 
1599  src.read();
1600 
1601  scc = (src.rawData() != simm16) ? 1 : 0;
1602 
1603  scc.write();
1604  }
1605 
1607  : Inst_SOPK(iFmt, "s_cmpk_gt_u32")
1608  {
1609  setFlag(ALU);
1610  } // Inst_SOPK__S_CMPK_GT_U32
1611 
1613  {
1614  } // ~Inst_SOPK__S_CMPK_GT_U32
1615 
1616  // SCC = (S0.u > SIMM16).
1617  void
1619  {
1621  ConstScalarOperandU32 src(gpuDynInst, instData.SDST);
1622  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1623 
1624  src.read();
1625 
1626  scc = (src.rawData() > simm16) ? 1 : 0;
1627 
1628  scc.write();
1629  }
1630 
1632  : Inst_SOPK(iFmt, "s_cmpk_ge_u32")
1633  {
1634  setFlag(ALU);
1635  } // Inst_SOPK__S_CMPK_GE_U32
1636 
1638  {
1639  } // ~Inst_SOPK__S_CMPK_GE_U32
1640 
1641  // SCC = (S0.u >= SIMM16).
1642  void
1644  {
1646  ConstScalarOperandU32 src(gpuDynInst, instData.SDST);
1647  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1648 
1649  src.read();
1650 
1651  scc = (src.rawData() >= simm16) ? 1 : 0;
1652 
1653  scc.write();
1654  }
1655 
1657  : Inst_SOPK(iFmt, "s_cmpk_lt_u32")
1658  {
1659  setFlag(ALU);
1660  } // Inst_SOPK__S_CMPK_LT_U32
1661 
1663  {
1664  } // ~Inst_SOPK__S_CMPK_LT_U32
1665 
1666  // SCC = (S0.u < SIMM16).
1667  void
1669  {
1671  ConstScalarOperandU32 src(gpuDynInst, instData.SDST);
1672  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1673 
1674  src.read();
1675 
1676  scc = (src.rawData() < simm16) ? 1 : 0;
1677 
1678  scc.write();
1679  }
1680 
1682  : Inst_SOPK(iFmt, "s_cmpk_le_u32")
1683  {
1684  setFlag(ALU);
1685  } // Inst_SOPK__S_CMPK_LE_U32
1686 
1688  {
1689  } // ~Inst_SOPK__S_CMPK_LE_U32
1690 
1691  // SCC = (S0.u <= SIMM16).
1692  void
1694  {
1696  ConstScalarOperandU32 src(gpuDynInst, instData.SDST);
1697  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1698 
1699  src.read();
1700 
1701  scc = (src.rawData() <= simm16) ? 1 : 0;
1702 
1703  scc.write();
1704  }
1705 
1707  : Inst_SOPK(iFmt, "s_addk_i32")
1708  {
1709  setFlag(ALU);
1710  } // Inst_SOPK__S_ADDK_I32
1711 
1713  {
1714  } // ~Inst_SOPK__S_ADDK_I32
1715 
1716  // D.i = D.i + signext(SIMM16);
1717  // SCC = overflow.
1718  void
1720  {
1721  ScalarRegI16 simm16 = instData.SIMM16;
1722  ConstScalarOperandI32 src(gpuDynInst, instData.SDST);
1723  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1724  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1725 
1726  src.read();
1727 
1728  sdst = src.rawData() + (ScalarRegI32)sext<16>(simm16);
1729  scc = (bits(src.rawData(), 31) == bits(simm16, 15)
1730  && bits(src.rawData(), 31) != bits(sdst.rawData(), 31)) ? 1 : 0;
1731 
1732  sdst.write();
1733  scc.write();
1734  }
1735 
1737  : Inst_SOPK(iFmt, "s_mulk_i32")
1738  {
1739  setFlag(ALU);
1740  } // Inst_SOPK__S_MULK_I32
1741 
1743  {
1744  } // ~Inst_SOPK__S_MULK_I32
1745 
1746  // D.i = D.i * signext(SIMM16).
1747  void
1749  {
1750  ScalarRegI16 simm16 = instData.SIMM16;
1751  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
1752 
1753  sdst.read();
1754 
1755  sdst = sdst.rawData() * (ScalarRegI32)sext<16>(simm16);
1756 
1757  sdst.write();
1758  }
1759 
1761  : Inst_SOPK(iFmt, "s_cbranch_i_fork")
1762  {
1763  setFlag(Branch);
1764  } // Inst_SOPK__S_CBRANCH_I_FORK
1765 
1767  {
1768  } // ~Inst_SOPK__S_CBRANCH_I_FORK
1769 
1770  // Conditional branch using branch-stack.
1771  // S0 = compare mask(vcc or any sgpr), and
1772  // SIMM16 = signed DWORD branch offset relative to next instruction.
1773  void
1775  {
1777  }
1778 
1780  : Inst_SOPK(iFmt, "s_getreg_b32")
1781  {
1782  } // Inst_SOPK__S_GETREG_B32
1783 
1785  {
1786  } // ~Inst_SOPK__S_GETREG_B32
1787 
1788  // D.u = hardware-reg. Read some or all of a hardware register into the
1789  // LSBs of D.
1790  // SIMM16 = {size[4:0], offset[4:0], hwRegId[5:0]}; offset is 0..31, size
1791  // is 1..32.
1792  void
1794  {
1796  }
1797 
1799  : Inst_SOPK(iFmt, "s_setreg_b32")
1800  {
1801  setFlag(ALU);
1802  } // Inst_SOPK__S_SETREG_B32
1803 
1805  {
1806  } // ~Inst_SOPK__S_SETREG_B32
1807 
1808  // hardware-reg = S0.u. Write some or all of the LSBs of D into a hardware
1809  // register.
1810  // SIMM16 = {size[4:0], offset[4:0], hwRegId[5:0]}; offset is 0..31, size
1811  // is 1..32.
1812  void
1814  {
1815  ScalarRegI16 simm16 = instData.SIMM16;
1816  ScalarRegU32 hwregId = simm16 & 0x3f;
1817  ScalarRegU32 offset = (simm16 >> 6) & 31;
1818  ScalarRegU32 size = ((simm16 >> 11) & 31) + 1;
1819 
1820  ScalarOperandU32 hwreg(gpuDynInst, hwregId);
1821  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
1822  hwreg.read();
1823  sdst.read();
1824 
1825  // Store value from SDST to part of the hardware register.
1826  ScalarRegU32 mask = (((1U << size) - 1U) << offset);
1827  hwreg = ((hwreg.rawData() & ~mask)
1828  | ((sdst.rawData() << offset) & mask));
1829  hwreg.write();
1830 
1831  // set MODE register to control the behavior of single precision
1832  // floating-point numbers: denormal mode or round mode
1833  if (hwregId==1 && size==2
1834  && (offset==4 || offset==0)) {
1835  warn_once("Be cautious that s_setreg_b32 has no real effect "
1836  "on FP modes: %s\n", gpuDynInst->disassemble());
1837  return;
1838  }
1839 
1840  // panic if not changing MODE of floating-point numbers
1842  }
1843 
1845  InFmt_SOPK *iFmt)
1846  : Inst_SOPK(iFmt, "s_setreg_imm32_b32")
1847  {
1848  setFlag(ALU);
1849  } // Inst_SOPK__S_SETREG_IMM32_B32
1850 
1852  {
1853  } // ~Inst_SOPK__S_SETREG_IMM32_B32
1854 
1855  // Write some or all of the LSBs of IMM32 into a hardware register; this
1856  // instruction requires a 32-bit literal constant.
1857  // SIMM16 = {size[4:0], offset[4:0], hwRegId[5:0]}; offset is 0..31, size
1858  // is 1..32.
1859  void
1861  {
1862  ScalarRegI16 simm16 = instData.SIMM16;
1863  ScalarRegU32 hwregId = simm16 & 0x3f;
1864  ScalarRegU32 offset = (simm16 >> 6) & 31;
1865  ScalarRegU32 size = ((simm16 >> 11) & 31) + 1;
1866 
1867  ScalarOperandU32 hwreg(gpuDynInst, hwregId);
1868  ScalarRegU32 simm32 = extData.imm_u32;
1869  hwreg.read();
1870 
1871  ScalarRegU32 mask = (((1U << size) - 1U) << offset);
1872  hwreg = ((hwreg.rawData() & ~mask)
1873  | ((simm32 << offset) & mask));
1874  hwreg.write();
1875 
1876  if (hwregId==1 && size==2
1877  && (offset==4 || offset==0)) {
1878  warn_once("Be cautious that s_setreg_imm32_b32 has no real effect "
1879  "on FP modes: %s\n", gpuDynInst->disassemble());
1880  return;
1881  }
1882 
1883  // panic if not changing MODE of floating-point numbers
1885  }
1886 
1888  : Inst_SOP1(iFmt, "s_mov_b32")
1889  {
1890  setFlag(ALU);
1891  } // Inst_SOP1__S_MOV_B32
1892 
1894  {
1895  } // ~Inst_SOP1__S_MOV_B32
1896 
1897  // D.u = S0.u.
1898  void
1900  {
1901  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
1902  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
1903 
1904  src.read();
1905 
1906  sdst = src.rawData();
1907 
1908  sdst.write();
1909  }
1910 
1912  : Inst_SOP1(iFmt, "s_mov_b64")
1913  {
1914  setFlag(ALU);
1915  } // Inst_SOP1__S_MOV_B64
1916 
1918  {
1919  } // ~Inst_SOP1__S_MOV_B64
1920 
1921  // D.u64 = S0.u64.
1922  void
1924  {
1925  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
1926  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
1927 
1928  src.read();
1929 
1930  sdst = src.rawData();
1931 
1932  sdst.write();
1933  }
1934 
1936  : Inst_SOP1(iFmt, "s_cmov_b32")
1937  {
1938  setFlag(ALU);
1939  } // Inst_SOP1__S_CMOV_B32
1940 
1942  {
1943  } // ~Inst_SOP1__S_CMOV_B32
1944 
1945  // if (SCC) then D.u = S0.u;
1946  // else NOP.
1947  // Conditional move.
1948  void
1950  {
1951  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
1952  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
1953  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1954 
1955  src.read();
1956  scc.read();
1957 
1958  if (scc.rawData()) {
1959  sdst = src.rawData();
1960  sdst.write();
1961  }
1962  }
1963 
1965  : Inst_SOP1(iFmt, "s_cmov_b64")
1966  {
1967  setFlag(ALU);
1968  } // Inst_SOP1__S_CMOV_B64
1969 
1971  {
1972  } // ~Inst_SOP1__S_CMOV_B64
1973 
1974  // if (SCC) then D.u64 = S0.u64;
1975  // else NOP.
1976  // Conditional move.
1977  void
1979  {
1980  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
1981  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
1982  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
1983 
1984  src.read();
1985  scc.read();
1986 
1987  if (scc.rawData()) {
1988  sdst = src.rawData();
1989  sdst.write();
1990  }
1991  }
1992 
1994  : Inst_SOP1(iFmt, "s_not_b32")
1995  {
1996  setFlag(ALU);
1997  } // Inst_SOP1__S_NOT_B32
1998 
2000  {
2001  } // ~Inst_SOP1__S_NOT_B32
2002 
2003  // D.u = ~S0.u;
2004  // SCC = 1 if result is non-zero.
2005  // Bitwise negation.
2006  void
2008  {
2009  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2010  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
2011  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2012 
2013  src.read();
2014 
2015  sdst = ~src.rawData();
2016 
2017  scc = sdst.rawData() ? 1 : 0;
2018 
2019  sdst.write();
2020  scc.write();
2021  }
2022 
2024  : Inst_SOP1(iFmt, "s_not_b64")
2025  {
2026  setFlag(ALU);
2027  } // Inst_SOP1__S_NOT_B64
2028 
2030  {
2031  } // ~Inst_SOP1__S_NOT_B64
2032 
2033  // D.u64 = ~S0.u64;
2034  // SCC = 1 if result is non-zero.
2035  // Bitwise negation.
2036  void
2038  {
2039  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2040  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2041  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2042 
2043  src.read();
2044 
2045  sdst = ~src.rawData();
2046  scc = sdst.rawData() ? 1 : 0;
2047 
2048  sdst.write();
2049  scc.write();
2050  }
2051 
2053  : Inst_SOP1(iFmt, "s_wqm_b32")
2054  {
2055  setFlag(ALU);
2056  } // Inst_SOP1__S_WQM_B32
2057 
2059  {
2060  } // ~Inst_SOP1__S_WQM_B32
2061 
2062  // Computes whole quad mode for an active/valid mask.
2063  // SCC = 1 if result is non-zero.
2064  void
2066  {
2067  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2068  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
2069  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2070 
2071  src.read();
2072 
2073  sdst = wholeQuadMode(src.rawData());
2074  scc = sdst.rawData() ? 1 : 0;
2075 
2076  sdst.write();
2077  scc.write();
2078  }
2079 
2081  : Inst_SOP1(iFmt, "s_wqm_b64")
2082  {
2083  setFlag(ALU);
2084  } // Inst_SOP1__S_WQM_B64
2085 
2087  {
2088  } // ~Inst_SOP1__S_WQM_B64
2089 
2090  // Computes whole quad mode for an active/valid mask.
2091  // SCC = 1 if result is non-zero.
2092  void
2094  {
2095  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2096  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2097  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2098 
2099  src.read();
2100 
2101  sdst = wholeQuadMode(src.rawData());
2102  scc = sdst.rawData() ? 1 : 0;
2103 
2104  sdst.write();
2105  scc.write();
2106  }
2107 
2109  : Inst_SOP1(iFmt, "s_brev_b32")
2110  {
2111  setFlag(ALU);
2112  } // Inst_SOP1__S_BREV_B32
2113 
2115  {
2116  } // ~Inst_SOP1__S_BREV_B32
2117 
2118  // D.u[31:0] = S0.u[0:31] (reverse bits).
2119  void
2121  {
2122  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2123  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
2124 
2125  src.read();
2126 
2127  sdst = reverseBits(src.rawData());
2128 
2129  sdst.write();
2130  }
2131 
2133  : Inst_SOP1(iFmt, "s_brev_b64")
2134  {
2135  setFlag(ALU);
2136  } // Inst_SOP1__S_BREV_B64
2137 
2139  {
2140  } // ~Inst_SOP1__S_BREV_B64
2141 
2142  // D.u64[63:0] = S0.u64[0:63] (reverse bits).
2143  void
2145  {
2146  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2147  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2148 
2149  src.read();
2150 
2151  sdst = reverseBits(src.rawData());
2152 
2153  sdst.write();
2154  }
2155 
2157  : Inst_SOP1(iFmt, "s_bcnt0_i32_b32")
2158  {
2159  setFlag(ALU);
2160  } // Inst_SOP1__S_BCNT0_I32_B32
2161 
2163  {
2164  } // ~Inst_SOP1__S_BCNT0_I32_B32
2165 
2166  // D.i = CountZeroBits(S0.u);
2167  // SCC = 1 if result is non-zero.
2168  void
2170  {
2171  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2172  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2173  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2174 
2175  src.read();
2176 
2177  sdst = countZeroBits(src.rawData());
2178  scc = sdst.rawData() ? 1 : 0;
2179 
2180  sdst.write();
2181  scc.write();
2182  }
2183 
2185  : Inst_SOP1(iFmt, "s_bcnt0_i32_b64")
2186  {
2187  setFlag(ALU);
2188  } // Inst_SOP1__S_BCNT0_I32_B64
2189 
2191  {
2192  } // ~Inst_SOP1__S_BCNT0_I32_B64
2193 
2194  // D.i = CountZeroBits(S0.u64);
2195  // SCC = 1 if result is non-zero.
2196  void
2198  {
2199  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2200  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2201  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2202 
2203  src.read();
2204 
2205  sdst = countZeroBits(src.rawData());
2206  scc = sdst.rawData() ? 1 : 0;
2207 
2208  sdst.write();
2209  scc.write();
2210  }
2211 
2213  : Inst_SOP1(iFmt, "s_bcnt1_i32_b32")
2214  {
2215  setFlag(ALU);
2216  } // Inst_SOP1__S_BCNT1_I32_B32
2217 
2219  {
2220  } // ~Inst_SOP1__S_BCNT1_I32_B32
2221 
2222  // D.i = CountOneBits(S0.u);
2223  // SCC = 1 if result is non-zero.
2224  void
2226  {
2227  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2228  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2229  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2230 
2231  src.read();
2232 
2233  sdst = popCount(src.rawData());
2234  scc = sdst.rawData() ? 1 : 0;
2235 
2236  sdst.write();
2237  scc.write();
2238  }
2239 
2241  : Inst_SOP1(iFmt, "s_bcnt1_i32_b64")
2242  {
2243  setFlag(ALU);
2244  } // Inst_SOP1__S_BCNT1_I32_B64
2245 
2247  {
2248  } // ~Inst_SOP1__S_BCNT1_I32_B64
2249 
2250  // D.i = CountOneBits(S0.u64);
2251  // SCC = 1 if result is non-zero.
2252  void
2254  {
2255  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2256  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2257  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2258 
2259  src.read();
2260 
2261  sdst = popCount(src.rawData());
2262  scc = sdst.rawData() ? 1 : 0;
2263 
2264  sdst.write();
2265  scc.write();
2266  }
2267 
2269  : Inst_SOP1(iFmt, "s_ff0_i32_b32")
2270  {
2271  setFlag(ALU);
2272  } // Inst_SOP1__S_FF0_I32_B32
2273 
2275  {
2276  } // ~Inst_SOP1__S_FF0_I32_B32
2277 
2278  // D.i = FindFirstZero(S0.u);
2279  // If no zeros are found, return -1.
2280  // Returns the bit position of the first zero from the LSB.
2281  void
2283  {
2284  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2285  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2286 
2287  src.read();
2288 
2289  sdst = findFirstZero(src.rawData());
2290 
2291  sdst.write();
2292  }
2293 
2295  : Inst_SOP1(iFmt, "s_ff0_i32_b64")
2296  {
2297  setFlag(ALU);
2298  } // Inst_SOP1__S_FF0_I32_B64
2299 
2301  {
2302  } // ~Inst_SOP1__S_FF0_I32_B64
2303 
2304  // D.i = FindFirstZero(S0.u64);
2305  // If no zeros are found, return -1.
2306  // Returns the bit position of the first zero from the LSB.
2307  void
2309  {
2310  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2311  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2312 
2313  src.read();
2314 
2315  sdst = findFirstZero(src.rawData());
2316 
2317  sdst.write();
2318  }
2319 
2321  : Inst_SOP1(iFmt, "s_ff1_i32_b32")
2322  {
2323  setFlag(ALU);
2324  } // Inst_SOP1__S_FF1_I32_B32
2325 
2327  {
2328  } // ~Inst_SOP1__S_FF1_I32_B32
2329 
2330  // D.i = FindFirstOne(S0.u);
2331  // If no ones are found, return -1.
2332  // Returns the bit position of the first one from the LSB.
2333  void
2335  {
2336  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2337  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2338 
2339  src.read();
2340 
2341  sdst = findFirstOne(src.rawData());
2342 
2343  sdst.write();
2344  }
2345 
2347  : Inst_SOP1(iFmt, "s_ff1_i32_b64")
2348  {
2349  setFlag(ALU);
2350  } // Inst_SOP1__S_FF1_I32_B64
2351 
2353  {
2354  } // ~Inst_SOP1__S_FF1_I32_B64
2355 
2356  // D.i = FindFirstOne(S0.u64);
2357  // If no ones are found, return -1.
2358  // Returns the bit position of the first one from the LSB.
2359  void
2361  {
2362  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2363  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2364 
2365  src.read();
2366 
2367  sdst = findFirstOne(src.rawData());
2368 
2369  sdst.write();
2370  }
2371 
2373  : Inst_SOP1(iFmt, "s_flbit_i32_b32")
2374  {
2375  setFlag(ALU);
2376  } // Inst_SOP1__S_FLBIT_I32_B32
2377 
2379  {
2380  } // ~Inst_SOP1__S_FLBIT_I32_B32
2381 
2382  // D.i = FindFirstOne(S0.u);
2383  // If no ones are found, return -1.
2384  // Counts how many zeros before the first one starting from the MSB.
2385  void
2387  {
2388  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2389  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2390 
2391  src.read();
2392 
2393  sdst = countZeroBitsMsb(src.rawData());
2394 
2395  sdst.write();
2396  }
2397 
2399  : Inst_SOP1(iFmt, "s_flbit_i32_b64")
2400  {
2401  setFlag(ALU);
2402  } // Inst_SOP1__S_FLBIT_I32_B64
2403 
2405  {
2406  } // ~Inst_SOP1__S_FLBIT_I32_B64
2407 
2408  // D.i = FindFirstOne(S0.u64);
2409  // If no ones are found, return -1.
2410  // Counts how many zeros before the first one starting from the MSB.
2411  void
2413  {
2414  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2415  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2416 
2417  src.read();
2418 
2419  sdst = countZeroBitsMsb(src.rawData());
2420 
2421  sdst.write();
2422  }
2423 
2425  : Inst_SOP1(iFmt, "s_flbit_i32")
2426  {
2427  setFlag(ALU);
2428  } // Inst_SOP1__S_FLBIT_I32
2429 
2431  {
2432  } // ~Inst_SOP1__S_FLBIT_I32
2433 
2434  // D.i = FirstOppositeSignBit(S0.i);
2435  // If S0.i == 0 or S0.i == -1 (all bits are the same), return -1.
2436  // Counts how many bits in a row (from MSB to LSB) are the same as the
2437  // sign bit.
2438  void
2440  {
2441  ConstScalarOperandI32 src(gpuDynInst, instData.SSRC0);
2442  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2443 
2444  src.read();
2445 
2446  sdst = firstOppositeSignBit(src.rawData());
2447 
2448  sdst.write();
2449  }
2450 
2452  : Inst_SOP1(iFmt, "s_flbit_i32_i64")
2453  {
2454  setFlag(ALU);
2455  } // Inst_SOP1__S_FLBIT_I32_I64
2456 
2458  {
2459  } // ~Inst_SOP1__S_FLBIT_I32_I64
2460 
2461  // D.i = FirstOppositeSignBit(S0.i64);
2462  // If S0.i == 0 or S0.i == -1 (all bits are the same), return -1.
2463  // Counts how many bits in a row (from MSB to LSB) are the same as the
2464  // sign bit.
2465  void
2467  {
2468  ConstScalarOperandI64 src(gpuDynInst, instData.SSRC0);
2469  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2470 
2471  src.read();
2472 
2473  sdst = firstOppositeSignBit(src.rawData());
2474 
2475  sdst.write();
2476  }
2477 
2479  : Inst_SOP1(iFmt, "s_sext_i32_i8")
2480  {
2481  setFlag(ALU);
2482  } // Inst_SOP1__S_SEXT_I32_I8
2483 
2485  {
2486  } // ~Inst_SOP1__S_SEXT_I32_I8
2487 
2488  // D.i = signext(S0.i[7:0]) (sign extension).
2489  void
2491  {
2492  ConstScalarOperandI32 src(gpuDynInst, instData.SSRC0);
2493  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2494 
2495  src.read();
2496 
2497  sdst = sext<std::numeric_limits<ScalarRegI8>::digits>(
2498  bits(src.rawData(), 7, 0));
2499 
2500  sdst.write();
2501  }
2502 
2504  : Inst_SOP1(iFmt, "s_sext_i32_i16")
2505  {
2506  setFlag(ALU);
2507  } // Inst_SOP1__S_SEXT_I32_I16
2508 
2510  {
2511  } // ~Inst_SOP1__S_SEXT_I32_I16
2512 
2513  // D.i = signext(S0.i[15:0]) (sign extension).
2514  void
2516  {
2517  ConstScalarOperandI32 src(gpuDynInst, instData.SSRC0);
2518  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
2519 
2520  src.read();
2521 
2522  sdst = sext<std::numeric_limits<ScalarRegI16>::digits>(
2523  bits(src.rawData(), 15, 0));
2524 
2525  sdst.write();
2526  }
2527 
2529  : Inst_SOP1(iFmt, "s_bitset0_b32")
2530  {
2531  setFlag(ALU);
2532  } // Inst_SOP1__S_BITSET0_B32
2533 
2535  {
2536  } // ~Inst_SOP1__S_BITSET0_B32
2537 
2538  // D.u[S0.u[4:0]] = 0.
2539  void
2541  {
2542  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2543  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
2544 
2545  src.read();
2546 
2547  sdst.setBit(bits(src.rawData(), 4, 0), 0);
2548 
2549  sdst.write();
2550  }
2551 
2553  : Inst_SOP1(iFmt, "s_bitset0_b64")
2554  {
2555  setFlag(ALU);
2556  } // Inst_SOP1__S_BITSET0_B64
2557 
2559  {
2560  } // ~Inst_SOP1__S_BITSET0_B64
2561 
2562  // D.u64[S0.u[5:0]] = 0.
2563  void
2565  {
2566  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2567  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2568 
2569  src.read();
2570 
2571  sdst.setBit(bits(src.rawData(), 5, 0), 0);
2572 
2573  sdst.write();
2574  }
2575 
2577  : Inst_SOP1(iFmt, "s_bitset1_b32")
2578  {
2579  setFlag(ALU);
2580  } // Inst_SOP1__S_BITSET1_B32
2581 
2583  {
2584  } // ~Inst_SOP1__S_BITSET1_B32
2585 
2586  // D.u[S0.u[4:0]] = 1.
2587  void
2589  {
2590  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2591  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
2592 
2593  src.read();
2594 
2595  sdst.setBit(bits(src.rawData(), 4, 0), 1);
2596 
2597  sdst.write();
2598  }
2599 
2601  : Inst_SOP1(iFmt, "s_bitset1_b64")
2602  {
2603  setFlag(ALU);
2604  } // Inst_SOP1__S_BITSET1_B64
2605 
2607  {
2608  } // ~Inst_SOP1__S_BITSET1_B64
2609 
2610  // D.u64[S0.u[5:0]] = 1.
2611  void
2613  {
2614  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2615  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2616 
2617  src.read();
2618 
2619  sdst.setBit(bits(src.rawData(), 5, 0), 1);
2620 
2621  sdst.write();
2622  }
2623 
2625  : Inst_SOP1(iFmt, "s_getpc_b64")
2626  {
2627  setFlag(ALU);
2628  } // Inst_SOP1__S_GETPC_B64
2629 
2631  {
2632  } // ~Inst_SOP1__S_GETPC_B64
2633 
2634  // D.u64 = PC + 4.
2635  // Destination receives the byte address of the next instruction.
2636  void
2638  {
2639  Wavefront *wf = gpuDynInst->wavefront();
2640  Addr pc = wf->pc();
2641  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2642 
2643  sdst = pc + 4;
2644 
2645  sdst.write();
2646  }
2647 
2649  : Inst_SOP1(iFmt, "s_setpc_b64")
2650  {
2651  setFlag(ALU);
2652  } // Inst_SOP1__S_SETPC_B64
2653 
2655  {
2656  } // ~Inst_SOP1__S_SETPC_B64
2657 
2658  // PC = S0.u64.
2659  // S0.u64 is a byte address of the instruction to jump to.
2660  void
2662  {
2663  Wavefront *wf = gpuDynInst->wavefront();
2664  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2665 
2666  src.read();
2667 
2668  wf->pc(src.rawData());
2669  }
2670 
2672  : Inst_SOP1(iFmt, "s_swappc_b64")
2673  {
2674  setFlag(ALU);
2675  } // Inst_SOP1__S_SWAPPC_B64
2676 
2678  {
2679  } // ~Inst_SOP1__S_SWAPPC_B64
2680 
2681  // D.u64 = PC + 4; PC = S0.u64.
2682  // S0.u64 is a byte address of the instruction to jump to.
2683  void
2685  {
2686  Wavefront *wf = gpuDynInst->wavefront();
2687  Addr pc = wf->pc();
2688  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2689  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2690 
2691  src.read();
2692 
2693  sdst = pc + 4;
2694 
2695  wf->pc(src.rawData());
2696  sdst.write();
2697  }
2698 
2700  : Inst_SOP1(iFmt, "s_rfe_b64")
2701  {
2702  } // Inst_SOP1__S_RFE_B64
2703 
2705  {
2706  } // ~Inst_SOP1__S_RFE_B64
2707 
2708  // Return from exception handler and continue.
2709  void
2711  {
2713  }
2714 
2716  InFmt_SOP1 *iFmt)
2717  : Inst_SOP1(iFmt, "s_and_saveexec_b64")
2718  {
2719  setFlag(ALU);
2720  } // Inst_SOP1__S_AND_SAVEEXEC_B64
2721 
2723  {
2724  } // ~Inst_SOP1__S_AND_SAVEEXEC_B64
2725 
2726  // D.u64 = EXEC;
2727  // EXEC = S0.u64 & EXEC;
2728  // SCC = 1 if the new value of EXEC is non-zero.
2729  void
2731  {
2732  Wavefront *wf = gpuDynInst->wavefront();
2733  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2734  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2735  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2736 
2737  src.read();
2738 
2739  sdst = wf->execMask().to_ullong();
2740  wf->execMask() = src.rawData() & wf->execMask().to_ullong();
2741  scc = wf->execMask().any() ? 1 : 0;
2742 
2743  sdst.write();
2744  scc.write();
2745  }
2746 
2748  InFmt_SOP1 *iFmt)
2749  : Inst_SOP1(iFmt, "s_or_saveexec_b64")
2750  {
2751  setFlag(ALU);
2752  } // Inst_SOP1__S_OR_SAVEEXEC_B64
2753 
2755  {
2756  } // ~Inst_SOP1__S_OR_SAVEEXEC_B64
2757 
2758  // D.u64 = EXEC;
2759  // EXEC = S0.u64 | EXEC;
2760  // SCC = 1 if the new value of EXEC is non-zero.
2761  void
2763  {
2764  Wavefront *wf = gpuDynInst->wavefront();
2765  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2766  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2767  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2768 
2769  src.read();
2770 
2771  sdst = wf->execMask().to_ullong();
2772  wf->execMask() = src.rawData() | wf->execMask().to_ullong();
2773  scc = wf->execMask().any() ? 1 : 0;
2774 
2775  sdst.write();
2776  scc.write();
2777  }
2778 
2780  InFmt_SOP1 *iFmt)
2781  : Inst_SOP1(iFmt, "s_xor_saveexec_b64")
2782  {
2783  setFlag(ALU);
2784  } // Inst_SOP1__S_XOR_SAVEEXEC_B64
2785 
2787  {
2788  } // ~Inst_SOP1__S_XOR_SAVEEXEC_B64
2789 
2790  // D.u64 = EXEC;
2791  // EXEC = S0.u64 ^ EXEC;
2792  // SCC = 1 if the new value of EXEC is non-zero.
2793  void
2795  {
2796  Wavefront *wf = gpuDynInst->wavefront();
2797  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2798  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2799  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2800 
2801  src.read();
2802 
2803  sdst = wf->execMask().to_ullong();
2804  wf->execMask() = src.rawData() ^ wf->execMask().to_ullong();
2805  scc = wf->execMask().any() ? 1 : 0;
2806 
2807  sdst.write();
2808  scc.write();
2809  }
2810 
2812  InFmt_SOP1 *iFmt)
2813  : Inst_SOP1(iFmt, "s_andn2_saveexec_b64")
2814  {
2815  setFlag(ALU);
2816  } // Inst_SOP1__S_ANDN2_SAVEEXEC_B64
2817 
2819  {
2820  } // ~Inst_SOP1__S_ANDN2_SAVEEXEC_B64
2821 
2822  // D.u64 = EXEC;
2823  // EXEC = S0.u64 & ~EXEC;
2824  // SCC = 1 if the new value of EXEC is non-zero.
2825  void
2827  {
2828  Wavefront *wf = gpuDynInst->wavefront();
2829  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2830  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2831  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2832 
2833  src.read();
2834 
2835  sdst = wf->execMask().to_ullong();
2836  wf->execMask() = src.rawData() &~ wf->execMask().to_ullong();
2837  scc = wf->execMask().any() ? 1 : 0;
2838 
2839  sdst.write();
2840  scc.write();
2841  }
2842 
2844  InFmt_SOP1 *iFmt)
2845  : Inst_SOP1(iFmt, "s_orn2_saveexec_b64")
2846  {
2847  setFlag(ALU);
2848  } // Inst_SOP1__S_ORN2_SAVEEXEC_B64
2849 
2851  {
2852  } // ~Inst_SOP1__S_ORN2_SAVEEXEC_B64
2853 
2854  // D.u64 = EXEC;
2855  // EXEC = S0.u64 | ~EXEC;
2856  // SCC = 1 if the new value of EXEC is non-zero.
2857  void
2859  {
2860  Wavefront *wf = gpuDynInst->wavefront();
2861  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2862  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2863  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2864 
2865  src.read();
2866 
2867  sdst = wf->execMask().to_ullong();
2868  wf->execMask() = src.rawData() |~ wf->execMask().to_ullong();
2869  scc = wf->execMask().any() ? 1 : 0;
2870 
2871  sdst.write();
2872  scc.write();
2873  }
2874 
2876  InFmt_SOP1 *iFmt)
2877  : Inst_SOP1(iFmt, "s_nand_saveexec_b64")
2878  {
2879  setFlag(ALU);
2880  } // Inst_SOP1__S_NAND_SAVEEXEC_B64
2881 
2883  {
2884  } // ~Inst_SOP1__S_NAND_SAVEEXEC_B64
2885 
2886  // D.u64 = EXEC;
2887  // EXEC = ~(S0.u64 & EXEC);
2888  // SCC = 1 if the new value of EXEC is non-zero.
2889  void
2891  {
2892  Wavefront *wf = gpuDynInst->wavefront();
2893  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2894  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2895  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2896 
2897  src.read();
2898 
2899  sdst = wf->execMask().to_ullong();
2900  wf->execMask() = ~(src.rawData() & wf->execMask().to_ullong());
2901  scc = wf->execMask().any() ? 1 : 0;
2902 
2903  sdst.write();
2904  scc.write();
2905  }
2906 
2908  InFmt_SOP1 *iFmt)
2909  : Inst_SOP1(iFmt, "s_nor_saveexec_b64")
2910  {
2911  setFlag(ALU);
2912  } // Inst_SOP1__S_NOR_SAVEEXEC_B64
2913 
2915  {
2916  } // ~Inst_SOP1__S_NOR_SAVEEXEC_B64
2917 
2918  // D.u64 = EXEC;
2919  // EXEC = ~(S0.u64 | EXEC);
2920  // SCC = 1 if the new value of EXEC is non-zero.
2921  void
2923  {
2924  Wavefront *wf = gpuDynInst->wavefront();
2925  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2926  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2927  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2928 
2929  src.read();
2930 
2931  sdst = wf->execMask().to_ullong();
2932  wf->execMask() = ~(src.rawData() | wf->execMask().to_ullong());
2933  scc = wf->execMask().any() ? 1 : 0;
2934 
2935  sdst.write();
2936  scc.write();
2937  }
2938 
2940  InFmt_SOP1 *iFmt)
2941  : Inst_SOP1(iFmt, "s_xnor_saveexec_b64")
2942  {
2943  setFlag(ALU);
2944  } // Inst_SOP1__S_XNOR_SAVEEXEC_B64
2945 
2947  {
2948  } // ~Inst_SOP1__S_XNOR_SAVEEXEC_B64
2949 
2950  // D.u64 = EXEC;
2951  // EXEC = ~(S0.u64 ^ EXEC);
2952  // SCC = 1 if the new value of EXEC is non-zero.
2953  void
2955  {
2956  Wavefront *wf = gpuDynInst->wavefront();
2957  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
2958  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
2959  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2960 
2961  src.read();
2962 
2963  sdst = wf->execMask().to_ullong();
2964  wf->execMask() = ~(src.rawData() ^ wf->execMask().to_ullong());
2965  scc = wf->execMask().any() ? 1 : 0;
2966 
2967  sdst.write();
2968  scc.write();
2969  }
2970 
2972  : Inst_SOP1(iFmt, "s_quadmask_b32")
2973  {
2974  setFlag(ALU);
2975  } // Inst_SOP1__S_QUADMASK_B32
2976 
2978  {
2979  } // ~Inst_SOP1__S_QUADMASK_B32
2980 
2981  // D.u = QuadMask(S0.u):
2982  // D[0] = OR(S0[3:0]), D[1] = OR(S0[7:4]) ... D[31:8] = 0;
2983  // SCC = 1 if result is non-zero.
2984  void
2986  {
2987  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
2988  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
2989  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
2990 
2991  src.read();
2992 
2993  sdst = quadMask(src.rawData());
2994  scc = sdst.rawData() ? 1 : 0;
2995 
2996  sdst.write();
2997  scc.write();
2998  }
2999 
3001  : Inst_SOP1(iFmt, "s_quadmask_b64")
3002  {
3003  setFlag(ALU);
3004  } // Inst_SOP1__S_QUADMASK_B64
3005 
3007  {
3008  } // ~Inst_SOP1__S_QUADMASK_B64
3009 
3010  // D.u64 = QuadMask(S0.u64):
3011  // D[0] = OR(S0[3:0]), D[1] = OR(S0[7:4]) ... D[63:16] = 0;
3012  // SCC = 1 if result is non-zero.
3013  void
3015  {
3016  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
3017  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
3018  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3019 
3020  src.read();
3021 
3022  sdst = quadMask(src.rawData());
3023  scc = sdst.rawData() ? 1 : 0;
3024 
3025  sdst.write();
3026  scc.write();
3027  }
3028 
3030  : Inst_SOP1(iFmt, "s_movrels_b32")
3031  {
3032  setFlag(ALU);
3033  } // Inst_SOP1__S_MOVRELS_B32
3034 
3036  {
3037  } // ~Inst_SOP1__S_MOVRELS_B32
3038 
3039  // D.u = SGPR[S0.u + M0.u].u (move from relative source).
3040  void
3042  {
3043  ConstScalarOperandU32 m0(gpuDynInst, REG_M0);
3044  m0.read();
3045  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0 + m0.rawData());
3046  ScalarOperandU32 sdst(gpuDynInst, instData.SDST);
3047 
3048  src.read();
3049 
3050  sdst = src.rawData();
3051 
3052  sdst.write();
3053  }
3054 
3056  : Inst_SOP1(iFmt, "s_movrels_b64")
3057  {
3058  setFlag(ALU);
3059  } // Inst_SOP1__S_MOVRELS_B64
3060 
3062  {
3063  } // ~Inst_SOP1__S_MOVRELS_B64
3064 
3065  // D.u64 = SGPR[S0.u + M0.u].u64 (move from relative source).
3066  // The index in M0.u must be even for this operation.
3067  void
3069  {
3070  ConstScalarOperandU32 m0(gpuDynInst, REG_M0);
3071  m0.read();
3072  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0 + m0.rawData());
3073  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
3074 
3075  src.read();
3076 
3077  sdst = src.rawData();
3078 
3079  sdst.write();
3080  }
3081 
3083  : Inst_SOP1(iFmt, "s_movreld_b32")
3084  {
3085  setFlag(ALU);
3086  } // Inst_SOP1__S_MOVRELD_B32
3087 
3089  {
3090  } // ~Inst_SOP1__S_MOVRELD_B32
3091 
3092  // SGPR[D.u + M0.u].u = S0.u (move to relative destination).
3093  void
3095  {
3096  ConstScalarOperandU32 m0(gpuDynInst, REG_M0);
3097  m0.read();
3098  ConstScalarOperandU32 src(gpuDynInst, instData.SSRC0);
3099  ScalarOperandU32 sdst(gpuDynInst, instData.SDST + m0.rawData());
3100 
3101  src.read();
3102 
3103  sdst = src.rawData();
3104 
3105  sdst.write();
3106  }
3107 
3109  : Inst_SOP1(iFmt, "s_movreld_b64")
3110  {
3111  setFlag(ALU);
3112  } // Inst_SOP1__S_MOVRELD_B64
3113 
3115  {
3116  } // ~Inst_SOP1__S_MOVRELD_B64
3117 
3118  // SGPR[D.u + M0.u].u64 = S0.u64 (move to relative destination).
3119  // The index in M0.u must be even for this operation.
3120  void
3122  {
3123  ConstScalarOperandU32 m0(gpuDynInst, REG_M0);
3124  m0.read();
3125  ConstScalarOperandU64 src(gpuDynInst, instData.SSRC0);
3126  ScalarOperandU64 sdst(gpuDynInst, instData.SDST + m0.rawData());
3127 
3128  src.read();
3129 
3130  sdst = src.rawData();
3131 
3132  sdst.write();
3133  }
3134 
3136  : Inst_SOP1(iFmt, "s_cbranch_join")
3137  {
3138  setFlag(Branch);
3139  } // Inst_SOP1__S_CBRANCH_JOIN
3140 
3142  {
3143  } // ~Inst_SOP1__S_CBRANCH_JOIN
3144 
3145  // Conditional branch join point (end of conditional branch block).
3146  void
3148  {
3150  }
3151 
3153  : Inst_SOP1(iFmt, "s_abs_i32")
3154  {
3155  setFlag(ALU);
3156  } // Inst_SOP1__S_ABS_I32
3157 
3159  {
3160  } // ~Inst_SOP1__S_ABS_I32
3161 
3162  // if (S.i < 0) then D.i = -S.i;
3163  // else D.i = S.i;
3164  // SCC = 1 if result is non-zero.
3165  // Integer absolute value.
3166  void
3168  {
3169  ConstScalarOperandI32 src(gpuDynInst, instData.SSRC0);
3170  ScalarOperandI32 sdst(gpuDynInst, instData.SDST);
3171  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3172 
3173  src.read();
3174 
3175  sdst = std::abs(src.rawData());
3176 
3177  scc = sdst.rawData() ? 1 : 0;
3178 
3179  sdst.write();
3180  scc.write();
3181  }
3182 
3184  : Inst_SOP1(iFmt, "s_mov_fed_b32")
3185  {
3186  setFlag(ALU);
3187  } // Inst_SOP1__S_MOV_FED_B32
3188 
3190  {
3191  } // ~Inst_SOP1__S_MOV_FED_B32
3192 
3193  // D.u = S0.u.
3194  void
3196  {
3198  }
3199 
3201  InFmt_SOP1 *iFmt)
3202  : Inst_SOP1(iFmt, "s_set_gpr_idx_idx")
3203  {
3204  } // Inst_SOP1__S_SET_GPR_IDX_IDX
3205 
3207  {
3208  } // ~Inst_SOP1__S_SET_GPR_IDX_IDX
3209 
3210  // M0[7:0] = S0.u[7:0].
3211  // Modify the index used in vector GPR indexing.
3212  void
3214  {
3216  }
3217 
3219  : Inst_SOPC(iFmt, "s_cmp_eq_i32")
3220  {
3221  setFlag(ALU);
3222  } // Inst_SOPC__S_CMP_EQ_I32
3223 
3225  {
3226  } // ~Inst_SOPC__S_CMP_EQ_I32
3227 
3228  // SCC = (S0.i == S1.i).
3229  void
3231  {
3232  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
3233  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
3234  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3235 
3236  src0.read();
3237  src1.read();
3238 
3239  scc = (src0.rawData() == src1.rawData()) ? 1 : 0;
3240 
3241  scc.write();
3242  }
3243 
3245  : Inst_SOPC(iFmt, "s_cmp_lg_i32")
3246  {
3247  setFlag(ALU);
3248  } // Inst_SOPC__S_CMP_LG_I32
3249 
3251  {
3252  } // ~Inst_SOPC__S_CMP_LG_I32
3253 
3254  // SCC = (S0.i != S1.i).
3255  void
3257  {
3258  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
3259  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
3260  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3261 
3262  src0.read();
3263  src1.read();
3264 
3265  scc = (src0.rawData() != src1.rawData()) ? 1 : 0;
3266 
3267  scc.write();
3268  }
3269 
3271  : Inst_SOPC(iFmt, "s_cmp_gt_i32")
3272  {
3273  setFlag(ALU);
3274  } // Inst_SOPC__S_CMP_GT_I32
3275 
3277  {
3278  } // ~Inst_SOPC__S_CMP_GT_I32
3279 
3280  // SCC = (S0.i > S1.i).
3281  void
3283  {
3284  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
3285  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
3286  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3287 
3288  src0.read();
3289  src1.read();
3290 
3291  scc = (src0.rawData() > src1.rawData()) ? 1 : 0;
3292 
3293  scc.write();
3294  }
3295 
3297  : Inst_SOPC(iFmt, "s_cmp_ge_i32")
3298  {
3299  setFlag(ALU);
3300  } // Inst_SOPC__S_CMP_GE_I32
3301 
3303  {
3304  } // ~Inst_SOPC__S_CMP_GE_I32
3305 
3306  // SCC = (S0.i >= S1.i).
3307  void
3309  {
3310  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
3311  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
3312  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3313 
3314  src0.read();
3315  src1.read();
3316 
3317  scc = (src0.rawData() >= src1.rawData()) ? 1 : 0;
3318 
3319  scc.write();
3320  }
3321 
3323  : Inst_SOPC(iFmt, "s_cmp_lt_i32")
3324  {
3325  setFlag(ALU);
3326  } // Inst_SOPC__S_CMP_LT_I32
3327 
3329  {
3330  } // ~Inst_SOPC__S_CMP_LT_I32
3331 
3332  // SCC = (S0.i < S1.i).
3333  void
3335  {
3336  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
3337  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
3338  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3339 
3340  src0.read();
3341  src1.read();
3342 
3343  scc = (src0.rawData() < src1.rawData()) ? 1 : 0;
3344 
3345  scc.write();
3346  }
3347 
3349  : Inst_SOPC(iFmt, "s_cmp_le_i32")
3350  {
3351  setFlag(ALU);
3352  } // Inst_SOPC__S_CMP_LE_I32
3353 
3355  {
3356  } // ~Inst_SOPC__S_CMP_LE_I32
3357 
3358  // SCC = (S0.i <= S1.i).
3359  void
3361  {
3362  ConstScalarOperandI32 src0(gpuDynInst, instData.SSRC0);
3363  ConstScalarOperandI32 src1(gpuDynInst, instData.SSRC1);
3364  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3365 
3366  src0.read();
3367  src1.read();
3368 
3369  scc = (src0.rawData() <= src1.rawData()) ? 1 : 0;
3370 
3371  scc.write();
3372  }
3373 
3375  : Inst_SOPC(iFmt, "s_cmp_eq_u32")
3376  {
3377  setFlag(ALU);
3378  } // Inst_SOPC__S_CMP_EQ_U32
3379 
3381  {
3382  } // ~Inst_SOPC__S_CMP_EQ_U32
3383 
3384  // SCC = (S0.u == S1.u).
3385  void
3387  {
3388  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3389  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3390  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3391 
3392  src0.read();
3393  src1.read();
3394 
3395  scc = (src0.rawData() == src1.rawData()) ? 1 : 0;
3396 
3397  scc.write();
3398  }
3399 
3401  : Inst_SOPC(iFmt, "s_cmp_lg_u32")
3402  {
3403  setFlag(ALU);
3404  } // Inst_SOPC__S_CMP_LG_U32
3405 
3407  {
3408  } // ~Inst_SOPC__S_CMP_LG_U32
3409 
3410  // SCC = (S0.u != S1.u).
3411  void
3413  {
3414  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3415  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3416  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3417 
3418  src0.read();
3419  src1.read();
3420 
3421  scc = (src0.rawData() != src1.rawData()) ? 1 : 0;
3422 
3423  scc.write();
3424  }
3425 
3427  : Inst_SOPC(iFmt, "s_cmp_gt_u32")
3428  {
3429  setFlag(ALU);
3430  } // Inst_SOPC__S_CMP_GT_U32
3431 
3433  {
3434  } // ~Inst_SOPC__S_CMP_GT_U32
3435 
3436  // SCC = (S0.u > S1.u).
3437  void
3439  {
3440  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3441  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3442  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3443 
3444  src0.read();
3445  src1.read();
3446 
3447  scc = (src0.rawData() > src1.rawData()) ? 1 : 0;
3448 
3449  scc.write();
3450  }
3451 
3453  : Inst_SOPC(iFmt, "s_cmp_ge_u32")
3454  {
3455  setFlag(ALU);
3456  } // Inst_SOPC__S_CMP_GE_U32
3457 
3459  {
3460  } // ~Inst_SOPC__S_CMP_GE_U32
3461 
3462  // SCC = (S0.u >= S1.u).
3463  void
3465  {
3466  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3467  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3468  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3469 
3470  src0.read();
3471  src1.read();
3472 
3473  scc = (src0.rawData() >= src1.rawData()) ? 1 : 0;
3474 
3475  scc.write();
3476  }
3477 
3479  : Inst_SOPC(iFmt, "s_cmp_lt_u32")
3480  {
3481  setFlag(ALU);
3482  } // Inst_SOPC__S_CMP_LT_U32
3483 
3485  {
3486  } // ~Inst_SOPC__S_CMP_LT_U32
3487 
3488  // SCC = (S0.u < S1.u).
3489  void
3491  {
3492  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3493  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3494  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3495 
3496  src0.read();
3497  src1.read();
3498 
3499  scc = (src0.rawData() <= src1.rawData()) ? 1 : 0;
3500 
3501  scc.write();
3502  }
3503 
3505  : Inst_SOPC(iFmt, "s_cmp_le_u32")
3506  {
3507  setFlag(ALU);
3508  } // Inst_SOPC__S_CMP_LE_U32
3509 
3511  {
3512  } // ~Inst_SOPC__S_CMP_LE_U32
3513 
3514  // SCC = (S0.u <= S1.u).
3515  void
3517  {
3518  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3519  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3520  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3521 
3522  src0.read();
3523  src1.read();
3524 
3525  scc = (src0.rawData() <= src1.rawData()) ? 1 : 0;
3526 
3527  scc.write();
3528  }
3529 
3531  : Inst_SOPC(iFmt, "s_bitcmp0_b32")
3532  {
3533  setFlag(ALU);
3534  } // Inst_SOPC__S_BITCMP0_B32
3535 
3537  {
3538  } // ~Inst_SOPC__S_BITCMP0_B32
3539 
3540  // SCC = (S0.u[S1.u[4:0]] == 0).
3541  void
3543  {
3544  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3545  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3546  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3547 
3548  src0.read();
3549  src1.read();
3550 
3551  scc = !bits(src0.rawData(), bits(src1.rawData(), 4, 0)) ? 1 : 0;
3552 
3553  scc.write();
3554  }
3555 
3557  : Inst_SOPC(iFmt, "s_bitcmp1_b32")
3558  {
3559  setFlag(ALU);
3560  } // Inst_SOPC__S_BITCMP1_B32
3561 
3563  {
3564  } // ~Inst_SOPC__S_BITCMP1_B32
3565 
3566  // SCC = (S0.u[S1.u[4:0]] == 1).
3567  void
3569  {
3570  ConstScalarOperandU32 src0(gpuDynInst, instData.SSRC0);
3571  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3572  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3573 
3574  src0.read();
3575  src1.read();
3576 
3577  scc = bits(src0.rawData(), bits(src1.rawData(), 4, 0)) ? 1 : 0;
3578 
3579  scc.write();
3580  }
3581 
3583  : Inst_SOPC(iFmt, "s_bitcmp0_b64")
3584  {
3585  setFlag(ALU);
3586  } // Inst_SOPC__S_BITCMP0_B64
3587 
3589  {
3590  } // ~Inst_SOPC__S_BITCMP0_B64
3591 
3592  // SCC = (S0.u64[S1.u[5:0]] == 0).
3593  void
3595  {
3596  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
3597  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3598  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3599 
3600  src0.read();
3601  src1.read();
3602 
3603  scc = !bits(src0.rawData(), bits(src1.rawData(), 5, 0)) ? 1 : 0;
3604 
3605  scc.write();
3606  }
3607 
3609  : Inst_SOPC(iFmt, "s_bitcmp1_b64")
3610  {
3611  setFlag(ALU);
3612  } // Inst_SOPC__S_BITCMP1_B64
3613 
3615  {
3616  } // ~Inst_SOPC__S_BITCMP1_B64
3617 
3618  // SCC = (S0.u64[S1.u[5:0]] == 1).
3619  void
3621  {
3622  ConstScalarOperandU64 src0(gpuDynInst, instData.SSRC0);
3623  ConstScalarOperandU32 src1(gpuDynInst, instData.SSRC1);
3624  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3625 
3626  src0.read();
3627  src1.read();
3628 
3629  scc = bits(src0.rawData(), bits(src1.rawData(), 5, 0)) ? 1 : 0;
3630 
3631  scc.write();
3632  }
3633 
3635  : Inst_SOPC(iFmt, "s_setvskip")
3636  {
3637  setFlag(UnconditionalJump);
3638  } // Inst_SOPC__S_SETVSKIP
3639 
3641  {
3642  } // ~Inst_SOPC__S_SETVSKIP
3643 
3644  // VSKIP = S0.u[S1.u[4:0]].
3645  // Enables and disables VSKIP mode.
3646  // When VSKIP is enabled, no VOP*/M*BUF/MIMG/DS/FLAT/EXP instuctions are
3647  // issued.
3648  void
3650  {
3652  }
3653 
3655  : Inst_SOPC(iFmt, "s_set_gpr_idx_on")
3656  {
3657  } // Inst_SOPC__S_SET_GPR_IDX_ON
3658 
3660  {
3661  } // ~Inst_SOPC__S_SET_GPR_IDX_ON
3662 
3663  // MODE.gpr_idx_en = 1;
3664  // M0[7:0] = S0.u[7:0];
3665  // M0[15:12] = SIMM4 (direct contents of S1 field);
3666  // Remaining bits of M0 are unmodified.
3667  // Enable GPR indexing mode. Vector operations after this will perform
3668  // relative GPR addressing based on the contents of M0.
3669  // The raw contents of the S1 field are read and used to set the enable
3670  // bits. S1[0] = VSRC0_REL, S1[1] = VSRC1_REL, S1[2] = VSRC2_REL and
3671  // S1[3] = VDST_REL.
3672  void
3674  {
3676  }
3677 
3679  : Inst_SOPC(iFmt, "s_cmp_eq_u64")
3680  {
3681  setFlag(ALU);
3682  } // Inst_SOPC__S_CMP_EQ_U64
3683 
3685  {
3686  } // ~Inst_SOPC__S_CMP_EQ_U64
3687 
3688  // SCC = (S0.i64 == S1.i64).
3689  void
3691  {
3692  ConstScalarOperandI64 src0(gpuDynInst, instData.SSRC0);
3693  ConstScalarOperandI64 src1(gpuDynInst, instData.SSRC1);
3694  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3695 
3696  src0.read();
3697  src1.read();
3698 
3699  scc = (src0.rawData() == src1.rawData()) ? 1 : 0;
3700 
3701  scc.write();
3702  }
3703 
3705  : Inst_SOPC(iFmt, "s_cmp_lg_u64")
3706  {
3707  setFlag(ALU);
3708  } // Inst_SOPC__S_CMP_LG_U64
3709 
3711  {
3712  } // ~Inst_SOPC__S_CMP_LG_U64
3713 
3714  // SCC = (S0.i64 != S1.i64).
3715  void
3717  {
3718  ConstScalarOperandI64 src0(gpuDynInst, instData.SSRC0);
3719  ConstScalarOperandI64 src1(gpuDynInst, instData.SSRC1);
3720  ScalarOperandU32 scc(gpuDynInst, REG_SCC);
3721 
3722  src0.read();
3723  src1.read();
3724 
3725  scc = (src0.rawData() != src1.rawData()) ? 1 : 0;
3726 
3727  scc.write();
3728  }
3729 
3731  : Inst_SOPP(iFmt, "s_nop")
3732  {
3733  setFlag(Nop);
3734  } // Inst_SOPP__S_NOP
3735 
3737  {
3738  } // ~Inst_SOPP__S_NOP
3739 
3740  // Do nothing.
3741  void
3743  {
3744  }
3745 
3747  : Inst_SOPP(iFmt, "s_endpgm")
3748  {
3749  setFlag(EndOfKernel);
3750  } // Inst_SOPP__S_ENDPGM
3751 
3753  {
3754  } // ~Inst_SOPP__S_ENDPGM
3755 
3756  // End of program; terminate wavefront.
3757  void
3759  {
3760  Wavefront *wf = gpuDynInst->wavefront();
3761  ComputeUnit *cu = gpuDynInst->computeUnit();
3762 
3763  // delete extra instructions fetched for completed work-items
3764  wf->instructionBuffer.erase(wf->instructionBuffer.begin() + 1,
3765  wf->instructionBuffer.end());
3766 
3767  if (wf->pendingFetch) {
3768  wf->dropFetch = true;
3769  }
3770 
3772  .flushBuf(wf->wfSlotId);
3774 
3775  int refCount = wf->computeUnit->getLds()
3776  .decreaseRefCounter(wf->dispatchId, wf->wgId);
3777 
3783  int bar_id = WFBarrier::InvalidID;
3784  if (wf->hasBarrier()) {
3785  assert(wf->getStatus() != Wavefront::S_BARRIER);
3786  bar_id = wf->barrierId();
3787  assert(bar_id != WFBarrier::InvalidID);
3788  wf->releaseBarrier();
3789  cu->decMaxBarrierCnt(bar_id);
3790  DPRINTF(GPUSync, "CU[%d] WF[%d][%d] Wave[%d] - Exiting the "
3791  "program and decrementing max barrier count for "
3792  "barrier Id%d. New max count: %d.\n", cu->cu_id,
3793  wf->simdId, wf->wfSlotId, wf->wfDynId, bar_id,
3794  cu->maxBarrierCnt(bar_id));
3795  }
3796 
3797  DPRINTF(GPUExec, "CU%d: decrease ref ctr WG[%d] to [%d]\n",
3798  wf->computeUnit->cu_id, wf->wgId, refCount);
3799 
3802  wf->computeUnit->activeWaves--;
3803 
3804  panic_if(wf->computeUnit->activeWaves < 0, "CU[%d] Active waves less "
3805  "than zero\n", wf->computeUnit->cu_id);
3806 
3807  DPRINTF(GPUExec, "Doing return for CU%d: WF[%d][%d][%d]\n",
3808  wf->computeUnit->cu_id, wf->simdId, wf->wfSlotId, wf->wfDynId);
3809 
3810  for (int i = 0; i < wf->vecReads.size(); i++) {
3811  if (wf->rawDist.find(i) != wf->rawDist.end()) {
3812  wf->stats.readsPerWrite.sample(wf->vecReads.at(i));
3813  }
3814  }
3815  wf->vecReads.clear();
3816  wf->rawDist.clear();
3817  wf->lastInstExec = 0;
3818 
3819  if (!refCount) {
3826  if (bar_id != WFBarrier::InvalidID) {
3827  DPRINTF(GPUSync, "CU[%d] WF[%d][%d] Wave[%d] - All waves are "
3828  "now complete. Releasing barrier Id%d.\n", cu->cu_id,
3829  wf->simdId, wf->wfSlotId, wf->wfDynId,
3830  wf->barrierId());
3831  cu->releaseBarrier(bar_id);
3832  }
3833 
3841  // check whether the workgroup is indicating the kernel end (i.e.,
3842  // the last workgroup in the kernel).
3843  bool kernelEnd =
3845  // further check whether 'release @ kernel end' is needed
3846  bool relNeeded =
3848 
3849  // if not a kernel end or no release needed, retire the workgroup
3850  // directly
3851  if (!kernelEnd || !relNeeded) {
3855 
3856  return;
3857  }
3858 
3863  setFlag(MemSync);
3864  setFlag(GlobalSegment);
3865  // Notify Memory System of Kernel Completion
3867  gpuDynInst->simdId = wf->simdId;
3868  gpuDynInst->wfSlotId = wf->wfSlotId;
3869  gpuDynInst->wfDynId = wf->wfDynId;
3870 
3871  DPRINTF(GPUExec, "inject global memory fence for CU%d: "
3872  "WF[%d][%d][%d]\n", wf->computeUnit->cu_id,
3873  wf->simdId, wf->wfSlotId, wf->wfDynId);
3874 
3875  // call shader to prepare the flush operations
3876  wf->computeUnit->shader->prepareFlush(gpuDynInst);
3877 
3879  } else {
3881  }
3882  }
3883 
3884 
3886  : Inst_SOPP(iFmt, "s_branch")
3887  {
3888  setFlag(Branch);
3889  } // Inst_SOPP__S_BRANCH
3890 
3892  {
3893  } // ~Inst_SOPP__S_BRANCH
3894 
3895  // PC = PC + signext(SIMM16 * 4) + 4 (short jump).
3896  void
3898  {
3899  Wavefront *wf = gpuDynInst->wavefront();
3900  Addr pc = wf->pc();
3901  ScalarRegI16 simm16 = instData.SIMM16;
3902 
3903  pc = pc + ((ScalarRegI64)sext<18>(simm16 * 4LL)) + 4LL;
3904 
3905  wf->pc(pc);
3906  }
3907 
3909  : Inst_SOPP(iFmt, "s_wakeup")
3910  {
3911  } // Inst_SOPP__S_WAKEUP
3912 
3914  {
3915  } // ~Inst_SOPP__S_WAKEUP
3916 
3917  // Allow a wave to wakeup all the other waves in its workgroup to force
3918  // them to wake up immediately from an S_SLEEP instruction. The wakeup is
3919  // ignored if the waves are not sleeping.
3920  void
3922  {
3924  }
3925 
3927  : Inst_SOPP(iFmt, "s_cbranch_scc0")
3928  {
3929  setFlag(Branch);
3930  } // Inst_SOPP__S_CBRANCH_SCC0
3931 
3933  {
3934  } // ~Inst_SOPP__S_CBRANCH_SCC0
3935 
3936  // if (SCC == 0) then PC = PC + signext(SIMM16 * 4) + 4;
3937  // else NOP.
3938  void
3940  {
3941  Wavefront *wf = gpuDynInst->wavefront();
3942  Addr pc = wf->pc();
3943  ScalarRegI16 simm16 = instData.SIMM16;
3944  ConstScalarOperandU32 scc(gpuDynInst, REG_SCC);
3945 
3946  scc.read();
3947 
3948  if (!scc.rawData()) {
3949  pc = pc + ((ScalarRegI64)sext<18>(simm16 * 4LL)) + 4LL;
3950  }
3951 
3952  wf->pc(pc);
3953  }
3954 
3956  : Inst_SOPP(iFmt, "s_cbranch_scc1")
3957  {
3958  setFlag(Branch);
3959  } // Inst_SOPP__S_CBRANCH_SCC1
3960 
3962  {
3963  } // ~Inst_SOPP__S_CBRANCH_SCC1
3964 
3965  // if (SCC == 1) then PC = PC + signext(SIMM16 * 4) + 4;
3966  // else NOP.
3967  void
3969  {
3970  Wavefront *wf = gpuDynInst->wavefront();
3971  Addr pc = wf->pc();
3972  ScalarRegI16 simm16 = instData.SIMM16;
3973  ConstScalarOperandU32 scc(gpuDynInst, REG_SCC);
3974 
3975  scc.read();
3976 
3977  if (scc.rawData()) {
3978  pc = pc + ((ScalarRegI64)sext<18>(simm16 * 4LL)) + 4LL;
3979  }
3980 
3981  wf->pc(pc);
3982  }
3983 
3985  : Inst_SOPP(iFmt, "s_cbranch_vccz")
3986  {
3987  setFlag(Branch);
3988  setFlag(ReadsVCC);
3989  } // Inst_SOPP__S_CBRANCH_VCCZ
3990 
3992  {
3993  } // ~Inst_SOPP__S_CBRANCH_VCCZ
3994 
3995  // if (VCC == 0) then PC = PC + signext(SIMM16 * 4) + 4;
3996  // else NOP.
3997  void
3999  {
4000  Wavefront *wf = gpuDynInst->wavefront();
4001  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
4002  Addr pc = wf->pc();
4003  ScalarRegI16 simm16 = instData.SIMM16;
4004 
4005  vcc.read();
4006 
4007  if (!vcc.rawData()) {
4008  pc = pc + ((ScalarRegI64)sext<18>(simm16 * 4LL)) + 4LL;
4009  }
4010 
4011  wf->pc(pc);
4012  }
4013 
4015  : Inst_SOPP(iFmt, "s_cbranch_vccnz")
4016  {
4017  setFlag(Branch);
4018  setFlag(ReadsVCC);
4019  } // Inst_SOPP__S_CBRANCH_VCCNZ
4020 
4022  {
4023  } // ~Inst_SOPP__S_CBRANCH_VCCNZ
4024 
4025  // if (VCC != 0) then PC = PC + signext(SIMM16 * 4) + 4;
4026  // else NOP.
4027  void
4029  {
4030  Wavefront *wf = gpuDynInst->wavefront();
4031  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
4032 
4033  vcc.read();
4034 
4035  if (vcc.rawData()) {
4036  Addr pc = wf->pc();
4037  ScalarRegI16 simm16 = instData.SIMM16;
4038  pc = pc + ((ScalarRegI64)sext<18>(simm16 * 4LL)) + 4LL;
4039  wf->pc(pc);
4040  }
4041  }
4042 
4044  : Inst_SOPP(iFmt, "s_cbranch_execz")
4045  {
4046  setFlag(Branch);
4047  } // Inst_SOPP__S_CBRANCH_EXECZ
4048 
4050  {
4051  } // ~Inst_SOPP__S_CBRANCH_EXECZ
4052 
4053  // if (EXEC == 0) then PC = PC + signext(SIMM16 * 4) + 4;
4054  // else NOP.
4055  void
4057  {
4058  Wavefront *wf = gpuDynInst->wavefront();
4059 
4060  if (wf->execMask().none()) {
4061  Addr pc = wf->pc();
4062  ScalarRegI16 simm16 = instData.SIMM16;
4063  pc = pc + ((ScalarRegI64)sext<18>(simm16 * 4LL)) + 4LL;
4064  wf->pc(pc);
4065  }
4066  }
4067 
4069  : Inst_SOPP(iFmt, "s_cbranch_execnz")
4070  {
4071  setFlag(Branch);
4072  } // Inst_SOPP__S_CBRANCH_EXECNZ
4073 
4075  {
4076  } // ~Inst_SOPP__S_CBRANCH_EXECNZ
4077 
4078  // if (EXEC != 0) then PC = PC + signext(SIMM16 * 4) + 4;
4079  // else NOP.
4080  void
4082  {
4083  Wavefront *wf = gpuDynInst->wavefront();
4084 
4085  if (wf->execMask().any()) {
4086  Addr pc = wf->pc();
4087  ScalarRegI16 simm16 = instData.SIMM16;
4088  pc = pc + ((ScalarRegI64)sext<18>(simm16 * 4LL)) + 4LL;
4089  wf->pc(pc);
4090  }
4091  }
4092 
4094  : Inst_SOPP(iFmt, "s_barrier")
4095  {
4096  setFlag(MemBarrier);
4097  } // Inst_SOPP__S_BARRIER
4098 
4100  {
4101  } // ~Inst_SOPP__S_BARRIER
4102 
4109  void
4111  {
4112  Wavefront *wf = gpuDynInst->wavefront();
4113  ComputeUnit *cu = gpuDynInst->computeUnit();
4114 
4115  if (wf->hasBarrier()) {
4116  int bar_id = wf->barrierId();
4117  cu->incNumAtBarrier(bar_id);
4118  DPRINTF(GPUSync, "CU[%d] WF[%d][%d] Wave[%d] - Stalling at "
4119  "barrier Id%d. %d waves now at barrier, %d waves "
4120  "remain.\n", cu->cu_id, wf->simdId, wf->wfSlotId,
4121  wf->wfDynId, bar_id, cu->numAtBarrier(bar_id),
4122  cu->numYetToReachBarrier(bar_id));
4123  }
4124  } // execute
4125  // --- Inst_SOPP__S_SETKILL class methods ---
4126 
4128  : Inst_SOPP(iFmt, "s_setkill")
4129  {
4130  } // Inst_SOPP__S_SETKILL
4131 
4133  {
4134  } // ~Inst_SOPP__S_SETKILL
4135 
4136  void
4138  {
4140  }
4141 
4143  : Inst_SOPP(iFmt, "s_waitcnt")
4144  {
4145  setFlag(ALU);
4146  setFlag(Waitcnt);
4147  } // Inst_SOPP__S_WAITCNT
4148 
4150  {
4151  } // ~Inst_SOPP__S_WAITCNT
4152 
4153  // Wait for the counts of outstanding lds, vector-memory and
4154  // export/vmem-write-data to be at or below the specified levels.
4155  // SIMM16[3:0] = vmcount (vector memory operations),
4156  // SIMM16[6:4] = export/mem-write-data count,
4157  // SIMM16[12:8] = LGKM_cnt (scalar-mem/GDS/LDS count).
4158  void
4160  {
4161  ScalarRegI32 vm_cnt = 0;
4162  ScalarRegI32 exp_cnt = 0;
4163  ScalarRegI32 lgkm_cnt = 0;
4164  vm_cnt = bits<ScalarRegI16>(instData.SIMM16, 3, 0);
4165  exp_cnt = bits<ScalarRegI16>(instData.SIMM16, 6, 4);
4166  lgkm_cnt = bits<ScalarRegI16>(instData.SIMM16, 12, 8);
4167  gpuDynInst->wavefront()->setWaitCnts(vm_cnt, exp_cnt, lgkm_cnt);
4168  }
4169 
4171  : Inst_SOPP(iFmt, "s_sethalt")
4172  {
4173  } // Inst_SOPP__S_SETHALT
4174 
4176  {
4177  } // ~Inst_SOPP__S_SETHALT
4178 
4179  void
4181  {
4183  }
4184 
4186  : Inst_SOPP(iFmt, "s_sleep")
4187  {
4188  setFlag(ALU);
4189  setFlag(Sleep);
4190  } // Inst_SOPP__S_SLEEP
4191 
4193  {
4194  } // ~Inst_SOPP__S_SLEEP
4195 
4196  // Cause a wave to sleep for (64 * SIMM16[2:0] + 1..64) clocks.
4197  void
4199  {
4201  gpuDynInst->wavefront()->setStatus(Wavefront::S_STALLED_SLEEP);
4202  // sleep duration is specified in multiples of 64 cycles
4203  gpuDynInst->wavefront()->setSleepTime(64 * simm16);
4204  } // execute
4205  // --- Inst_SOPP__S_SETPRIO class methods ---
4206 
4208  : Inst_SOPP(iFmt, "s_setprio")
4209  {
4210  } // Inst_SOPP__S_SETPRIO
4211 
4213  {
4214  } // ~Inst_SOPP__S_SETPRIO
4215 
4216  // User settable wave priority is set to SIMM16[1:0]. 0 = lowest,
4217  // 3 = highest.
4218  void
4220  {
4222  }
4223 
4225  : Inst_SOPP(iFmt, "s_sendmsg")
4226  {
4227  } // Inst_SOPP__S_SENDMSG
4228 
4230  {
4231  } // ~Inst_SOPP__S_SENDMSG
4232 
4233  void
4235  {
4237  }
4238 
4240  : Inst_SOPP(iFmt, "s_sendmsghalt")
4241  {
4242  } // Inst_SOPP__S_SENDMSGHALT
4243 
4245  {
4246  } // ~Inst_SOPP__S_SENDMSGHALT
4247 
4248  void
4250  {
4252  }
4253 
4255  : Inst_SOPP(iFmt, "s_trap")
4256  {
4257  } // Inst_SOPP__S_TRAP
4258 
4260  {
4261  } // ~Inst_SOPP__S_TRAP
4262 
4263  // Enter the trap handler.
4264  void
4266  {
4268  }
4269 
4271  : Inst_SOPP(iFmt, "s_icache_inv")
4272  {
4273  } // Inst_SOPP__S_ICACHE_INV
4274 
4276  {
4277  } // ~Inst_SOPP__S_ICACHE_INV
4278 
4279  // Invalidate entire L1 instruction cache.
4280  void
4282  {
4284  }
4285 
4287  : Inst_SOPP(iFmt, "s_incperflevel")
4288  {
4289  } // Inst_SOPP__S_INCPERFLEVEL
4290 
4292  {
4293  } // ~Inst_SOPP__S_INCPERFLEVEL
4294 
4295  void
4297  {
4299  }
4300 
4302  : Inst_SOPP(iFmt, "s_decperflevel")
4303  {
4304  } // Inst_SOPP__S_DECPERFLEVEL
4305 
4307  {
4308  } // ~Inst_SOPP__S_DECPERFLEVEL
4309 
4310  void
4312  {
4314  }
4315 
4317  : Inst_SOPP(iFmt, "s_ttracedata")
4318  {
4319  } // Inst_SOPP__S_TTRACEDATA
4320 
4322  {
4323  } // ~Inst_SOPP__S_TTRACEDATA
4324 
4325  void
4327  {
4329  }
4330 
4332  InFmt_SOPP *iFmt)
4333  : Inst_SOPP(iFmt, "s_cbranch_cdbgsys")
4334  {
4335  setFlag(Branch);
4336  } // Inst_SOPP__S_CBRANCH_CDBGSYS
4337 
4339  {
4340  } // ~Inst_SOPP__S_CBRANCH_CDBGSYS
4341 
4342  void
4344  {
4346  }
4347 
4349  InFmt_SOPP *iFmt)
4350  : Inst_SOPP(iFmt, "s_cbranch_cdbguser")
4351  {
4352  setFlag(Branch);
4353  } // Inst_SOPP__S_CBRANCH_CDBGUSER
4354 
4356  {
4357  } // ~Inst_SOPP__S_CBRANCH_CDBGUSER
4358 
4359  void
4361  {
4363  }
4364 
4366  InFmt_SOPP *iFmt)
4367  : Inst_SOPP(iFmt, "s_cbranch_cdbgsys_or_user")
4368  {
4369  setFlag(Branch);
4370  } // Inst_SOPP__S_CBRANCH_CDBGSYS_OR_USER
4371 
4374  {
4375  } // ~Inst_SOPP__S_CBRANCH_CDBGSYS_OR_USER
4376 
4377  void
4379  {
4381  }
4382 
4385  : Inst_SOPP(iFmt, "s_cbranch_cdbgsys_and_user")
4386  {
4387  setFlag(Branch);
4388  } // Inst_SOPP__S_CBRANCH_CDBGSYS_AND_USER
4389 
4392  {
4393  } // ~Inst_SOPP__S_CBRANCH_CDBGSYS_AND_USER
4394 
4395  void
4397  {
4399  }
4400 
4402  : Inst_SOPP(iFmt, "s_endpgm_saved")
4403  {
4404  } // Inst_SOPP__S_ENDPGM_SAVED
4405 
4407  {
4408  } // ~Inst_SOPP__S_ENDPGM_SAVED
4409 
4410  // End of program.
4411  void
4413  {
4415  }
4416 
4418  InFmt_SOPP *iFmt)
4419  : Inst_SOPP(iFmt, "s_set_gpr_idx_off")
4420  {
4421  } // Inst_SOPP__S_SET_GPR_IDX_OFF
4422 
4424  {
4425  } // ~Inst_SOPP__S_SET_GPR_IDX_OFF
4426 
4427  // MODE.gpr_idx_en = 0.
4428  // Clear GPR indexing mode. Vector operations after this will not perform
4429  // relative GPR addressing regardless of the contents of M0.
4430  void
4432  {
4434  }
4435 
4437  InFmt_SOPP *iFmt)
4438  : Inst_SOPP(iFmt, "s_set_gpr_idx_mode")
4439  {
4440  } // Inst_SOPP__S_SET_GPR_IDX_MODE
4441 
4443  {
4444  } // ~Inst_SOPP__S_SET_GPR_IDX_MODE
4445 
4446  // M0[15:12] = SIMM4.
4447  // Modify the mode used for vector GPR indexing.
4448  // The raw contents of the source field are read and used to set the enable
4449  // bits. SIMM4[0] = VSRC0_REL, SIMM4[1] = VSRC1_REL, SIMM4[2] = VSRC2_REL
4450  // and SIMM4[3] = VDST_REL.
4451  void
4453  {
4455  }
4456 
4458  : Inst_SMEM(iFmt, "s_load_dword")
4459  {
4460  setFlag(MemoryRef);
4461  setFlag(Load);
4462  } // Inst_SMEM__S_LOAD_DWORD
4463 
4465  {
4466  } // ~Inst_SMEM__S_LOAD_DWORD
4467 
4474  void
4476  {
4477  Wavefront *wf = gpuDynInst->wavefront();
4478  gpuDynInst->execUnitId = wf->execUnitId;
4479  gpuDynInst->latency.init(gpuDynInst->computeUnit());
4480  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
4481  ScalarRegU32 offset(0);
4482  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
4483 
4484  addr.read();
4485 
4486  if (instData.IMM) {
4487  offset = extData.OFFSET;
4488  } else {
4489  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
4490  off_sgpr.read();
4491  offset = off_sgpr.rawData();
4492  }
4493 
4494  calcAddr(gpuDynInst, addr, offset);
4495 
4496  gpuDynInst->computeUnit()->scalarMemoryPipe
4497  .getGMReqFIFO().push(gpuDynInst);
4498 
4499  wf->scalarRdGmReqsInPipe--;
4501  gpuDynInst->wavefront()->outstandingReqs++;
4502  gpuDynInst->wavefront()->validateRequestCounters();
4503  }
4504 
4505  void
4507  {
4508  initMemRead<1>(gpuDynInst);
4509  } // initiateAcc
4510 
4511  void
4513  {
4514  ScalarOperandU32 sdst(gpuDynInst, instData.SDATA);
4515  sdst.write();
4516  } // completeAcc
4517 
4519  : Inst_SMEM(iFmt, "s_load_dwordx2")
4520  {
4521  setFlag(MemoryRef);
4522  setFlag(Load);
4523  } // Inst_SMEM__S_LOAD_DWORDX2
4524 
4526  {
4527  } // ~Inst_SMEM__S_LOAD_DWORDX2
4528 
4533  void
4535  {
4536  Wavefront *wf = gpuDynInst->wavefront();
4537  gpuDynInst->execUnitId = wf->execUnitId;
4538  gpuDynInst->latency.init(gpuDynInst->computeUnit());
4539  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
4540  ScalarRegU32 offset(0);
4541  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
4542 
4543  addr.read();
4544 
4545  if (instData.IMM) {
4546  offset = extData.OFFSET;
4547  } else {
4548  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
4549  off_sgpr.read();
4550  offset = off_sgpr.rawData();
4551  }
4552 
4553  calcAddr(gpuDynInst, addr, offset);
4554 
4555  gpuDynInst->computeUnit()->scalarMemoryPipe.
4556  getGMReqFIFO().push(gpuDynInst);
4557 
4558  wf->scalarRdGmReqsInPipe--;
4560  gpuDynInst->wavefront()->outstandingReqs++;
4561  gpuDynInst->wavefront()->validateRequestCounters();
4562  }
4563 
4564  void
4566  {
4567  initMemRead<2>(gpuDynInst);
4568  } // initiateAcc
4569 
4570  void
4572  {
4573  ScalarOperandU64 sdst(gpuDynInst, instData.SDATA);
4574  sdst.write();
4575  } // completeAcc
4576 
4578  : Inst_SMEM(iFmt, "s_load_dwordx4")
4579  {
4580  setFlag(MemoryRef);
4581  setFlag(Load);
4582  } // Inst_SMEM__S_LOAD_DWORDX4
4583 
4585  {
4586  } // ~Inst_SMEM__S_LOAD_DWORDX4
4587 
4588  // Read 4 dwords from scalar data cache. See S_LOAD_DWORD for details on
4589  // the offset input.
4590  void
4592  {
4593  Wavefront *wf = gpuDynInst->wavefront();
4594  gpuDynInst->execUnitId = wf->execUnitId;
4595  gpuDynInst->latency.init(gpuDynInst->computeUnit());
4596  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
4597  ScalarRegU32 offset(0);
4598  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
4599 
4600  addr.read();
4601 
4602  if (instData.IMM) {
4603  offset = extData.OFFSET;
4604  } else {
4605  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
4606  off_sgpr.read();
4607  offset = off_sgpr.rawData();
4608  }
4609 
4610  calcAddr(gpuDynInst, addr, offset);
4611 
4612  gpuDynInst->computeUnit()->scalarMemoryPipe.
4613  getGMReqFIFO().push(gpuDynInst);
4614 
4615  wf->scalarRdGmReqsInPipe--;
4617  gpuDynInst->wavefront()->outstandingReqs++;
4618  gpuDynInst->wavefront()->validateRequestCounters();
4619  }
4620 
4621  void
4623  {
4624  initMemRead<4>(gpuDynInst);
4625  } // initiateAcc
4626 
4627  void
4629  {
4630  ScalarOperandU128 sdst(gpuDynInst, instData.SDATA);
4631  sdst.write();
4632  } // completeAcc
4633 
4635  : Inst_SMEM(iFmt, "s_load_dwordx8")
4636  {
4637  setFlag(MemoryRef);
4638  setFlag(Load);
4639  } // Inst_SMEM__S_LOAD_DWORDX8
4640 
4642  {
4643  } // ~Inst_SMEM__S_LOAD_DWORDX8
4644 
4645  // Read 8 dwords from scalar data cache. See S_LOAD_DWORD for details on
4646  // the offset input.
4647  void
4649  {
4650  Wavefront *wf = gpuDynInst->wavefront();
4651  gpuDynInst->execUnitId = wf->execUnitId;
4652  gpuDynInst->latency.init(gpuDynInst->computeUnit());
4653  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
4654  ScalarRegU32 offset(0);
4655  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
4656 
4657  addr.read();
4658 
4659  if (instData.IMM) {
4660  offset = extData.OFFSET;
4661  } else {
4662  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
4663  off_sgpr.read();
4664  offset = off_sgpr.rawData();
4665  }
4666 
4667  calcAddr(gpuDynInst, addr, offset);
4668 
4669  gpuDynInst->computeUnit()->scalarMemoryPipe.
4670  getGMReqFIFO().push(gpuDynInst);
4671 
4672  wf->scalarRdGmReqsInPipe--;
4674  gpuDynInst->wavefront()->outstandingReqs++;
4675  gpuDynInst->wavefront()->validateRequestCounters();
4676  }
4677 
4678  void
4680  {
4681  initMemRead<8>(gpuDynInst);
4682  } // initiateAcc
4683 
4684  void
4686  {
4687  ScalarOperandU256 sdst(gpuDynInst, instData.SDATA);
4688  sdst.write();
4689  } // completeAcc
4690 
4692  : Inst_SMEM(iFmt, "s_load_dwordx16")
4693  {
4694  setFlag(MemoryRef);
4695  setFlag(Load);
4696  } // Inst_SMEM__S_LOAD_DWORDX16
4697 
4699  {
4700  } // ~Inst_SMEM__S_LOAD_DWORDX16
4701 
4702  // Read 16 dwords from scalar data cache. See S_LOAD_DWORD for details on
4703  // the offset input.
4704  void
4706  {
4707  Wavefront *wf = gpuDynInst->wavefront();
4708  gpuDynInst->execUnitId = wf->execUnitId;
4709  gpuDynInst->latency.init(gpuDynInst->computeUnit());
4710  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
4711  ScalarRegU32 offset(0);
4712  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
4713 
4714  addr.read();
4715 
4716  if (instData.IMM) {
4717  offset = extData.OFFSET;
4718  } else {
4719  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
4720  off_sgpr.read();
4721  offset = off_sgpr.rawData();
4722  }
4723 
4724  calcAddr(gpuDynInst, addr, offset);
4725 
4726  gpuDynInst->computeUnit()->scalarMemoryPipe.
4727  getGMReqFIFO().push(gpuDynInst);
4728 
4729  wf->scalarRdGmReqsInPipe--;
4731  gpuDynInst->wavefront()->outstandingReqs++;
4732  gpuDynInst->wavefront()->validateRequestCounters();
4733  }
4734 
4735  void
4737  {
4738  initMemRead<16>(gpuDynInst);
4739  } // initiateAcc
4740 
4741  void
4743  {
4744  ScalarOperandU512 sdst(gpuDynInst, instData.SDATA);
4745  sdst.write();
4746  } // completeAcc
4747 
4749  InFmt_SMEM *iFmt)
4750  : Inst_SMEM(iFmt, "s_buffer_load_dword")
4751  {
4752  setFlag(MemoryRef);
4753  setFlag(Load);
4754  } // Inst_SMEM__S_BUFFER_LOAD_DWORD
4755 
4757  {
4758  } // ~Inst_SMEM__S_BUFFER_LOAD_DWORD
4759 
4760  // Read 1 dword from scalar data cache. See S_LOAD_DWORD for details on the
4761  // offset input.
4762  void
4764  {
4765  Wavefront *wf = gpuDynInst->wavefront();
4766  gpuDynInst->execUnitId = wf->execUnitId;
4767  gpuDynInst->latency.init(gpuDynInst->computeUnit());
4768  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
4769  ScalarRegU32 offset(0);
4770  ConstScalarOperandU128 rsrcDesc(gpuDynInst, instData.SBASE);
4771 
4772  rsrcDesc.read();
4773 
4774  if (instData.IMM) {
4775  offset = extData.OFFSET;
4776  } else {
4777  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
4778  off_sgpr.read();
4779  offset = off_sgpr.rawData();
4780  }
4781 
4782  calcAddr(gpuDynInst, rsrcDesc, offset);
4783 
4784  gpuDynInst->computeUnit()->scalarMemoryPipe
4785  .getGMReqFIFO().push(gpuDynInst);
4786 
4787  wf->scalarRdGmReqsInPipe--;
4789  gpuDynInst->wavefront()->outstandingReqs++;
4790  gpuDynInst->wavefront()->validateRequestCounters();
4791  } // execute
4792 
4793  void
4795  {
4796  initMemRead<1>(gpuDynInst);
4797  } // initiateAcc
4798 
4799  void
4801  {
4802  // 1 request, size 32
4803  ScalarOperandU32 sdst(gpuDynInst, instData.SDATA);
4804  sdst.write();
4805  } // completeAcc
4806 
4808  InFmt_SMEM *iFmt)
4809  : Inst_SMEM(iFmt, "s_buffer_load_dwordx2")
4810  {
4811  setFlag(MemoryRef);
4812  setFlag(Load);
4813  } // Inst_SMEM__S_BUFFER_LOAD_DWORDX2
4814 
4816  {
4817  } // ~Inst_SMEM__S_BUFFER_LOAD_DWORDX2
4818 
4819  // Read 2 dwords from scalar data cache. See S_LOAD_DWORD for details on
4820  // the offset input.
4821  void
4823  {
4824  Wavefront *wf = gpuDynInst->wavefront();
4825  gpuDynInst->execUnitId = wf->execUnitId;
4826  gpuDynInst->latency.init(gpuDynInst->computeUnit());
4827  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
4828  ScalarRegU32 offset(0);
4829  ConstScalarOperandU128 rsrcDesc(gpuDynInst, instData.SBASE);
4830 
4831  rsrcDesc.read();
4832 
4833  if (instData.IMM) {
4834  offset = extData.OFFSET;
4835  } else {
4836  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
4837  off_sgpr.read();
4838  offset = off_sgpr.rawData();
4839  }
4840 
4841  calcAddr(gpuDynInst, rsrcDesc, offset);
4842 
4843  gpuDynInst->computeUnit()->scalarMemoryPipe
4844  .getGMReqFIFO().push(gpuDynInst);
4845 
4846  wf->scalarRdGmReqsInPipe--;
4848  gpuDynInst->wavefront()->outstandingReqs++;
4849  gpuDynInst->wavefront()->validateRequestCounters();
4850  } // execute
4851 
4852  void
4854  {
4855  initMemRead<2>(gpuDynInst);
4856  } // initiateAcc
4857 
4858  void
4860  {
4861  // use U64 because 2 requests, each size 32
4862  ScalarOperandU64 sdst(gpuDynInst, instData.SDATA);
4863  sdst.write();
4864  } // completeAcc
4865 
4867  InFmt_SMEM *iFmt)
4868  : Inst_SMEM(iFmt, "s_buffer_load_dwordx4")
4869  {
4870  setFlag(MemoryRef);
4871  setFlag(Load);
4872  } // Inst_SMEM__S_BUFFER_LOAD_DWORDX4
4873 
4875  {
4876  } // ~Inst_SMEM__S_BUFFER_LOAD_DWORDX4
4877 
4878  // Read 4 dwords from scalar data cache. See S_LOAD_DWORD for details on
4879  // the offset input.
4880  void
4882  {
4883  Wavefront *wf = gpuDynInst->wavefront();
4884  gpuDynInst->execUnitId = wf->execUnitId;
4885  gpuDynInst->latency.init(gpuDynInst->computeUnit());
4886  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
4887  ScalarRegU32 offset(0);
4888  ConstScalarOperandU128 rsrcDesc(gpuDynInst, instData.SBASE);
4889 
4890  rsrcDesc.read();
4891 
4892  if (instData.IMM) {
4893  offset = extData.OFFSET;
4894  } else {
4895  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
4896  off_sgpr.read();
4897  offset = off_sgpr.rawData();
4898  }
4899 
4900  calcAddr(gpuDynInst, rsrcDesc, offset);
4901 
4902  gpuDynInst->computeUnit()->scalarMemoryPipe
4903  .getGMReqFIFO().push(gpuDynInst);
4904 
4905  wf->scalarRdGmReqsInPipe--;
4907  gpuDynInst->wavefront()->outstandingReqs++;
4908  gpuDynInst->wavefront()->validateRequestCounters();
4909  } // execute
4910 
4911  void
4913  {
4914  initMemRead<4>(gpuDynInst);
4915  } // initiateAcc
4916 
4917  void
4919  {
4920  // 4 requests, each size 32
4921  ScalarOperandU128 sdst(gpuDynInst, instData.SDATA);
4922  sdst.write();
4923  } // completeAcc
4924 
4926  InFmt_SMEM *iFmt)
4927  : Inst_SMEM(iFmt, "s_buffer_load_dwordx8")
4928  {
4929  setFlag(MemoryRef);
4930  setFlag(Load);
4931  } // Inst_SMEM__S_BUFFER_LOAD_DWORDX8
4932 
4934  {
4935  } // ~Inst_SMEM__S_BUFFER_LOAD_DWORDX8
4936 
4937  // Read 8 dwords from scalar data cache. See S_LOAD_DWORD for details on
4938  // the offset input.
4939  void
4941  {
4942  Wavefront *wf = gpuDynInst->wavefront();
4943  gpuDynInst->execUnitId = wf->execUnitId;
4944  gpuDynInst->latency.init(gpuDynInst->computeUnit());
4945  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
4946  ScalarRegU32 offset(0);
4947  ConstScalarOperandU128 rsrcDesc(gpuDynInst, instData.SBASE);
4948 
4949  rsrcDesc.read();
4950 
4951  if (instData.IMM) {
4952  offset = extData.OFFSET;
4953  } else {
4954  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
4955  off_sgpr.read();
4956  offset = off_sgpr.rawData();
4957  }
4958 
4959  calcAddr(gpuDynInst, rsrcDesc, offset);
4960 
4961  gpuDynInst->computeUnit()->scalarMemoryPipe
4962  .getGMReqFIFO().push(gpuDynInst);
4963 
4964  wf->scalarRdGmReqsInPipe--;
4966  gpuDynInst->wavefront()->outstandingReqs++;
4967  gpuDynInst->wavefront()->validateRequestCounters();
4968  } // execute
4969 
4970  void
4972  {
4973  initMemRead<8>(gpuDynInst);
4974  } // initiateAcc
4975 
4976  void
4978  {
4979  // 8 requests, each size 32
4980  ScalarOperandU256 sdst(gpuDynInst, instData.SDATA);
4981  sdst.write();
4982  } // completeAcc
4983 
4985  InFmt_SMEM *iFmt)
4986  : Inst_SMEM(iFmt, "s_buffer_load_dwordx16")
4987  {
4988  setFlag(MemoryRef);
4989  setFlag(Load);
4990  } // Inst_SMEM__S_BUFFER_LOAD_DWORDX16
4991 
4993  {
4994  } // ~Inst_SMEM__S_BUFFER_LOAD_DWORDX16
4995 
4996  // Read 16 dwords from scalar data cache. See S_LOAD_DWORD for details on
4997  // the offset input.
4998  void
5000  {
5001  Wavefront *wf = gpuDynInst->wavefront();
5002  gpuDynInst->execUnitId = wf->execUnitId;
5003  gpuDynInst->latency.init(gpuDynInst->computeUnit());
5004  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
5005  ScalarRegU32 offset(0);
5006  ConstScalarOperandU128 rsrcDesc(gpuDynInst, instData.SBASE);
5007 
5008  rsrcDesc.read();
5009 
5010  if (instData.IMM) {
5011  offset = extData.OFFSET;
5012  } else {
5013  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
5014  off_sgpr.read();
5015  offset = off_sgpr.rawData();
5016  }
5017 
5018  calcAddr(gpuDynInst, rsrcDesc, offset);
5019 
5020  gpuDynInst->computeUnit()->scalarMemoryPipe
5021  .getGMReqFIFO().push(gpuDynInst);
5022 
5023  wf->scalarRdGmReqsInPipe--;
5025  gpuDynInst->wavefront()->outstandingReqs++;
5026  gpuDynInst->wavefront()->validateRequestCounters();
5027  } // execute
5028 
5029  void
5031  {
5032  initMemRead<16>(gpuDynInst);
5033  } // initiateAcc
5034 
5035  void
5037  {
5038  // 16 requests, each size 32
5039  ScalarOperandU512 sdst(gpuDynInst, instData.SDATA);
5040  sdst.write();
5041  } // completeAcc
5042 
5044  : Inst_SMEM(iFmt, "s_store_dword")
5045  {
5046  setFlag(MemoryRef);
5047  setFlag(Store);
5048  } // Inst_SMEM__S_STORE_DWORD
5049 
5051  {
5052  } // ~Inst_SMEM__S_STORE_DWORD
5053 
5054  // Write 1 dword to scalar data cache.
5055  // If the offset is specified as an SGPR, the SGPR contains an unsigned
5056  // BYTE offset (the 2 LSBs are ignored).
5057  // If the offset is specified as an immediate 20-bit constant, the
5058  // constant is an unsigned BYTE offset.
5059  void
5061  {
5062  Wavefront *wf = gpuDynInst->wavefront();
5063  gpuDynInst->execUnitId = wf->execUnitId;
5064  gpuDynInst->latency.init(gpuDynInst->computeUnit());
5065  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
5066  ScalarRegU32 offset(0);
5067  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
5068 
5069  addr.read();
5070 
5071  if (instData.IMM) {
5072  offset = extData.OFFSET;
5073  } else {
5074  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
5075  off_sgpr.read();
5076  offset = off_sgpr.rawData();
5077  }
5078 
5079  calcAddr(gpuDynInst, addr, offset);
5080 
5081  gpuDynInst->computeUnit()->scalarMemoryPipe.
5082  getGMReqFIFO().push(gpuDynInst);
5083 
5084  wf->scalarWrGmReqsInPipe--;
5086  gpuDynInst->wavefront()->outstandingReqs++;
5087  gpuDynInst->wavefront()->validateRequestCounters();
5088  }
5089 
5090  void
5092  {
5093  ConstScalarOperandU32 sdata(gpuDynInst, instData.SDATA);
5094  sdata.read();
5095  std::memcpy((void*)gpuDynInst->scalar_data, sdata.rawDataPtr(),
5096  sizeof(ScalarRegU32));
5097  initMemWrite<1>(gpuDynInst);
5098  } // initiateAcc
5099 
5100  void
5102  {
5103  } // completeAcc
5104 
5106  : Inst_SMEM(iFmt, "s_store_dwordx2")
5107  {
5108  setFlag(MemoryRef);
5109  setFlag(Store);
5110  } // Inst_SMEM__S_STORE_DWORDX2
5111 
5113  {
5114  } // ~Inst_SMEM__S_STORE_DWORDX2
5115 
5116  // Write 2 dwords to scalar data cache. See S_STORE_DWORD for details on
5117  // the offset input.
5118  void
5120  {
5121  Wavefront *wf = gpuDynInst->wavefront();
5122  gpuDynInst->execUnitId = wf->execUnitId;
5123  gpuDynInst->latency.init(gpuDynInst->computeUnit());
5124  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
5125  ScalarRegU32 offset(0);
5126  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
5127 
5128  addr.read();
5129 
5130  if (instData.IMM) {
5131  offset = extData.OFFSET;
5132  } else {
5133  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
5134  off_sgpr.read();
5135  offset = off_sgpr.rawData();
5136  }
5137 
5138  calcAddr(gpuDynInst, addr, offset);
5139 
5140  gpuDynInst->computeUnit()->scalarMemoryPipe.
5141  getGMReqFIFO().push(gpuDynInst);
5142 
5143  wf->scalarWrGmReqsInPipe--;
5145  gpuDynInst->wavefront()->outstandingReqs++;
5146  gpuDynInst->wavefront()->validateRequestCounters();
5147  }
5148 
5149  void
5151  {
5152  ConstScalarOperandU64 sdata(gpuDynInst, instData.SDATA);
5153  sdata.read();
5154  std::memcpy((void*)gpuDynInst->scalar_data, sdata.rawDataPtr(),
5155  sizeof(ScalarRegU64));
5156  initMemWrite<2>(gpuDynInst);
5157  } // initiateAcc
5158 
5159  void
5161  {
5162  } // completeAcc
5163 
5165  : Inst_SMEM(iFmt, "s_store_dwordx4")
5166  {
5167  setFlag(MemoryRef);
5168  setFlag(Store);
5169  } // Inst_SMEM__S_STORE_DWORDX4
5170 
5172  {
5173  } // ~Inst_SMEM__S_STORE_DWORDX4
5174 
5175  // Write 4 dwords to scalar data cache. See S_STORE_DWORD for details on
5176  // the offset input.
5177  void
5179  {
5180  Wavefront *wf = gpuDynInst->wavefront();
5181  gpuDynInst->execUnitId = wf->execUnitId;
5182  gpuDynInst->latency.init(gpuDynInst->computeUnit());
5183  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
5184  ScalarRegU32 offset(0);
5185  ConstScalarOperandU64 addr(gpuDynInst, instData.SBASE << 1);
5186 
5187  addr.read();
5188 
5189  if (instData.IMM) {
5190  offset = extData.OFFSET;
5191  } else {
5192  ConstScalarOperandU32 off_sgpr(gpuDynInst, extData.OFFSET);
5193  off_sgpr.read();
5194  offset = off_sgpr.rawData();
5195  }
5196 
5197  calcAddr(gpuDynInst, addr, offset);
5198 
5199  gpuDynInst->computeUnit()->scalarMemoryPipe.
5200  getGMReqFIFO().push(gpuDynInst);
5201 
5202  wf->scalarWrGmReqsInPipe--;
5204  gpuDynInst->wavefront()->outstandingReqs++;
5205  gpuDynInst->wavefront()->validateRequestCounters();
5206  }
5207 
5208  void
5210  {
5211  ConstScalarOperandU128 sdata(gpuDynInst, instData.SDATA);
5212  sdata.read();
5213  std::memcpy((void*)gpuDynInst->scalar_data, sdata.rawDataPtr(),
5214  4 * sizeof(ScalarRegU32));
5215  initMemWrite<4>(gpuDynInst);
5216  } // initiateAcc
5217 
5218  void
5220  {
5221  } // completeAcc
5222 
5224  InFmt_SMEM *iFmt)
5225  : Inst_SMEM(iFmt, "s_buffer_store_dword")
5226  {
5227  setFlag(MemoryRef);
5228  setFlag(Store);
5229  } // Inst_SMEM__S_BUFFER_STORE_DWORD
5230 
5232  {
5233  } // ~Inst_SMEM__S_BUFFER_STORE_DWORD
5234 
5235  // Write 1 dword to scalar data cache. See S_STORE_DWORD for details on the
5236  // offset input.
5237  void
5239  {
5241  }
5242 
5243  void
5245  {
5246  } // initiateAcc
5247 
5248  void
5250  {
5251  } // completeAcc
5252 
5254  InFmt_SMEM *iFmt)
5255  : Inst_SMEM(iFmt, "s_buffer_store_dwordx2")
5256  {
5257  setFlag(MemoryRef);
5258  setFlag(Store);
5259  } // Inst_SMEM__S_BUFFER_STORE_DWORDX2
5260 
5262  {
5263  } // ~Inst_SMEM__S_BUFFER_STORE_DWORDX2
5264 
5265  // Write 2 dwords to scalar data cache. See S_STORE_DWORD for details on
5266  // the offset input.
5267  void
5269  {
5271  }
5272 
5273  void
5275  {
5276  } // initiateAcc
5277 
5278  void
5280  {
5281  } // completeAcc
5282 
5284  InFmt_SMEM *iFmt)
5285  : Inst_SMEM(iFmt, "s_buffer_store_dwordx4")
5286  {
5287  setFlag(MemoryRef);
5288  setFlag(Store);
5289  } // Inst_SMEM__S_BUFFER_STORE_DWORDX4
5290 
5292  {
5293  } // ~Inst_SMEM__S_BUFFER_STORE_DWORDX4
5294 
5295  // Write 4 dwords to scalar data cache. See S_STORE_DWORD for details on
5296  // the offset input.
5297  void
5299  {
5301  }
5302 
5303  void
5305  {
5306  } // initiateAcc
5307 
5308  void
5310  {
5311  } // completeAcc
5312 
5314  : Inst_SMEM(iFmt, "s_dcache_inv")
5315  {
5316  } // Inst_SMEM__S_DCACHE_INV
5317 
5319  {
5320  } // ~Inst_SMEM__S_DCACHE_INV
5321 
5322  // Invalidate the scalar data cache.
5323  void
5325  {
5327  }
5328 
5330  : Inst_SMEM(iFmt, "s_dcache_wb")
5331  {
5332  } // Inst_SMEM__S_DCACHE_WB
5333 
5335  {
5336  } // ~Inst_SMEM__S_DCACHE_WB
5337 
5338  // Write back dirty data in the scalar data cache.
5339  void
5341  {
5343  }
5344 
5346  : Inst_SMEM(iFmt, "s_dcache_inv_vol")
5347  {
5348  } // Inst_SMEM__S_DCACHE_INV_VOL
5349 
5351  {
5352  } // ~Inst_SMEM__S_DCACHE_INV_VOL
5353 
5354  // Invalidate the scalar data cache volatile lines.
5355  void
5357  {
5359  }
5360 
5362  : Inst_SMEM(iFmt, "s_dcache_wb_vol")
5363  {
5364  } // Inst_SMEM__S_DCACHE_WB_VOL
5365 
5367  {
5368  } // ~Inst_SMEM__S_DCACHE_WB_VOL
5369 
5370  // Write back dirty data in the scalar data cache volatile lines.
5371  void
5373  {
5375  }
5376 
5378  : Inst_SMEM(iFmt, "s_memtime")
5379  {
5380  } // Inst_SMEM__S_MEMTIME
5381 
5383  {
5384  } // ~Inst_SMEM__S_MEMTIME
5385 
5386  // Return current 64-bit timestamp.
5387  void
5389  {
5391  }
5392 
5394  : Inst_SMEM(iFmt, "s_memrealtime")
5395  {
5396  } // Inst_SMEM__S_MEMREALTIME
5397 
5399  {
5400  } // ~Inst_SMEM__S_MEMREALTIME
5401 
5402  // Return current 64-bit RTC.
5403  void
5405  {
5407  }
5408 
5410  : Inst_SMEM(iFmt, "s_atc_probe")
5411  {
5412  } // Inst_SMEM__S_ATC_PROBE
5413 
5415  {
5416  } // ~Inst_SMEM__S_ATC_PROBE
5417 
5418  void
5420  {
5422  }
5423 
5425  InFmt_SMEM *iFmt)
5426  : Inst_SMEM(iFmt, "s_atc_probe_buffer")
5427  {
5428  } // Inst_SMEM__S_ATC_PROBE_BUFFER
5429 
5431  {
5432  } // ~Inst_SMEM__S_ATC_PROBE_BUFFER
5433 
5434  void
5436  {
5438  }
5439 
5441  : Inst_VOP2(iFmt, "v_cndmask_b32")
5442  {
5443  setFlag(ALU);
5444  setFlag(ReadsVCC);
5445  } // Inst_VOP2__V_CNDMASK_B32
5446 
5448  {
5449  } // ~Inst_VOP2__V_CNDMASK_B32
5450 
5451  // D.u = (VCC[i] ? S1.u : S0.u) (i = threadID in wave); VOP3: specify VCC
5452  // as a scalar GPR in S2.
5453  void
5455  {
5456  Wavefront *wf = gpuDynInst->wavefront();
5457  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
5458  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
5459  VecOperandU32 vdst(gpuDynInst, instData.VDST);
5460  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
5461 
5462  src0.readSrc();
5463  src1.read();
5464  vcc.read();
5465 
5466  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5467  if (wf->execMask(lane)) {
5468  vdst[lane]
5469  = bits(vcc.rawData(), lane) ? src1[lane] : src0[lane];
5470  }
5471  }
5472 
5473  vdst.write();
5474  }
5475 
5477  : Inst_VOP2(iFmt, "v_add_f32")
5478  {
5479  setFlag(ALU);
5480  setFlag(F32);
5481  } // Inst_VOP2__V_ADD_F32
5482 
5484  {
5485  } // ~Inst_VOP2__V_ADD_F32
5486 
5487  // D.f = S0.f + S1.f.
5488  void
5490  {
5491  Wavefront *wf = gpuDynInst->wavefront();
5492  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
5493  VecOperandF32 src1(gpuDynInst, instData.VSRC1);
5494  VecOperandF32 vdst(gpuDynInst, instData.VDST);
5495 
5496  src0.readSrc();
5497  src1.read();
5498 
5499  if (isDPPInst()) {
5500  VecOperandF32 src0_dpp(gpuDynInst, extData.iFmt_VOP_DPP.SRC0);
5501  src0_dpp.read();
5502 
5503  DPRINTF(GCN3, "Handling V_ADD_F32 SRC DPP. SRC0: register v[%d], "
5504  "DPP_CTRL: 0x%#x, SRC0_ABS: %d, SRC0_NEG: %d, "
5505  "SRC1_ABS: %d, SRC1_NEG: %d, BOUND_CTRL: %d, "
5506  "BANK_MASK: %d, ROW_MASK: %d\n", extData.iFmt_VOP_DPP.SRC0,
5515 
5516  processDPP(gpuDynInst, extData.iFmt_VOP_DPP, src0_dpp, src1);
5517 
5518  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5519  if (wf->execMask(lane)) {
5520  vdst[lane] = src0_dpp[lane] + src1[lane];
5521  }
5522  }
5523  } else {
5524  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5525  if (wf->execMask(lane)) {
5526  vdst[lane] = src0[lane] + src1[lane];
5527  }
5528  }
5529  }
5530 
5531  vdst.write();
5532  }
5533 
5535  : Inst_VOP2(iFmt, "v_sub_f32")
5536  {
5537  setFlag(ALU);
5538  setFlag(F32);
5539  } // Inst_VOP2__V_SUB_F32
5540 
5542  {
5543  } // ~Inst_VOP2__V_SUB_F32
5544 
5545  // D.f = S0.f - S1.f.
5546  void
5548  {
5549  Wavefront *wf = gpuDynInst->wavefront();
5550  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
5551  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
5552  VecOperandF32 vdst(gpuDynInst, instData.VDST);
5553 
5554  src0.readSrc();
5555  src1.read();
5556 
5557  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5558  if (wf->execMask(lane)) {
5559  vdst[lane] = src0[lane] - src1[lane];
5560  }
5561  }
5562 
5563  vdst.write();
5564  }
5565 
5567  : Inst_VOP2(iFmt, "v_subrev_f32")
5568  {
5569  setFlag(ALU);
5570  setFlag(F32);
5571  } // Inst_VOP2__V_SUBREV_F32
5572 
5574  {
5575  } // ~Inst_VOP2__V_SUBREV_F32
5576 
5577  // D.f = S1.f - S0.f.
5578  void
5580  {
5581  Wavefront *wf = gpuDynInst->wavefront();
5582  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
5583  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
5584  VecOperandF32 vdst(gpuDynInst, instData.VDST);
5585 
5586  src0.readSrc();
5587  src1.read();
5588 
5589  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5590  if (wf->execMask(lane)) {
5591  vdst[lane] = src1[lane] - src0[lane];
5592  }
5593  }
5594 
5595  vdst.write();
5596  }
5597 
5599  : Inst_VOP2(iFmt, "v_mul_legacy_f32")
5600  {
5601  setFlag(ALU);
5602  setFlag(F32);
5603  } // Inst_VOP2__V_MUL_LEGACY_F32
5604 
5606  {
5607  } // ~Inst_VOP2__V_MUL_LEGACY_F32
5608 
5609  // D.f = S0.f * S1.f
5610  void
5612  {
5613  Wavefront *wf = gpuDynInst->wavefront();
5614  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
5615  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
5616  VecOperandF32 vdst(gpuDynInst, instData.VDST);
5617 
5618  src0.readSrc();
5619  src1.read();
5620 
5621  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5622  if (wf->execMask(lane)) {
5623  vdst[lane] = src0[lane] * src1[lane];
5624  }
5625  }
5626 
5627  vdst.write();
5628  }
5629 
5631  : Inst_VOP2(iFmt, "v_mul_f32")
5632  {
5633  setFlag(ALU);
5634  setFlag(F32);
5635  } // Inst_VOP2__V_MUL_F32
5636 
5638  {
5639  } // ~Inst_VOP2__V_MUL_F32
5640 
5641  // D.f = S0.f * S1.f.
5642  void
5644  {
5645  Wavefront *wf = gpuDynInst->wavefront();
5646  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
5647  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
5648  VecOperandF32 vdst(gpuDynInst, instData.VDST);
5649 
5650  src0.readSrc();
5651  src1.read();
5652 
5653  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5654  if (wf->execMask(lane)) {
5655  if (std::isnan(src0[lane]) ||
5656  std::isnan(src1[lane])) {
5657  vdst[lane] = NAN;
5658  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
5659  std::fpclassify(src0[lane]) == FP_ZERO) &&
5660  !std::signbit(src0[lane])) {
5661  if (std::isinf(src1[lane])) {
5662  vdst[lane] = NAN;
5663  } else if (!std::signbit(src1[lane])) {
5664  vdst[lane] = +0.0;
5665  } else {
5666  vdst[lane] = -0.0;
5667  }
5668  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
5669  std::fpclassify(src0[lane]) == FP_ZERO) &&
5670  std::signbit(src0[lane])) {
5671  if (std::isinf(src1[lane])) {
5672  vdst[lane] = NAN;
5673  } else if (std::signbit(src1[lane])) {
5674  vdst[lane] = +0.0;
5675  } else {
5676  vdst[lane] = -0.0;
5677  }
5678  } else if (std::isinf(src0[lane]) &&
5679  !std::signbit(src0[lane])) {
5680  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
5681  std::fpclassify(src1[lane]) == FP_ZERO) {
5682  vdst[lane] = NAN;
5683  } else if (!std::signbit(src1[lane])) {
5684  vdst[lane] = +INFINITY;
5685  } else {
5686  vdst[lane] = -INFINITY;
5687  }
5688  } else if (std::isinf(src0[lane]) &&
5689  std::signbit(src0[lane])) {
5690  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
5691  std::fpclassify(src1[lane]) == FP_ZERO) {
5692  vdst[lane] = NAN;
5693  } else if (std::signbit(src1[lane])) {
5694  vdst[lane] = +INFINITY;
5695  } else {
5696  vdst[lane] = -INFINITY;
5697  }
5698  } else {
5699  vdst[lane] = src0[lane] * src1[lane];
5700  }
5701  }
5702  }
5703 
5704  vdst.write();
5705  }
5706 
5708  : Inst_VOP2(iFmt, "v_mul_i32_i24")
5709  {
5710  setFlag(ALU);
5711  } // Inst_VOP2__V_MUL_I32_I24
5712 
5714  {
5715  } // ~Inst_VOP2__V_MUL_I32_I24
5716 
5717  // D.i = S0.i[23:0] * S1.i[23:0].
5718  void
5720  {
5721  Wavefront *wf = gpuDynInst->wavefront();
5722  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
5723  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
5724  VecOperandI32 vdst(gpuDynInst, instData.VDST);
5725 
5726  src0.readSrc();
5727  src1.read();
5728 
5729  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5730  if (wf->execMask(lane)) {
5731  vdst[lane] = sext<24>(bits(src0[lane], 23, 0))
5732  * sext<24>(bits(src1[lane], 23, 0));
5733  }
5734  }
5735 
5736  vdst.write();
5737  }
5738 
5740  : Inst_VOP2(iFmt, "v_mul_hi_i32_i24")
5741  {
5742  setFlag(ALU);
5743  } // Inst_VOP2__V_MUL_HI_I32_I24
5744 
5746  {
5747  } // ~Inst_VOP2__V_MUL_HI_I32_I24
5748 
5749  // D.i = (S0.i[23:0] * S1.i[23:0]) >> 32.
5750  void
5752  {
5753  Wavefront *wf = gpuDynInst->wavefront();
5754  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
5755  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
5756  VecOperandI32 vdst(gpuDynInst, instData.VDST);
5757 
5758  src0.readSrc();
5759  src1.read();
5760 
5761  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5762  if (wf->execMask(lane)) {
5763  VecElemI64 tmp_src0
5764  = (VecElemI64)sext<24>(bits(src0[lane], 23, 0));
5765  VecElemI64 tmp_src1
5766  = (VecElemI64)sext<24>(bits(src1[lane], 23, 0));
5767 
5768  vdst[lane] = (VecElemI32)((tmp_src0 * tmp_src1) >> 32);
5769  }
5770  }
5771 
5772  vdst.write();
5773  }
5774 
5776  : Inst_VOP2(iFmt, "v_mul_u32_u24")
5777  {
5778  setFlag(ALU);
5779  } // Inst_VOP2__V_MUL_U32_U24
5780 
5782  {
5783  } // ~Inst_VOP2__V_MUL_U32_U24
5784 
5785  // D.u = S0.u[23:0] * S1.u[23:0].
5786  void
5788  {
5789  Wavefront *wf = gpuDynInst->wavefront();
5790  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
5791  VecOperandU32 src1(gpuDynInst, instData.VSRC1);
5792  VecOperandU32 vdst(gpuDynInst, instData.VDST);
5793 
5794  src0.readSrc();
5795  src1.read();
5796 
5797  if (isSDWAInst()) {
5798  VecOperandU32 src0_sdwa(gpuDynInst, extData.iFmt_VOP_SDWA.SRC0);
5799  // use copies of original src0, src1, and dest during selecting
5800  VecOperandU32 origSrc0_sdwa(gpuDynInst,
5802  VecOperandU32 origSrc1(gpuDynInst, instData.VSRC1);
5803  VecOperandU32 origVdst(gpuDynInst, instData.VDST);
5804 
5805  src0_sdwa.read();
5806  origSrc0_sdwa.read();
5807  origSrc1.read();
5808 
5809  DPRINTF(GCN3, "Handling V_MUL_U32_U24 SRC SDWA. SRC0: register "
5810  "v[%d], DST_SEL: %d, DST_UNUSED: %d, CLAMP: %d, SRC0_SEL: "
5811  "%d, SRC0_SEXT: %d, SRC0_NEG: %d, SRC0_ABS: %d, SRC1_SEL: "
5812  "%d, SRC1_SEXT: %d, SRC1_NEG: %d, SRC1_ABS: %d\n",
5824 
5825  processSDWA_src(extData.iFmt_VOP_SDWA, src0_sdwa, origSrc0_sdwa,
5826  src1, origSrc1);
5827 
5828  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5829  if (wf->execMask(lane)) {
5830  vdst[lane] = bits(src0_sdwa[lane], 23, 0) *
5831  bits(src1[lane], 23, 0);
5832  origVdst[lane] = vdst[lane]; // keep copy consistent
5833  }
5834  }
5835 
5836  processSDWA_dst(extData.iFmt_VOP_SDWA, vdst, origVdst);
5837  } else {
5838  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5839  if (wf->execMask(lane)) {
5840  vdst[lane] = bits(src0[lane], 23, 0) *
5841  bits(src1[lane], 23, 0);
5842  }
5843  }
5844  }
5845 
5846 
5847  vdst.write();
5848  }
5849 
5851  : Inst_VOP2(iFmt, "v_mul_hi_u32_u24")
5852  {
5853  setFlag(ALU);
5854  } // Inst_VOP2__V_MUL_HI_U32_U24
5855 
5857  {
5858  } // ~Inst_VOP2__V_MUL_HI_U32_U24
5859 
5860  // D.i = (S0.u[23:0] * S1.u[23:0]) >> 32.
5861  void
5863  {
5864  Wavefront *wf = gpuDynInst->wavefront();
5865  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
5866  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
5867  VecOperandU32 vdst(gpuDynInst, instData.VDST);
5868 
5869  src0.readSrc();
5870  src1.read();
5871 
5872  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5873  if (wf->execMask(lane)) {
5874  VecElemU64 tmp_src0 = (VecElemU64)bits(src0[lane], 23, 0);
5875  VecElemU64 tmp_src1 = (VecElemU64)bits(src1[lane], 23, 0);
5876  vdst[lane] = (VecElemU32)((tmp_src0 * tmp_src1) >> 32);
5877  }
5878  }
5879 
5880  vdst.write();
5881  }
5882 
5884  : Inst_VOP2(iFmt, "v_min_f32")
5885  {
5886  setFlag(ALU);
5887  setFlag(F32);
5888  } // Inst_VOP2__V_MIN_F32
5889 
5891  {
5892  } // ~Inst_VOP2__V_MIN_F32
5893 
5894  // D.f = (S0.f < S1.f ? S0.f : S1.f).
5895  void
5897  {
5898  Wavefront *wf = gpuDynInst->wavefront();
5899  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
5900  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
5901  VecOperandF32 vdst(gpuDynInst, instData.VDST);
5902 
5903  src0.readSrc();
5904  src1.read();
5905 
5906  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5907  if (wf->execMask(lane)) {
5908  vdst[lane] = std::fmin(src0[lane], src1[lane]);
5909  }
5910  }
5911 
5912  vdst.write();
5913  }
5914 
5916  : Inst_VOP2(iFmt, "v_max_f32")
5917  {
5918  setFlag(ALU);
5919  setFlag(F32);
5920  } // Inst_VOP2__V_MAX_F32
5921 
5923  {
5924  } // ~Inst_VOP2__V_MAX_F32
5925 
5926  // D.f = (S0.f >= S1.f ? S0.f : S1.f).
5927  void
5929  {
5930  Wavefront *wf = gpuDynInst->wavefront();
5931  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
5932  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
5933  VecOperandF32 vdst(gpuDynInst, instData.VDST);
5934 
5935  src0.readSrc();
5936  src1.read();
5937 
5938  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5939  if (wf->execMask(lane)) {
5940  vdst[lane] = std::fmax(src0[lane], src1[lane]);
5941  }
5942  }
5943 
5944  vdst.write();
5945  }
5946 
5948  : Inst_VOP2(iFmt, "v_min_i32")
5949  {
5950  setFlag(ALU);
5951  } // Inst_VOP2__V_MIN_I32
5952 
5954  {
5955  } // ~Inst_VOP2__V_MIN_I32
5956 
5957  // D.i = min(S0.i, S1.i).
5958  void
5960  {
5961  Wavefront *wf = gpuDynInst->wavefront();
5962  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
5963  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
5964  VecOperandI32 vdst(gpuDynInst, instData.VDST);
5965 
5966  src0.readSrc();
5967  src1.read();
5968 
5969  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
5970  if (wf->execMask(lane)) {
5971  vdst[lane] = std::min(src0[lane], src1[lane]);
5972  }
5973  }
5974 
5975  vdst.write();
5976  }
5977 
5979  : Inst_VOP2(iFmt, "v_max_i32")
5980  {
5981  setFlag(ALU);
5982  } // Inst_VOP2__V_MAX_I32
5983 
5985  {
5986  } // ~Inst_VOP2__V_MAX_I32
5987 
5988  // D.i = max(S0.i, S1.i).
5989  void
5991  {
5992  Wavefront *wf = gpuDynInst->wavefront();
5993  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
5994  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
5995  VecOperandI32 vdst(gpuDynInst, instData.VDST);
5996 
5997  src0.readSrc();
5998  src1.read();
5999 
6000  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6001  if (wf->execMask(lane)) {
6002  vdst[lane] = std::max(src0[lane], src1[lane]);
6003  }
6004  }
6005 
6006  vdst.write();
6007  }
6008 
6010  : Inst_VOP2(iFmt, "v_min_u32")
6011  {
6012  setFlag(ALU);
6013  } // Inst_VOP2__V_MIN_U32
6014 
6016  {
6017  } // ~Inst_VOP2__V_MIN_U32
6018 
6019  // D.u = min(S0.u, S1.u).
6020  void
6022  {
6023  Wavefront *wf = gpuDynInst->wavefront();
6024  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6025  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6026  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6027 
6028  src0.readSrc();
6029  src1.read();
6030 
6031  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6032  if (wf->execMask(lane)) {
6033  vdst[lane] = std::min(src0[lane], src1[lane]);
6034  }
6035  }
6036 
6037  vdst.write();
6038  }
6039 
6041  : Inst_VOP2(iFmt, "v_max_u32")
6042  {
6043  setFlag(ALU);
6044  } // Inst_VOP2__V_MAX_U32
6045 
6047  {
6048  } // ~Inst_VOP2__V_MAX_U32
6049 
6050  // D.u = max(S0.u, S1.u).
6051  void
6053  {
6054  Wavefront *wf = gpuDynInst->wavefront();
6055  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6056  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6057  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6058 
6059  src0.readSrc();
6060  src1.read();
6061 
6062  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6063  if (wf->execMask(lane)) {
6064  vdst[lane] = std::max(src0[lane], src1[lane]);
6065  }
6066  }
6067 
6068  vdst.write();
6069  }
6070 
6072  : Inst_VOP2(iFmt, "v_lshrrev_b32")
6073  {
6074  setFlag(ALU);
6075  } // Inst_VOP2__V_LSHRREV_B32
6076 
6078  {
6079  } // ~Inst_VOP2__V_LSHRREV_B32
6080 
6081  // D.u = S1.u >> S0.u[4:0].
6082  // The vacated bits are set to zero.
6083  void
6085  {
6086  Wavefront *wf = gpuDynInst->wavefront();
6087  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6088  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6089  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6090 
6091  src0.readSrc();
6092  src1.read();
6093 
6094  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6095  if (wf->execMask(lane)) {
6096  vdst[lane] = src1[lane] >> bits(src0[lane], 4, 0);
6097  }
6098  }
6099 
6100  vdst.write();
6101  }
6102 
6104  : Inst_VOP2(iFmt, "v_ashrrev_i32")
6105  {
6106  setFlag(ALU);
6107  } // Inst_VOP2__V_ASHRREV_I32
6108 
6110  {
6111  } // ~Inst_VOP2__V_ASHRREV_I32
6112 
6113  // D.i = signext(S1.i) >> S0.i[4:0].
6114  // The vacated bits are set to the sign bit of the input value.
6115  void
6117  {
6118  Wavefront *wf = gpuDynInst->wavefront();
6119  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6120  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
6121  VecOperandI32 vdst(gpuDynInst, instData.VDST);
6122 
6123  src0.readSrc();
6124  src1.read();
6125 
6126  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6127  if (wf->execMask(lane)) {
6128  vdst[lane] = src1[lane] >> bits(src0[lane], 4, 0);
6129  }
6130  }
6131 
6132  vdst.write();
6133  }
6134 
6136  : Inst_VOP2(iFmt, "v_lshlrev_b32")
6137  {
6138  setFlag(ALU);
6139  } // Inst_VOP2__V_LSHLREV_B32
6140 
6142  {
6143  } // ~Inst_VOP2__V_LSHLREV_B32
6144 
6145  // D.u = S1.u << S0.u[4:0].
6146  void
6148  {
6149  Wavefront *wf = gpuDynInst->wavefront();
6150  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6151  VecOperandU32 src1(gpuDynInst, instData.VSRC1);
6152  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6153 
6154  src0.readSrc();
6155  src1.read();
6156 
6157  if (isSDWAInst()) {
6158  VecOperandU32 src0_sdwa(gpuDynInst, extData.iFmt_VOP_SDWA.SRC0);
6159  // use copies of original src0, src1, and vdst during selecting
6160  VecOperandU32 origSrc0_sdwa(gpuDynInst,
6162  VecOperandU32 origSrc1(gpuDynInst, instData.VSRC1);
6163  VecOperandU32 origVdst(gpuDynInst, instData.VDST);
6164 
6165  src0_sdwa.read();
6166  origSrc0_sdwa.read();
6167  origSrc1.read();
6168 
6169  DPRINTF(GCN3, "Handling V_LSHLREV_B32 SRC SDWA. SRC0: register "
6170  "v[%d], DST_SEL: %d, DST_UNUSED: %d, CLAMP: %d, SRC0_SEL: "
6171  "%d, SRC0_SEXT: %d, SRC0_NEG: %d, SRC0_ABS: %d, SRC1_SEL: "
6172  "%d, SRC1_SEXT: %d, SRC1_NEG: %d, SRC1_ABS: %d\n",
6184 
6185  processSDWA_src(extData.iFmt_VOP_SDWA, src0_sdwa, origSrc0_sdwa,
6186  src1, origSrc1);
6187 
6188  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6189  if (wf->execMask(lane)) {
6190  vdst[lane] = src1[lane] << bits(src0_sdwa[lane], 4, 0);
6191  origVdst[lane] = vdst[lane]; // keep copy consistent
6192  }
6193  }
6194 
6195  processSDWA_dst(extData.iFmt_VOP_SDWA, vdst, origVdst);
6196  } else {
6197  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6198  if (wf->execMask(lane)) {
6199  vdst[lane] = src1[lane] << bits(src0[lane], 4, 0);
6200  }
6201  }
6202  }
6203 
6204  vdst.write();
6205  }
6206 
6208  : Inst_VOP2(iFmt, "v_and_b32")
6209  {
6210  setFlag(ALU);
6211  } // Inst_VOP2__V_AND_B32
6212 
6214  {
6215  } // ~Inst_VOP2__V_AND_B32
6216 
6217  // D.u = S0.u & S1.u.
6218  // Input and output modifiers not supported.
6219  void
6221  {
6222  Wavefront *wf = gpuDynInst->wavefront();
6223  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6224  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6225  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6226 
6227  src0.readSrc();
6228  src1.read();
6229 
6230  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6231  if (wf->execMask(lane)) {
6232  vdst[lane] = src0[lane] & src1[lane];
6233  }
6234  }
6235 
6236  vdst.write();
6237  }
6238 
6240  : Inst_VOP2(iFmt, "v_or_b32")
6241  {
6242  setFlag(ALU);
6243  } // Inst_VOP2__V_OR_B32
6244 
6246  {
6247  } // ~Inst_VOP2__V_OR_B32
6248 
6249  // D.u = S0.u | S1.u.
6250  // Input and output modifiers not supported.
6251  void
6253  {
6254  Wavefront *wf = gpuDynInst->wavefront();
6255  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6256  VecOperandU32 src1(gpuDynInst, instData.VSRC1);
6257  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6258 
6259  src0.readSrc();
6260  src1.read();
6261 
6262  if (isSDWAInst()) {
6263  VecOperandU32 src0_sdwa(gpuDynInst, extData.iFmt_VOP_SDWA.SRC0);
6264  // use copies of original src0, src1, and dest during selecting
6265  VecOperandU32 origSrc0_sdwa(gpuDynInst,
6267  VecOperandU32 origSrc1(gpuDynInst, instData.VSRC1);
6268  VecOperandU32 origVdst(gpuDynInst, instData.VDST);
6269 
6270  src0_sdwa.read();
6271  origSrc0_sdwa.read();
6272  origSrc1.read();
6273 
6274  DPRINTF(GCN3, "Handling V_OR_B32 SRC SDWA. SRC0: register v[%d], "
6275  "DST_SEL: %d, DST_UNUSED: %d, CLAMP: %d, SRC0_SEL: %d, "
6276  "SRC0_SEXT: %d, SRC0_NEG: %d, SRC0_ABS: %d, SRC1_SEL: %d, "
6277  "SRC1_SEXT: %d, SRC1_NEG: %d, SRC1_ABS: %d\n",
6289 
6290  processSDWA_src(extData.iFmt_VOP_SDWA, src0_sdwa, origSrc0_sdwa,
6291  src1, origSrc1);
6292 
6293  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6294  if (wf->execMask(lane)) {
6295  vdst[lane] = src0_sdwa[lane] | src1[lane];
6296  origVdst[lane] = vdst[lane]; // keep copy consistent
6297  }
6298  }
6299 
6300  processSDWA_dst(extData.iFmt_VOP_SDWA, vdst, origVdst);
6301  } else {
6302  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6303  if (wf->execMask(lane)) {
6304  vdst[lane] = src0[lane] | src1[lane];
6305  }
6306  }
6307  }
6308 
6309  vdst.write();
6310  }
6311 
6313  : Inst_VOP2(iFmt, "v_xor_b32")
6314  {
6315  setFlag(ALU);
6316  } // Inst_VOP2__V_XOR_B32
6317 
6319  {
6320  } // ~Inst_VOP2__V_XOR_B32
6321 
6322  // D.u = S0.u ^ S1.u.
6323  // Input and output modifiers not supported.
6324  void
6326  {
6327  Wavefront *wf = gpuDynInst->wavefront();
6328  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6329  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6330  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6331 
6332  src0.readSrc();
6333  src1.read();
6334 
6335  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6336  if (wf->execMask(lane)) {
6337  vdst[lane] = src0[lane] ^ src1[lane];
6338  }
6339  }
6340 
6341  vdst.write();
6342  }
6343 
6345  : Inst_VOP2(iFmt, "v_mac_f32")
6346  {
6347  setFlag(ALU);
6348  setFlag(F32);
6349  setFlag(MAC);
6350  } // Inst_VOP2__V_MAC_F32
6351 
6353  {
6354  } // ~Inst_VOP2__V_MAC_F32
6355 
6356  // D.f = S0.f * S1.f + D.f.
6357  void
6359  {
6360  Wavefront *wf = gpuDynInst->wavefront();
6361  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
6362  VecOperandF32 src1(gpuDynInst, instData.VSRC1);
6363  VecOperandF32 vdst(gpuDynInst, instData.VDST);
6364 
6365  src0.readSrc();
6366  src1.read();
6367  vdst.read();
6368 
6369  if (isDPPInst()) {
6370  VecOperandF32 src0_dpp(gpuDynInst, extData.iFmt_VOP_DPP.SRC0);
6371  src0_dpp.read();
6372 
6373  DPRINTF(GCN3, "Handling V_MAC_F32 SRC DPP. SRC0: register v[%d], "
6374  "DPP_CTRL: 0x%#x, SRC0_ABS: %d, SRC0_NEG: %d, "
6375  "SRC1_ABS: %d, SRC1_NEG: %d, BOUND_CTRL: %d, "
6376  "BANK_MASK: %d, ROW_MASK: %d\n", extData.iFmt_VOP_DPP.SRC0,
6385 
6386  processDPP(gpuDynInst, extData.iFmt_VOP_DPP, src0_dpp, src1);
6387 
6388  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6389  if (wf->execMask(lane)) {
6390  vdst[lane] = std::fma(src0_dpp[lane], src1[lane],
6391  vdst[lane]);
6392  }
6393  }
6394  } else {
6395  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6396  if (wf->execMask(lane)) {
6397  vdst[lane] = std::fma(src0[lane], src1[lane], vdst[lane]);
6398  }
6399  }
6400  }
6401 
6402  vdst.write();
6403  }
6404 
6406  : Inst_VOP2(iFmt, "v_madmk_f32")
6407  {
6408  setFlag(ALU);
6409  setFlag(F32);
6410  setFlag(MAD);
6411  } // Inst_VOP2__V_MADMK_F32
6412 
6414  {
6415  } // ~Inst_VOP2__V_MADMK_F32
6416 
6417  // D.f = S0.f * K + S1.f; K is a 32-bit inline constant.
6418  // This opcode cannot use the input/output modifiers.
6419  void
6421  {
6422  Wavefront *wf = gpuDynInst->wavefront();
6423  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
6424  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
6425  VecOperandF32 vdst(gpuDynInst, instData.VDST);
6427 
6428  src0.readSrc();
6429  src1.read();
6430 
6431  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6432  if (wf->execMask(lane)) {
6433  vdst[lane] = std::fma(src0[lane], k, src1[lane]);
6434  }
6435  }
6436 
6437  vdst.write();
6438  }
6439 
6441  : Inst_VOP2(iFmt, "v_madak_f32")
6442  {
6443  setFlag(ALU);
6444  setFlag(F32);
6445  setFlag(MAD);
6446  } // Inst_VOP2__V_MADAK_F32
6447 
6449  {
6450  } // ~Inst_VOP2__V_MADAK_F32
6451 
6452  // D.f = S0.f * S1.f + K; K is a 32-bit inline constant.
6453  // This opcode cannot use input/output modifiers.
6454  void
6456  {
6457  Wavefront *wf = gpuDynInst->wavefront();
6458  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
6459  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
6460  VecOperandF32 vdst(gpuDynInst, instData.VDST);
6462 
6463  src0.readSrc();
6464  src1.read();
6465 
6466  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6467  if (wf->execMask(lane)) {
6468  vdst[lane] = std::fma(src0[lane], src1[lane], k);
6469  }
6470  }
6471 
6472  vdst.write();
6473  }
6474 
6476  : Inst_VOP2(iFmt, "v_add_u32")
6477  {
6478  setFlag(ALU);
6479  setFlag(WritesVCC);
6480  } // Inst_VOP2__V_ADD_U32
6481 
6483  {
6484  } // ~Inst_VOP2__V_ADD_U32
6485 
6486  // D.u = S0.u + S1.u;
6487  // VCC[threadId] = (S0.u + S1.u >= 0x100000000ULL ? 1 : 0) is an UNSIGNED
6488  // overflow or carry-out.
6489  // In VOP3 the VCC destination may be an arbitrary SGPR-pair.
6490  void
6492  {
6493  Wavefront *wf = gpuDynInst->wavefront();
6494  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6495  VecOperandU32 src1(gpuDynInst, instData.VSRC1);
6496  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6497  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
6498 
6499  src0.readSrc();
6500  src1.read();
6501 
6502  if (isSDWAInst()) {
6503  VecOperandU32 src0_sdwa(gpuDynInst, extData.iFmt_VOP_SDWA.SRC0);
6504  // use copies of original src0, src1, and dest during selecting
6505  VecOperandU32 origSrc0_sdwa(gpuDynInst,
6507  VecOperandU32 origSrc1(gpuDynInst, instData.VSRC1);
6508  VecOperandU32 origVdst(gpuDynInst, instData.VDST);
6509 
6510  src0_sdwa.read();
6511  origSrc0_sdwa.read();
6512  origSrc1.read();
6513 
6514  DPRINTF(GCN3, "Handling V_ADD_U32 SRC SDWA. SRC0: register v[%d], "
6515  "DST_SEL: %d, DST_UNUSED: %d, CLAMP: %d, SRC0_SEL: %d, "
6516  "SRC0_SEXT: %d, SRC0_NEG: %d, SRC0_ABS: %d, SRC1_SEL: %d, "
6517  "SRC1_SEXT: %d, SRC1_NEG: %d, SRC1_ABS: %d\n",
6529 
6530  processSDWA_src(extData.iFmt_VOP_SDWA, src0_sdwa, origSrc0_sdwa,
6531  src1, origSrc1);
6532 
6533  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6534  if (wf->execMask(lane)) {
6535  vdst[lane] = src0_sdwa[lane] + src1[lane];
6536  origVdst[lane] = vdst[lane]; // keep copy consistent
6537  vcc.setBit(lane, ((VecElemU64)src0_sdwa[lane]
6538  + (VecElemU64)src1[lane] >= 0x100000000ULL) ? 1 : 0);
6539  }
6540  }
6541 
6542  processSDWA_dst(extData.iFmt_VOP_SDWA, vdst, origVdst);
6543  } else {
6544  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6545  if (wf->execMask(lane)) {
6546  vdst[lane] = src0[lane] + src1[lane];
6547  vcc.setBit(lane, ((VecElemU64)src0[lane]
6548  + (VecElemU64)src1[lane] >= 0x100000000ULL) ? 1 : 0);
6549  }
6550  }
6551  }
6552 
6553  vcc.write();
6554  vdst.write();
6555  }
6556 
6558  : Inst_VOP2(iFmt, "v_sub_u32")
6559  {
6560  setFlag(ALU);
6561  setFlag(WritesVCC);
6562  } // Inst_VOP2__V_SUB_U32
6563 
6565  {
6566  } // ~Inst_VOP2__V_SUB_U32
6567 
6568  // D.u = S0.u - S1.u;
6569  // VCC[threadId] = (S1.u > S0.u ? 1 : 0) is an UNSIGNED overflow or
6570  // carry-out.
6571  // In VOP3 the VCC destination may be an arbitrary SGPR-pair.
6572  void
6574  {
6575  Wavefront *wf = gpuDynInst->wavefront();
6576  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6577  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6578  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6579  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
6580 
6581  src0.readSrc();
6582  src1.read();
6583 
6584  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6585  if (wf->execMask(lane)) {
6586  vdst[lane] = src0[lane] - src1[lane];
6587  vcc.setBit(lane, src1[lane] > src0[lane] ? 1 : 0);
6588  }
6589  }
6590 
6591  vdst.write();
6592  vcc.write();
6593  }
6594 
6596  : Inst_VOP2(iFmt, "v_subrev_u32")
6597  {
6598  setFlag(ALU);
6599  setFlag(WritesVCC);
6600  } // Inst_VOP2__V_SUBREV_U32
6601 
6603  {
6604  } // ~Inst_VOP2__V_SUBREV_U32
6605 
6606  // D.u = S1.u - S0.u;
6607  // VCC[threadId] = (S0.u > S1.u ? 1 : 0) is an UNSIGNED overflow or
6608  // carry-out.
6609  // In VOP3 the VCC destination may be an arbitrary SGPR-pair.
6610  void
6612  {
6613  Wavefront *wf = gpuDynInst->wavefront();
6614  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6615  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6616  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6617  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
6618 
6619  src0.readSrc();
6620  src1.read();
6621 
6622  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6623  if (wf->execMask(lane)) {
6624  vdst[lane] = src1[lane] - src0[lane];
6625  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
6626  }
6627  }
6628 
6629  vdst.write();
6630  vcc.write();
6631  }
6632 
6634  : Inst_VOP2(iFmt, "v_addc_u32")
6635  {
6636  setFlag(ALU);
6637  setFlag(WritesVCC);
6638  setFlag(ReadsVCC);
6639  } // Inst_VOP2__V_ADDC_U32
6640 
6642  {
6643  } // ~Inst_VOP2__V_ADDC_U32
6644 
6645  // D.u = S0.u + S1.u + VCC[threadId];
6646  // VCC[threadId] = (S0.u + S1.u + VCC[threadId] >= 0x100000000ULL ? 1 : 0)
6647  // is an UNSIGNED overflow.
6648  // In VOP3 the VCC destination may be an arbitrary SGPR-pair, and the VCC
6649  // source comes from the SGPR-pair at S2.u.
6650  void
6652  {
6653  Wavefront *wf = gpuDynInst->wavefront();
6654  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6655  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6656  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6657  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
6658 
6659  src0.readSrc();
6660  src1.read();
6661  vcc.read();
6662 
6663  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6664  if (wf->execMask(lane)) {
6665  vdst[lane] = src0[lane] + src1[lane]
6666  + bits(vcc.rawData(), lane);
6667  vcc.setBit(lane, ((VecElemU64)src0[lane]
6668  + (VecElemU64)src1[lane]
6669  + (VecElemU64)bits(vcc.rawData(), lane, lane))
6670  >= 0x100000000 ? 1 : 0);
6671  }
6672  }
6673 
6674  vdst.write();
6675  vcc.write();
6676  }
6677 
6679  : Inst_VOP2(iFmt, "v_subb_u32")
6680  {
6681  setFlag(ALU);
6682  setFlag(WritesVCC);
6683  setFlag(ReadsVCC);
6684  } // Inst_VOP2__V_SUBB_U32
6685 
6687  {
6688  } // ~Inst_VOP2__V_SUBB_U32
6689 
6690  // D.u = S0.u - S1.u - VCC[threadId];
6691  // VCC[threadId] = (S1.u + VCC[threadId] > S0.u ? 1 : 0) is an UNSIGNED
6692  // overflow.
6693  // In VOP3 the VCC destination may be an arbitrary SGPR-pair, and the VCC
6694  // source comes from the SGPR-pair at S2.u.
6695  void
6697  {
6698  Wavefront *wf = gpuDynInst->wavefront();
6699  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6700  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6701  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6702  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
6703 
6704  src0.readSrc();
6705  src1.read();
6706  vcc.read();
6707 
6708  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6709  if (wf->execMask(lane)) {
6710  vdst[lane]
6711  = src0[lane] - src1[lane] - bits(vcc.rawData(), lane);
6712  vcc.setBit(lane, (src1[lane] + bits(vcc.rawData(), lane))
6713  > src0[lane] ? 1 : 0);
6714  }
6715  }
6716 
6717  vdst.write();
6718  vcc.write();
6719  }
6720 
6722  : Inst_VOP2(iFmt, "v_subbrev_u32")
6723  {
6724  setFlag(ALU);
6725  setFlag(WritesVCC);
6726  setFlag(ReadsVCC);
6727  } // Inst_VOP2__V_SUBBREV_U32
6728 
6730  {
6731  } // ~Inst_VOP2__V_SUBBREV_U32
6732 
6733  // D.u = S1.u - S0.u - VCC[threadId];
6734  // VCC[threadId] = (S1.u + VCC[threadId] > S0.u ? 1 : 0) is an UNSIGNED
6735  // overflow.
6736  // In VOP3 the VCC destination may be an arbitrary SGPR-pair, and the VCC
6737  // source comes from the SGPR-pair at S2.u.
6738  void
6740  {
6741  Wavefront *wf = gpuDynInst->wavefront();
6742  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
6743  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
6744  VecOperandU32 vdst(gpuDynInst, instData.VDST);
6745  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
6746 
6747  src0.readSrc();
6748  src1.read();
6749  vcc.read();
6750 
6751  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6752  if (wf->execMask(lane)) {
6753  vdst[lane]
6754  = src1[lane] - src0[lane] - bits(vcc.rawData(), lane);
6755  vcc.setBit(lane, (src0[lane] + bits(vcc.rawData(), lane))
6756  > src1[lane] ? 1 : 0);
6757  }
6758  }
6759 
6760  vdst.write();
6761  vcc.write();
6762  }
6763 
6765  : Inst_VOP2(iFmt, "v_add_f16")
6766  {
6767  setFlag(ALU);
6768  setFlag(F16);
6769  } // Inst_VOP2__V_ADD_F16
6770 
6772  {
6773  } // ~Inst_VOP2__V_ADD_F16
6774 
6775  // D.f16 = S0.f16 + S1.f16.
6776  void
6778  {
6780  }
6781 
6783  : Inst_VOP2(iFmt, "v_sub_f16")
6784  {
6785  setFlag(ALU);
6786  setFlag(F16);
6787  } // Inst_VOP2__V_SUB_F16
6788 
6790  {
6791  } // ~Inst_VOP2__V_SUB_F16
6792 
6793  // D.f16 = S0.f16 - S1.f16.
6794  void
6796  {
6798  }
6799 
6801  : Inst_VOP2(iFmt, "v_subrev_f16")
6802  {
6803  setFlag(ALU);
6804  setFlag(F16);
6805  } // Inst_VOP2__V_SUBREV_F16
6806 
6808  {
6809  } // ~Inst_VOP2__V_SUBREV_F16
6810 
6811  // D.f16 = S1.f16 - S0.f16.
6812  void
6814  {
6816  }
6817 
6819  : Inst_VOP2(iFmt, "v_mul_f16")
6820  {
6821  setFlag(ALU);
6822  setFlag(F16);
6823  } // Inst_VOP2__V_MUL_F16
6824 
6826  {
6827  } // ~Inst_VOP2__V_MUL_F16
6828 
6829  // D.f16 = S0.f16 * S1.f16.
6830  void
6832  {
6834  }
6835 
6837  : Inst_VOP2(iFmt, "v_mac_f16")
6838  {
6839  setFlag(ALU);
6840  setFlag(F16);
6841  setFlag(MAC);
6842  } // Inst_VOP2__V_MAC_F16
6843 
6845  {
6846  } // ~Inst_VOP2__V_MAC_F16
6847 
6848  // D.f16 = S0.f16 * S1.f16 + D.f16.
6849  void
6851  {
6853  }
6854 
6856  : Inst_VOP2(iFmt, "v_madmk_f16")
6857  {
6858  setFlag(ALU);
6859  setFlag(F16);
6860  setFlag(MAD);
6861  } // Inst_VOP2__V_MADMK_F16
6862 
6864  {
6865  } // ~Inst_VOP2__V_MADMK_F16
6866 
6867  // D.f16 = S0.f16 * K.f16 + S1.f16; K is a 16-bit inline constant stored
6868  // in the following literal DWORD.
6869  // This opcode cannot use the VOP3 encoding and cannot use input/output
6870  // modifiers.
6871  void
6873  {
6875  }
6876 
6878  : Inst_VOP2(iFmt, "v_madak_f16")
6879  {
6880  setFlag(ALU);
6881  setFlag(F16);
6882  setFlag(MAD);
6883  } // Inst_VOP2__V_MADAK_F16
6884 
6886  {
6887  } // ~Inst_VOP2__V_MADAK_F16
6888 
6889  // D.f16 = S0.f16 * S1.f16 + K.f16; K is a 16-bit inline constant stored
6890  // in the following literal DWORD.
6891  // This opcode cannot use the VOP3 encoding and cannot use input/output
6892  // modifiers.
6893  void
6895  {
6897  }
6898 
6900  : Inst_VOP2(iFmt, "v_add_u16")
6901  {
6902  setFlag(ALU);
6903  } // Inst_VOP2__V_ADD_U16
6904 
6906  {
6907  } // ~Inst_VOP2__V_ADD_U16
6908 
6909  // D.u16 = S0.u16 + S1.u16.
6910  void
6912  {
6913  Wavefront *wf = gpuDynInst->wavefront();
6914  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
6915  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
6916  VecOperandU16 vdst(gpuDynInst, instData.VDST);
6917 
6918  src0.readSrc();
6919  src1.read();
6920 
6921  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6922  if (wf->execMask(lane)) {
6923  vdst[lane] = src0[lane] + src1[lane];
6924  }
6925  }
6926 
6927  vdst.write();
6928  }
6929 
6931  : Inst_VOP2(iFmt, "v_sub_u16")
6932  {
6933  setFlag(ALU);
6934  } // Inst_VOP2__V_SUB_U16
6935 
6937  {
6938  } // ~Inst_VOP2__V_SUB_U16
6939 
6940  // D.u16 = S0.u16 - S1.u16.
6941  void
6943  {
6944  Wavefront *wf = gpuDynInst->wavefront();
6945  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
6946  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
6947  VecOperandU16 vdst(gpuDynInst, instData.VDST);
6948 
6949  src0.readSrc();
6950  src1.read();
6951 
6952  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6953  if (wf->execMask(lane)) {
6954  vdst[lane] = src0[lane] - src1[lane];
6955  }
6956  }
6957 
6958  vdst.write();
6959  }
6960 
6962  : Inst_VOP2(iFmt, "v_subrev_u16")
6963  {
6964  setFlag(ALU);
6965  } // Inst_VOP2__V_SUBREV_U16
6966 
6968  {
6969  } // ~Inst_VOP2__V_SUBREV_U16
6970 
6971  // D.u16 = S1.u16 - S0.u16.
6972  void
6974  {
6975  Wavefront *wf = gpuDynInst->wavefront();
6976  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
6977  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
6978  VecOperandU16 vdst(gpuDynInst, instData.VDST);
6979 
6980  src0.readSrc();
6981  src1.read();
6982 
6983  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
6984  if (wf->execMask(lane)) {
6985  vdst[lane] = src1[lane] - src0[lane];
6986  }
6987  }
6988 
6989  vdst.write();
6990  }
6991 
6993  : Inst_VOP2(iFmt, "v_mul_lo_u16")
6994  {
6995  setFlag(ALU);
6996  } // Inst_VOP2__V_MUL_LO_U16
6997 
6999  {
7000  } // ~Inst_VOP2__V_MUL_LO_U16
7001 
7002  // D.u16 = S0.u16 * S1.u16.
7003  void
7005  {
7006  Wavefront *wf = gpuDynInst->wavefront();
7007  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
7008  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
7009  VecOperandU16 vdst(gpuDynInst, instData.VDST);
7010 
7011  src0.readSrc();
7012  src1.read();
7013 
7014  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7015  if (wf->execMask(lane)) {
7016  vdst[lane] = src0[lane] * src1[lane];
7017  }
7018  }
7019 
7020  vdst.write();
7021  }
7022 
7024  : Inst_VOP2(iFmt, "v_lshlrev_b16")
7025  {
7026  setFlag(ALU);
7027  } // Inst_VOP2__V_LSHLREV_B16
7028 
7030  {
7031  } // ~Inst_VOP2__V_LSHLREV_B16
7032 
7033  // D.u[15:0] = S1.u[15:0] << S0.u[3:0].
7034  void
7036  {
7037  Wavefront *wf = gpuDynInst->wavefront();
7038  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
7039  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
7040  VecOperandU16 vdst(gpuDynInst, instData.VDST);
7041 
7042  src0.readSrc();
7043  src1.read();
7044 
7045  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7046  if (wf->execMask(lane)) {
7047  vdst[lane] = src1[lane] << bits(src0[lane], 3, 0);
7048  }
7049  }
7050 
7051  vdst.write();
7052  }
7053 
7055  : Inst_VOP2(iFmt, "v_lshrrev_b16")
7056  {
7057  setFlag(ALU);
7058  } // Inst_VOP2__V_LSHRREV_B16
7059 
7061  {
7062  } // ~Inst_VOP2__V_LSHRREV_B16
7063 
7064  // D.u[15:0] = S1.u[15:0] >> S0.u[3:0].
7065  // The vacated bits are set to zero.
7066  void
7068  {
7069  Wavefront *wf = gpuDynInst->wavefront();
7070  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
7071  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
7072  VecOperandU16 vdst(gpuDynInst, instData.VDST);
7073 
7074  src0.readSrc();
7075  src1.read();
7076 
7077  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7078  if (wf->execMask(lane)) {
7079  vdst[lane] = src1[lane] >> src0[lane];
7080  }
7081  }
7082 
7083  vdst.write();
7084  }
7085 
7087  : Inst_VOP2(iFmt, "v_ashrrev_i16")
7088  {
7089  setFlag(ALU);
7090  } // Inst_VOP2__V_ASHRREV_I16
7091 
7093  {
7094  } // ~Inst_VOP2__V_ASHRREV_I16
7095 
7096  // D.i[15:0] = signext(S1.i[15:0]) >> S0.i[3:0].
7097  // The vacated bits are set to the sign bit of the input value.
7098  void
7100  {
7101  Wavefront *wf = gpuDynInst->wavefront();
7102  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
7103  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
7104  VecOperandI16 vdst(gpuDynInst, instData.VDST);
7105 
7106  src0.readSrc();
7107  src1.read();
7108 
7109  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7110  if (wf->execMask(lane)) {
7111  vdst[lane] = src1[lane] >> src0[lane];
7112  }
7113  }
7114 
7115  vdst.write();
7116  }
7117 
7119  : Inst_VOP2(iFmt, "v_max_f16")
7120  {
7121  setFlag(ALU);
7122  setFlag(F16);
7123  } // Inst_VOP2__V_MAX_F16
7124 
7126  {
7127  } // ~Inst_VOP2__V_MAX_F16
7128 
7129  // D.f16 = max(S0.f16, S1.f16).
7130  void
7132  {
7134  }
7135 
7137  : Inst_VOP2(iFmt, "v_min_f16")
7138  {
7139  setFlag(ALU);
7140  setFlag(F16);
7141  } // Inst_VOP2__V_MIN_F16
7142 
7144  {
7145  } // ~Inst_VOP2__V_MIN_F16
7146 
7147  // D.f16 = min(S0.f16, S1.f16).
7148  void
7150  {
7152  }
7153 
7155  : Inst_VOP2(iFmt, "v_max_u16")
7156  {
7157  setFlag(ALU);
7158  } // Inst_VOP2__V_MAX_U16
7159 
7161  {
7162  } // ~Inst_VOP2__V_MAX_U16
7163 
7164  // D.u[15:0] = max(S0.u[15:0], S1.u[15:0]).
7165  void
7167  {
7168  Wavefront *wf = gpuDynInst->wavefront();
7169  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
7170  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
7171  VecOperandU16 vdst(gpuDynInst, instData.VDST);
7172 
7173  src0.readSrc();
7174  src1.read();
7175 
7176  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7177  if (wf->execMask(lane)) {
7178  vdst[lane] = std::max(src0[lane], src1[lane]);
7179  }
7180  }
7181 
7182  vdst.write();
7183  }
7184 
7186  : Inst_VOP2(iFmt, "v_max_i16")
7187  {
7188  setFlag(ALU);
7189  } // Inst_VOP2__V_MAX_I16
7190 
7192  {
7193  } // ~Inst_VOP2__V_MAX_I16
7194 
7195  // D.i[15:0] = max(S0.i[15:0], S1.i[15:0]).
7196  void
7198  {
7199  Wavefront *wf = gpuDynInst->wavefront();
7200  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
7201  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
7202  VecOperandI16 vdst(gpuDynInst, instData.VDST);
7203 
7204  src0.readSrc();
7205  src1.read();
7206 
7207  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7208  if (wf->execMask(lane)) {
7209  vdst[lane] = std::max(src0[lane], src1[lane]);
7210  }
7211  }
7212 
7213  vdst.write();
7214  }
7215 
7217  : Inst_VOP2(iFmt, "v_min_u16")
7218  {
7219  setFlag(ALU);
7220  } // Inst_VOP2__V_MIN_U16
7221 
7223  {
7224  } // ~Inst_VOP2__V_MIN_U16
7225 
7226  // D.u[15:0] = min(S0.u[15:0], S1.u[15:0]).
7227  void
7229  {
7230  Wavefront *wf = gpuDynInst->wavefront();
7231  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
7232  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
7233  VecOperandU16 vdst(gpuDynInst, instData.VDST);
7234 
7235  src0.readSrc();
7236  src1.read();
7237 
7238  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7239  if (wf->execMask(lane)) {
7240  vdst[lane] = std::min(src0[lane], src1[lane]);
7241  }
7242  }
7243 
7244  vdst.write();
7245  }
7246 
7248  : Inst_VOP2(iFmt, "v_min_i16")
7249  {
7250  setFlag(ALU);
7251  } // Inst_VOP2__V_MIN_I16
7252 
7254  {
7255  } // ~Inst_VOP2__V_MIN_I16
7256 
7257  // D.i[15:0] = min(S0.i[15:0], S1.i[15:0]).
7258  void
7260  {
7261  Wavefront *wf = gpuDynInst->wavefront();
7262  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
7263  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
7264  VecOperandI16 vdst(gpuDynInst, instData.VDST);
7265 
7266  src0.readSrc();
7267  src1.read();
7268 
7269  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7270  if (wf->execMask(lane)) {
7271  vdst[lane] = std::min(src0[lane], src1[lane]);
7272  }
7273  }
7274 
7275  vdst.write();
7276  }
7277 
7279  : Inst_VOP2(iFmt, "v_ldexp_f16")
7280  {
7281  setFlag(ALU);
7282  setFlag(F16);
7283  } // Inst_VOP2__V_LDEXP_F16
7284 
7286  {
7287  } // ~Inst_VOP2__V_LDEXP_F16
7288 
7289  // D.f16 = S0.f16 * (2 ** S1.i16).
7290  void
7292  {
7294  }
7295 
7297  : Inst_VOP1(iFmt, "v_nop")
7298  {
7299  setFlag(Nop);
7300  setFlag(ALU);
7301  } // Inst_VOP1__V_NOP
7302 
7304  {
7305  } // ~Inst_VOP1__V_NOP
7306 
7307  // Do nothing.
7308  void
7310  {
7311  }
7312 
7314  : Inst_VOP1(iFmt, "v_mov_b32")
7315  {
7316  setFlag(ALU);
7317  } // Inst_VOP1__V_MOV_B32
7318 
7320  {
7321  } // ~Inst_VOP1__V_MOV_B32
7322 
7323  // D.u = S0.u.
7324  // Input and output modifiers not supported; this is an untyped operation.
7325  void
7327  {
7328  Wavefront *wf = gpuDynInst->wavefront();
7329  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
7330  VecOperandU32 vdst(gpuDynInst, instData.VDST);
7331 
7332  src.readSrc();
7333 
7334  if (isDPPInst()) {
7335  VecOperandU32 src_dpp(gpuDynInst, extData.iFmt_VOP_DPP.SRC0);
7336  src_dpp.read();
7337 
7338  DPRINTF(GCN3, "Handling V_MOV_B32 SRC DPP. SRC0: register v[%d], "
7339  "DPP_CTRL: 0x%#x, SRC0_ABS: %d, SRC0_NEG: %d, "
7340  "SRC1_ABS: %d, SRC1_NEG: %d, BOUND_CTRL: %d, "
7341  "BANK_MASK: %d, ROW_MASK: %d\n", extData.iFmt_VOP_DPP.SRC0,
7350 
7351  // NOTE: For VOP1, there is no SRC1, so make sure we're not trying
7352  // to negate it or take the absolute value of it
7353  assert(!extData.iFmt_VOP_DPP.SRC1_ABS);
7354  assert(!extData.iFmt_VOP_DPP.SRC1_NEG);
7355  processDPP(gpuDynInst, extData.iFmt_VOP_DPP, src_dpp);
7356 
7357  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7358  if (wf->execMask(lane)) {
7359  vdst[lane] = src_dpp[lane];
7360  }
7361  }
7362  } else {
7363  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7364  if (wf->execMask(lane)) {
7365  vdst[lane] = src[lane];
7366  }
7367  }
7368  }
7369 
7370  vdst.write();
7371  }
7372 
7374  InFmt_VOP1 *iFmt)
7375  : Inst_VOP1(iFmt, "v_readfirstlane_b32")
7376  {
7377  setFlag(ALU);
7378  } // Inst_VOP1__V_READFIRSTLANE_B32
7379 
7381  {
7382  } // ~Inst_VOP1__V_READFIRSTLANE_B32
7383 
7384  // Copy one VGPR value to one SGPR. D = SGPR destination, S0 = source data
7385  // (VGPR# or M0 for lds direct access), Lane# = FindFirst1fromLSB(exec)
7386  // (Lane# = 0 if exec is zero). Ignores exec mask for the access.
7387  // Input and output modifiers not supported; this is an untyped operation.
7388  void
7390  {
7391  Wavefront *wf = gpuDynInst->wavefront();
7392  ScalarRegI32 src_lane(0);
7393  ScalarRegU64 exec_mask = wf->execMask().to_ullong();
7394  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
7395  ScalarOperandU32 sdst(gpuDynInst, instData.VDST);
7396 
7397  src.readSrc();
7398 
7399  if (exec_mask) {
7400  src_lane = findLsbSet(exec_mask);
7401  }
7402 
7403  sdst = src[src_lane];
7404 
7405  sdst.write();
7406  }
7407 
7409  : Inst_VOP1(iFmt, "v_cvt_i32_f64")
7410  {
7411  setFlag(ALU);
7412  setFlag(F64);
7413  } // Inst_VOP1__V_CVT_I32_F64
7414 
7416  {
7417  } // ~Inst_VOP1__V_CVT_I32_F64
7418 
7419  // D.i = (int)S0.d.
7420  // Out-of-range floating point values (including infinity) saturate. NaN
7421  // is converted to 0.
7422  void
7424  {
7425  Wavefront *wf = gpuDynInst->wavefront();
7426  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
7427  VecOperandI32 vdst(gpuDynInst, instData.VDST);
7428 
7429  src.readSrc();
7430 
7431  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7432  if (wf->execMask(lane)) {
7433  int exp;
7434  std::frexp(src[lane],&exp);
7435  if (std::isnan(src[lane])) {
7436  vdst[lane] = 0;
7437  } else if (std::isinf(src[lane]) || exp > 30) {
7438  if (std::signbit(src[lane])) {
7439  vdst[lane] = INT_MIN;
7440  } else {
7441  vdst[lane] = INT_MAX;
7442  }
7443  } else {
7444  vdst[lane] = (VecElemI32)src[lane];
7445  }
7446  }
7447  }
7448 
7449  vdst.write();
7450  }
7451 
7453  : Inst_VOP1(iFmt, "v_cvt_f64_i32")
7454  {
7455  setFlag(ALU);
7456  setFlag(F64);
7457  } // Inst_VOP1__V_CVT_F64_I32
7458 
7460  {
7461  } // ~Inst_VOP1__V_CVT_F64_I32
7462 
7463  // D.d = (double)S0.i.
7464  void
7466  {
7467  Wavefront *wf = gpuDynInst->wavefront();
7468  ConstVecOperandI32 src(gpuDynInst, instData.SRC0);
7469  VecOperandF64 vdst(gpuDynInst, instData.VDST);
7470 
7471  src.readSrc();
7472 
7473  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7474  if (wf->execMask(lane)) {
7475  vdst[lane] = (VecElemF64)src[lane];
7476  }
7477  }
7478 
7479  vdst.write();
7480  }
7481 
7483  : Inst_VOP1(iFmt, "v_cvt_f32_i32")
7484  {
7485  setFlag(ALU);
7486  setFlag(F32);
7487  } // Inst_VOP1__V_CVT_F32_I32
7488 
7490  {
7491  } // ~Inst_VOP1__V_CVT_F32_I32
7492 
7493  // D.f = (float)S0.i.
7494  void
7496  {
7497  Wavefront *wf = gpuDynInst->wavefront();
7498  ConstVecOperandI32 src(gpuDynInst, instData.SRC0);
7499  VecOperandF32 vdst(gpuDynInst, instData.VDST);
7500 
7501  src.readSrc();
7502 
7503  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7504  if (wf->execMask(lane)) {
7505  vdst[lane] = (VecElemF32)src[lane];
7506  }
7507  }
7508 
7509  vdst.write();
7510  }
7511 
7513  : Inst_VOP1(iFmt, "v_cvt_f32_u32")
7514  {
7515  setFlag(ALU);
7516  setFlag(F32);
7517  } // Inst_VOP1__V_CVT_F32_U32
7518 
7520  {
7521  } // ~Inst_VOP1__V_CVT_F32_U32
7522 
7523  // D.f = (float)S0.u.
7524  void
7526  {
7527  Wavefront *wf = gpuDynInst->wavefront();
7528  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
7529  VecOperandF32 vdst(gpuDynInst, instData.VDST);
7530 
7531  src.readSrc();
7532 
7533  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7534  if (wf->execMask(lane)) {
7535  vdst[lane] = (VecElemF32)src[lane];
7536  }
7537  }
7538 
7539  vdst.write();
7540  }
7541 
7543  : Inst_VOP1(iFmt, "v_cvt_u32_f32")
7544  {
7545  setFlag(ALU);
7546  setFlag(F32);
7547  } // Inst_VOP1__V_CVT_U32_F32
7548 
7550  {
7551  } // ~Inst_VOP1__V_CVT_U32_F32
7552 
7553  // D.u = (unsigned)S0.f.
7554  // Out-of-range floating point values (including infinity) saturate. NaN
7555  // is converted to 0.
7556  void
7558  {
7559  Wavefront *wf = gpuDynInst->wavefront();
7560  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
7561  VecOperandU32 vdst(gpuDynInst, instData.VDST);
7562 
7563  src.readSrc();
7564 
7565  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7566  if (wf->execMask(lane)) {
7567  int exp;
7568  std::frexp(src[lane],&exp);
7569  if (std::isnan(src[lane])) {
7570  vdst[lane] = 0;
7571  } else if (std::isinf(src[lane])) {
7572  if (std::signbit(src[lane])) {
7573  vdst[lane] = 0;
7574  } else {
7575  vdst[lane] = UINT_MAX;
7576  }
7577  } else if (exp > 31) {
7578  vdst[lane] = UINT_MAX;
7579  } else {
7580  vdst[lane] = (VecElemU32)src[lane];
7581  }
7582  }
7583  }
7584 
7585  vdst.write();
7586  }
7587 
7589  : Inst_VOP1(iFmt, "v_cvt_i32_f32")
7590  {
7591  setFlag(ALU);
7592  setFlag(F32);
7593  } // Inst_VOP1__V_CVT_I32_F32
7594 
7596  {
7597  } // ~Inst_VOP1__V_CVT_I32_F32
7598 
7599  // D.i = (int)S0.f.
7600  // Out-of-range floating point values (including infinity) saturate. NaN
7601  // is converted to 0.
7602  void
7604  {
7605  Wavefront *wf = gpuDynInst->wavefront();
7606  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
7607  VecOperandI32 vdst(gpuDynInst, instData.VDST);
7608 
7609  src.readSrc();
7610 
7611  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7612  if (wf->execMask(lane)) {
7613  int exp;
7614  std::frexp(src[lane],&exp);
7615  if (std::isnan(src[lane])) {
7616  vdst[lane] = 0;
7617  } else if (std::isinf(src[lane]) || exp > 30) {
7618  if (std::signbit(src[lane])) {
7619  vdst[lane] = INT_MIN;
7620  } else {
7621  vdst[lane] = INT_MAX;
7622  }
7623  } else {
7624  vdst[lane] = (VecElemI32)src[lane];
7625  }
7626  }
7627  }
7628 
7629  vdst.write();
7630  }
7631 
7633  : Inst_VOP1(iFmt, "v_mov_fed_b32")
7634  {
7635  setFlag(ALU);
7636  } // Inst_VOP1__V_MOV_FED_B32
7637 
7639  {
7640  } // ~Inst_VOP1__V_MOV_FED_B32
7641 
7642  // D.u = S0.u;
7643  // Input and output modifiers not supported; this is an untyped operation.
7644  void
7646  {
7648  }
7649 
7651  : Inst_VOP1(iFmt, "v_cvt_f16_f32")
7652  {
7653  setFlag(ALU);
7654  setFlag(F32);
7655  } // Inst_VOP1__V_CVT_F16_F32
7656 
7658  {
7659  } // ~Inst_VOP1__V_CVT_F16_F32
7660 
7661  // D.f16 = flt32_to_flt16(S0.f).
7662  void
7664  {
7666  }
7667 
7669  : Inst_VOP1(iFmt, "v_cvt_f32_f16")
7670  {
7671  setFlag(ALU);
7672  setFlag(F32);
7673  } // Inst_VOP1__V_CVT_F32_F16
7674 
7676  {
7677  } // ~Inst_VOP1__V_CVT_F32_F16
7678 
7679  // D.f = flt16_to_flt32(S0.f16).
7680  void
7682  {
7684  }
7685 
7687  InFmt_VOP1 *iFmt)
7688  : Inst_VOP1(iFmt, "v_cvt_rpi_i32_f32")
7689  {
7690  setFlag(ALU);
7691  setFlag(F32);
7692  } // Inst_VOP1__V_CVT_RPI_I32_F32
7693 
7695  {
7696  } // ~Inst_VOP1__V_CVT_RPI_I32_F32
7697 
7698  // D.i = (int)floor(S0.f + 0.5).
7699  void
7701  {
7702  Wavefront *wf = gpuDynInst->wavefront();
7703  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
7704  VecOperandI32 vdst(gpuDynInst, instData.VDST);
7705 
7706  src.readSrc();
7707 
7708  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7709  if (wf->execMask(lane)) {
7710  vdst[lane] = (VecElemI32)std::floor(src[lane] + 0.5);
7711  }
7712  }
7713 
7714  vdst.write();
7715  }
7716 
7718  InFmt_VOP1 *iFmt)
7719  : Inst_VOP1(iFmt, "v_cvt_flr_i32_f32")
7720  {
7721  setFlag(ALU);
7722  setFlag(F32);
7723  } // Inst_VOP1__V_CVT_FLR_I32_F32
7724 
7726  {
7727  } // ~Inst_VOP1__V_CVT_FLR_I32_F32
7728 
7729  // D.i = (int)floor(S0.f).
7730  void
7732  {
7733  Wavefront *wf = gpuDynInst->wavefront();
7734  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
7735  VecOperandI32 vdst(gpuDynInst, instData.VDST);
7736 
7737  src.readSrc();
7738 
7739  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7740  if (wf->execMask(lane)) {
7741  vdst[lane] = (VecElemI32)std::floor(src[lane]);
7742  }
7743  }
7744 
7745  vdst.write();
7746  }
7747 
7749  : Inst_VOP1(iFmt, "v_cvt_off_f32_i4")
7750  {
7751  setFlag(ALU);
7752  setFlag(F32);
7753  } // Inst_VOP1__V_CVT_OFF_F32_I4
7754 
7756  {
7757  } // ~Inst_VOP1__V_CVT_OFF_F32_I4
7758 
7759  // 4-bit signed int to 32-bit float.
7760  void
7762  {
7764  }
7765 
7767  : Inst_VOP1(iFmt, "v_cvt_f32_f64")
7768  {
7769  setFlag(ALU);
7770  setFlag(F64);
7771  } // Inst_VOP1__V_CVT_F32_F64
7772 
7774  {
7775  } // ~Inst_VOP1__V_CVT_F32_F64
7776 
7777  // D.f = (float)S0.d.
7778  void
7780  {
7781  Wavefront *wf = gpuDynInst->wavefront();
7782  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
7783  VecOperandF32 vdst(gpuDynInst, instData.VDST);
7784 
7785  src.readSrc();
7786 
7787  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7788  if (wf->execMask(lane)) {
7789  vdst[lane] = (VecElemF32)src[lane];
7790  }
7791  }
7792 
7793  vdst.write();
7794  }
7795 
7797  : Inst_VOP1(iFmt, "v_cvt_f64_f32")
7798  {
7799  setFlag(ALU);
7800  setFlag(F64);
7801  } // Inst_VOP1__V_CVT_F64_F32
7802 
7804  {
7805  } // ~Inst_VOP1__V_CVT_F64_F32
7806 
7807  // D.d = (double)S0.f.
7808  void
7810  {
7811  Wavefront *wf = gpuDynInst->wavefront();
7812  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
7813  VecOperandF64 vdst(gpuDynInst, instData.VDST);
7814 
7815  src.readSrc();
7816 
7817  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7818  if (wf->execMask(lane)) {
7819  vdst[lane] = (VecElemF64)src[lane];
7820  }
7821  }
7822 
7823  vdst.write();
7824  }
7825 
7827  : Inst_VOP1(iFmt, "v_cvt_f32_ubyte0")
7828  {
7829  setFlag(ALU);
7830  setFlag(F32);
7831  } // Inst_VOP1__V_CVT_F32_UBYTE0
7832 
7834  {
7835  } // ~Inst_VOP1__V_CVT_F32_UBYTE0
7836 
7837  // D.f = (float)(S0.u[7:0]).
7838  void
7840  {
7841  Wavefront *wf = gpuDynInst->wavefront();
7842  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
7843  VecOperandF32 vdst(gpuDynInst, instData.VDST);
7844 
7845  src.readSrc();
7846 
7847  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7848  if (wf->execMask(lane)) {
7849  vdst[lane] = (VecElemF32)(bits(src[lane], 7, 0));
7850  }
7851  }
7852 
7853  vdst.write();
7854  }
7855 
7857  : Inst_VOP1(iFmt, "v_cvt_f32_ubyte1")
7858  {
7859  setFlag(ALU);
7860  setFlag(F32);
7861  } // Inst_VOP1__V_CVT_F32_UBYTE1
7862 
7864  {
7865  } // ~Inst_VOP1__V_CVT_F32_UBYTE1
7866 
7867  // D.f = (float)(S0.u[15:8]).
7868  void
7870  {
7871  Wavefront *wf = gpuDynInst->wavefront();
7872  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
7873  VecOperandF32 vdst(gpuDynInst, instData.VDST);
7874 
7875  src.readSrc();
7876 
7877  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7878  if (wf->execMask(lane)) {
7879  vdst[lane] = (VecElemF32)(bits(src[lane], 15, 8));
7880  }
7881  }
7882 
7883  vdst.write();
7884  }
7885 
7887  : Inst_VOP1(iFmt, "v_cvt_f32_ubyte2")
7888  {
7889  setFlag(ALU);
7890  setFlag(F32);
7891  } // Inst_VOP1__V_CVT_F32_UBYTE2
7892 
7894  {
7895  } // ~Inst_VOP1__V_CVT_F32_UBYTE2
7896 
7897  // D.f = (float)(S0.u[23:16]).
7898  void
7900  {
7901  Wavefront *wf = gpuDynInst->wavefront();
7902  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
7903  VecOperandF32 vdst(gpuDynInst, instData.VDST);
7904 
7905  src.readSrc();
7906 
7907  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7908  if (wf->execMask(lane)) {
7909  vdst[lane] = (VecElemF32)(bits(src[lane], 23, 16));
7910  }
7911  }
7912 
7913  vdst.write();
7914  }
7915 
7917  : Inst_VOP1(iFmt, "v_cvt_f32_ubyte3")
7918  {
7919  setFlag(ALU);
7920  setFlag(F32);
7921  } // Inst_VOP1__V_CVT_F32_UBYTE3
7922 
7924  {
7925  } // ~Inst_VOP1__V_CVT_F32_UBYTE3
7926 
7927  // D.f = (float)(S0.u[31:24]).
7928  void
7930  {
7931  Wavefront *wf = gpuDynInst->wavefront();
7932  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
7933  VecOperandF32 vdst(gpuDynInst, instData.VDST);
7934 
7935  src.readSrc();
7936 
7937  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7938  if (wf->execMask(lane)) {
7939  vdst[lane] = (VecElemF32)(bits(src[lane], 31, 24));
7940  }
7941  }
7942 
7943  vdst.write();
7944  }
7945 
7947  : Inst_VOP1(iFmt, "v_cvt_u32_f64")
7948  {
7949  setFlag(ALU);
7950  setFlag(F64);
7951  } // Inst_VOP1__V_CVT_U32_F64
7952 
7954  {
7955  } // ~Inst_VOP1__V_CVT_U32_F64
7956 
7957  // D.u = (unsigned)S0.d.
7958  // Out-of-range floating point values (including infinity) saturate. NaN
7959  // is converted to 0.
7960  void
7962  {
7963  Wavefront *wf = gpuDynInst->wavefront();
7964  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
7965  VecOperandU32 vdst(gpuDynInst, instData.VDST);
7966 
7967  src.readSrc();
7968 
7969  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
7970  if (wf->execMask(lane)) {
7971  int exp;
7972  std::frexp(src[lane],&exp);
7973  if (std::isnan(src[lane])) {
7974  vdst[lane] = 0;
7975  } else if (std::isinf(src[lane])) {
7976  if (std::signbit(src[lane])) {
7977  vdst[lane] = 0;
7978  } else {
7979  vdst[lane] = UINT_MAX;
7980  }
7981  } else if (exp > 31) {
7982  vdst[lane] = UINT_MAX;
7983  } else {
7984  vdst[lane] = (VecElemU32)src[lane];
7985  }
7986  }
7987  }
7988 
7989  vdst.write();
7990  }
7991 
7993  : Inst_VOP1(iFmt, "v_cvt_f64_u32")
7994  {
7995  setFlag(ALU);
7996  setFlag(F64);
7997  } // Inst_VOP1__V_CVT_F64_U32
7998 
8000  {
8001  } // ~Inst_VOP1__V_CVT_F64_U32
8002 
8003  // D.d = (double)S0.u.
8004  void
8006  {
8007  Wavefront *wf = gpuDynInst->wavefront();
8008  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
8009  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8010 
8011  src.readSrc();
8012 
8013  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8014  if (wf->execMask(lane)) {
8015  vdst[lane] = (VecElemF64)src[lane];
8016  }
8017  }
8018 
8019  vdst.write();
8020  }
8021 
8023  : Inst_VOP1(iFmt, "v_trunc_f64")
8024  {
8025  setFlag(ALU);
8026  setFlag(F64);
8027  } // Inst_VOP1__V_TRUNC_F64
8028 
8030  {
8031  } // ~Inst_VOP1__V_TRUNC_F64
8032 
8033  // D.d = trunc(S0.d), return integer part of S0.d.
8034  void
8036  {
8037  Wavefront *wf = gpuDynInst->wavefront();
8038  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8039  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8040 
8041  src.readSrc();
8042 
8043  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8044  if (wf->execMask(lane)) {
8045  vdst[lane] = std::trunc(src[lane]);
8046  }
8047  }
8048 
8049  vdst.write();
8050  }
8051 
8053  : Inst_VOP1(iFmt, "v_ceil_f64")
8054  {
8055  setFlag(ALU);
8056  setFlag(F64);
8057  } // Inst_VOP1__V_CEIL_F64
8058 
8060  {
8061  } // ~Inst_VOP1__V_CEIL_F64
8062 
8063  // D.d = ceil(S0.d);
8064  void
8066  {
8067  Wavefront *wf = gpuDynInst->wavefront();
8068  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8069  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8070 
8071  src.readSrc();
8072 
8073  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8074  if (wf->execMask(lane)) {
8075  vdst[lane] = std::ceil(src[lane]);
8076  }
8077  }
8078 
8079  vdst.write();
8080  }
8081 
8083  : Inst_VOP1(iFmt, "v_rndne_f64")
8084  {
8085  setFlag(ALU);
8086  setFlag(F64);
8087  } // Inst_VOP1__V_RNDNE_F64
8088 
8090  {
8091  } // ~Inst_VOP1__V_RNDNE_F64
8092 
8093  // D.d = round_nearest_even(S0.d).
8094  void
8096  {
8097  Wavefront *wf = gpuDynInst->wavefront();
8098  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8099  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8100 
8101  src.readSrc();
8102 
8103  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8104  if (wf->execMask(lane)) {
8105  vdst[lane] = roundNearestEven(src[lane]);
8106  }
8107  }
8108 
8109  vdst.write();
8110  }
8111 
8113  : Inst_VOP1(iFmt, "v_floor_f64")
8114  {
8115  setFlag(ALU);
8116  setFlag(F64);
8117  } // Inst_VOP1__V_FLOOR_F64
8118 
8120  {
8121  } // ~Inst_VOP1__V_FLOOR_F64
8122 
8123  // D.d = floor(S0.d);
8124  void
8126  {
8127  Wavefront *wf = gpuDynInst->wavefront();
8128  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8129  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8130 
8131  src.readSrc();
8132 
8133  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8134  if (wf->execMask(lane)) {
8135  vdst[lane] = std::floor(src[lane]);
8136  }
8137  }
8138 
8139  vdst.write();
8140  }
8141 
8143  : Inst_VOP1(iFmt, "v_fract_f32")
8144  {
8145  setFlag(ALU);
8146  setFlag(F32);
8147  } // Inst_VOP1__V_FRACT_F32
8148 
8150  {
8151  } // ~Inst_VOP1__V_FRACT_F32
8152 
8153  // D.f = modf(S0.f).
8154  void
8156  {
8157  Wavefront *wf = gpuDynInst->wavefront();
8158  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8159  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8160 
8161  src.readSrc();
8162 
8163  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8164  if (wf->execMask(lane)) {
8165  VecElemF32 int_part(0.0);
8166  vdst[lane] = std::modf(src[lane], &int_part);
8167  }
8168  }
8169 
8170  vdst.write();
8171  }
8172 
8174  : Inst_VOP1(iFmt, "v_trunc_f32")
8175  {
8176  setFlag(ALU);
8177  setFlag(F32);
8178  } // Inst_VOP1__V_TRUNC_F32
8179 
8181  {
8182  } // ~Inst_VOP1__V_TRUNC_F32
8183 
8184  // D.f = trunc(S0.f), return integer part of S0.f.
8185  void
8187  {
8188  Wavefront *wf = gpuDynInst->wavefront();
8189  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8190  VecOperandF32 vdst (gpuDynInst, instData.VDST);
8191 
8192  src.readSrc();
8193 
8194  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8195  if (wf->execMask(lane)) {
8196  vdst[lane] = std::trunc(src[lane]);
8197  }
8198  }
8199 
8200  vdst.write();
8201  }
8202 
8204  : Inst_VOP1(iFmt, "v_ceil_f32")
8205  {
8206  setFlag(ALU);
8207  setFlag(F32);
8208  } // Inst_VOP1__V_CEIL_F32
8209 
8211  {
8212  } // ~Inst_VOP1__V_CEIL_F32
8213 
8214  // D.f = ceil(S0.f);
8215  void
8217  {
8218  Wavefront *wf = gpuDynInst->wavefront();
8219  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8220  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8221 
8222  src.readSrc();
8223 
8224  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8225  if (wf->execMask(lane)) {
8226  vdst[lane] = std::ceil(src[lane]);
8227  }
8228  }
8229 
8230  vdst.write();
8231  }
8232 
8234  : Inst_VOP1(iFmt, "v_rndne_f32")
8235  {
8236  setFlag(ALU);
8237  setFlag(F32);
8238  } // Inst_VOP1__V_RNDNE_F32
8239 
8241  {
8242  } // ~Inst_VOP1__V_RNDNE_F32
8243 
8244  // D.f = round_nearest_even(S0.f).
8245  void
8247  {
8248  Wavefront *wf = gpuDynInst->wavefront();
8249  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8250  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8251 
8252  src.readSrc();
8253 
8254  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8255  if (wf->execMask(lane)) {
8256  vdst[lane] = roundNearestEven(src[lane]);
8257  }
8258  }
8259 
8260  vdst.write();
8261  }
8262 
8264  : Inst_VOP1(iFmt, "v_floor_f32")
8265  {
8266  setFlag(ALU);
8267  setFlag(F32);
8268  } // Inst_VOP1__V_FLOOR_F32
8269 
8271  {
8272  } // ~Inst_VOP1__V_FLOOR_F32
8273 
8274  // D.f = floor(S0.f);
8275  void
8277  {
8278  Wavefront *wf = gpuDynInst->wavefront();
8279  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8280  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8281 
8282  src.readSrc();
8283 
8284  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8285  if (wf->execMask(lane)) {
8286  vdst[lane] = std::floor(src[lane]);
8287  }
8288  }
8289 
8290  vdst.write();
8291  }
8292 
8294  : Inst_VOP1(iFmt, "v_exp_f32")
8295  {
8296  setFlag(ALU);
8297  setFlag(F32);
8298  } // Inst_VOP1__V_EXP_F32
8299 
8301  {
8302  } // ~Inst_VOP1__V_EXP_F32
8303 
8304  // D.f = pow(2.0, S0.f).
8305  void
8307  {
8308  Wavefront *wf = gpuDynInst->wavefront();
8309  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8310  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8311 
8312  src.readSrc();
8313 
8314  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8315  if (wf->execMask(lane)) {
8316  vdst[lane] = std::pow(2.0, src[lane]);
8317  }
8318  }
8319 
8320  vdst.write();
8321  }
8322 
8324  : Inst_VOP1(iFmt, "v_log_f32")
8325  {
8326  setFlag(ALU);
8327  setFlag(F32);
8328  } // Inst_VOP1__V_LOG_F32
8329 
8331  {
8332  } // ~Inst_VOP1__V_LOG_F32
8333 
8334  // D.f = log2(S0.f).
8335  void
8337  {
8338  Wavefront *wf = gpuDynInst->wavefront();
8339  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8340  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8341 
8342  src.readSrc();
8343 
8344  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8345  if (wf->execMask(lane)) {
8346  vdst[lane] = std::log2(src[lane]);
8347  }
8348  }
8349 
8350  vdst.write();
8351  }
8352 
8354  : Inst_VOP1(iFmt, "v_rcp_f32")
8355  {
8356  setFlag(ALU);
8357  setFlag(F32);
8358  } // Inst_VOP1__V_RCP_F32
8359 
8361  {
8362  } // ~Inst_VOP1__V_RCP_F32
8363 
8364  // D.f = 1.0 / S0.f.
8365  void
8367  {
8368  Wavefront *wf = gpuDynInst->wavefront();
8369  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8370  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8371 
8372  src.readSrc();
8373 
8374  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8375  if (wf->execMask(lane)) {
8376  vdst[lane] = 1.0 / src[lane];
8377  }
8378  }
8379 
8380  vdst.write();
8381  }
8382 
8384  : Inst_VOP1(iFmt, "v_rcp_iflag_f32")
8385  {
8386  setFlag(ALU);
8387  setFlag(F32);
8388  } // Inst_VOP1__V_RCP_IFLAG_F32
8389 
8391  {
8392  } // ~Inst_VOP1__V_RCP_IFLAG_F32
8393 
8394  // D.f = 1.0 / S0.f.
8395  void
8397  {
8398  Wavefront *wf = gpuDynInst->wavefront();
8399  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8400  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8401 
8402  src.readSrc();
8403 
8404  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8405  if (wf->execMask(lane)) {
8406  vdst[lane] = 1.0 / src[lane];
8407  }
8408  }
8409 
8410  vdst.write();
8411  }
8412 
8414  : Inst_VOP1(iFmt, "v_rsq_f32")
8415  {
8416  setFlag(ALU);
8417  setFlag(F32);
8418  } // Inst_VOP1__V_RSQ_F32
8419 
8421  {
8422  } // ~Inst_VOP1__V_RSQ_F32
8423 
8424  // D.f = 1.0 / sqrt(S0.f).
8425  void
8427  {
8428  Wavefront *wf = gpuDynInst->wavefront();
8429  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8430  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8431 
8432  src.readSrc();
8433 
8434  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8435  if (wf->execMask(lane)) {
8436  vdst[lane] = 1.0 / std::sqrt(src[lane]);
8437  }
8438  }
8439 
8440  vdst.write();
8441  }
8442 
8444  : Inst_VOP1(iFmt, "v_rcp_f64")
8445  {
8446  setFlag(ALU);
8447  setFlag(F64);
8448  } // Inst_VOP1__V_RCP_F64
8449 
8451  {
8452  } // ~Inst_VOP1__V_RCP_F64
8453 
8454  // D.d = 1.0 / S0.d.
8455  void
8457  {
8458  Wavefront *wf = gpuDynInst->wavefront();
8459  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8460  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8461 
8462  src.readSrc();
8463 
8464  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8465  if (wf->execMask(lane)) {
8466  if (std::fpclassify(src[lane]) == FP_ZERO) {
8467  vdst[lane] = +INFINITY;
8468  } else if (std::isnan(src[lane])) {
8469  vdst[lane] = NAN;
8470  } else if (std::isinf(src[lane])) {
8471  if (std::signbit(src[lane])) {
8472  vdst[lane] = -0.0;
8473  } else {
8474  vdst[lane] = 0.0;
8475  }
8476  } else {
8477  vdst[lane] = 1.0 / src[lane];
8478  }
8479  }
8480  }
8481 
8482  vdst.write();
8483  }
8484 
8486  : Inst_VOP1(iFmt, "v_rsq_f64")
8487  {
8488  setFlag(ALU);
8489  setFlag(F64);
8490  } // Inst_VOP1__V_RSQ_F64
8491 
8493  {
8494  } // ~Inst_VOP1__V_RSQ_F64
8495 
8496  // D.d = 1.0 / sqrt(S0.d).
8497  void
8499  {
8500  Wavefront *wf = gpuDynInst->wavefront();
8501  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8502  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8503 
8504  src.readSrc();
8505 
8506  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8507  if (wf->execMask(lane)) {
8508  if (std::fpclassify(src[lane]) == FP_ZERO) {
8509  vdst[lane] = +INFINITY;
8510  } else if (std::isnan(src[lane])) {
8511  vdst[lane] = NAN;
8512  } else if (std::isinf(src[lane])
8513  && !std::signbit(src[lane])) {
8514  vdst[lane] = 0.0;
8515  } else if (std::signbit(src[lane])) {
8516  vdst[lane] = NAN;
8517  } else {
8518  vdst[lane] = 1.0 / std::sqrt(src[lane]);
8519  }
8520  }
8521  }
8522 
8523  vdst.write();
8524  }
8525 
8527  : Inst_VOP1(iFmt, "v_sqrt_f32")
8528  {
8529  setFlag(ALU);
8530  setFlag(F32);
8531  } // Inst_VOP1__V_SQRT_F32
8532 
8534  {
8535  } // ~Inst_VOP1__V_SQRT_F32
8536 
8537  // D.f = sqrt(S0.f).
8538  void
8540  {
8541  Wavefront *wf = gpuDynInst->wavefront();
8542  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8543  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8544 
8545  src.readSrc();
8546 
8547  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8548  if (wf->execMask(lane)) {
8549  vdst[lane] = std::sqrt(src[lane]);
8550  }
8551  }
8552 
8553  vdst.write();
8554  }
8555 
8557  : Inst_VOP1(iFmt, "v_sqrt_f64")
8558  {
8559  setFlag(ALU);
8560  setFlag(F64);
8561  } // Inst_VOP1__V_SQRT_F64
8562 
8564  {
8565  } // ~Inst_VOP1__V_SQRT_F64
8566 
8567  // D.d = sqrt(S0.d).
8568  void
8570  {
8571  Wavefront *wf = gpuDynInst->wavefront();
8572  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8573  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8574 
8575  src.readSrc();
8576 
8577  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8578  if (wf->execMask(lane)) {
8579  vdst[lane] = std::sqrt(src[lane]);
8580  }
8581  }
8582 
8583  vdst.write();
8584  }
8585 
8587  : Inst_VOP1(iFmt, "v_sin_f32")
8588  {
8589  setFlag(ALU);
8590  setFlag(F32);
8591  } // Inst_VOP1__V_SIN_F32
8592 
8594  {
8595  } // ~Inst_VOP1__V_SIN_F32
8596 
8597  // D.f = sin(S0.f * 2 * PI).
8598  void
8600  {
8601  Wavefront *wf = gpuDynInst->wavefront();
8602  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8603  ConstScalarOperandF32 pi(gpuDynInst, REG_PI);
8604  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8605 
8606  src.readSrc();
8607  pi.read();
8608 
8609  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8610  if (wf->execMask(lane)) {
8611  if (src[lane] < -256.0 || src[lane] > 256.0) {
8612  vdst[lane] = 0.0;
8613  } else {
8614  vdst[lane] = std::sin(src[lane] * 2.0 * pi.rawData());
8615  }
8616  }
8617  }
8618 
8619  vdst.write();
8620  }
8621 
8623  : Inst_VOP1(iFmt, "v_cos_f32")
8624  {
8625  setFlag(ALU);
8626  setFlag(F32);
8627  } // Inst_VOP1__V_COS_F32
8628 
8630  {
8631  } // ~Inst_VOP1__V_COS_F32
8632 
8633  // D.f = cos(S0.f * 2 * PI).
8634  void
8636  {
8637  Wavefront *wf = gpuDynInst->wavefront();
8638  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8639  ConstScalarOperandF32 pi(gpuDynInst, REG_PI);
8640  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8641 
8642  src.readSrc();
8643  pi.read();
8644 
8645  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8646  if (wf->execMask(lane)) {
8647  if (src[lane] < -256.0 || src[lane] > 256.0) {
8648  vdst[lane] = 0.0;
8649  } else {
8650  vdst[lane] = std::cos(src[lane] * 2.0 * pi.rawData());
8651  }
8652  }
8653  }
8654 
8655  vdst.write();
8656  }
8657 
8659  : Inst_VOP1(iFmt, "v_not_b32")
8660  {
8661  setFlag(ALU);
8662  } // Inst_VOP1__V_NOT_B32
8663 
8665  {
8666  } // ~Inst_VOP1__V_NOT_B32
8667 
8668  // D.u = ~S0.u.
8669  // Input and output modifiers not supported.
8670  void
8672  {
8673  Wavefront *wf = gpuDynInst->wavefront();
8674  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
8675  VecOperandU32 vdst(gpuDynInst, instData.VDST);
8676 
8677  src.readSrc();
8678 
8679  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8680  if (wf->execMask(lane)) {
8681  vdst[lane] = ~src[lane];
8682  }
8683  }
8684 
8685  vdst.write();
8686  }
8687 
8689  : Inst_VOP1(iFmt, "v_bfrev_b32")
8690  {
8691  setFlag(ALU);
8692  } // Inst_VOP1__V_BFREV_B32
8693 
8695  {
8696  } // ~Inst_VOP1__V_BFREV_B32
8697 
8698  // D.u[31:0] = S0.u[0:31], bitfield reverse.
8699  // Input and output modifiers not supported.
8700  void
8702  {
8703  Wavefront *wf = gpuDynInst->wavefront();
8704  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
8705  VecOperandU32 vdst(gpuDynInst, instData.VDST);
8706 
8707  src.readSrc();
8708 
8709  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8710  if (wf->execMask(lane)) {
8711  vdst[lane] = reverseBits(src[lane]);
8712  }
8713  }
8714 
8715  vdst.write();
8716  }
8717 
8719  : Inst_VOP1(iFmt, "v_ffbh_u32")
8720  {
8721  setFlag(ALU);
8722  } // Inst_VOP1__V_FFBH_U32
8723 
8725  {
8726  } // ~Inst_VOP1__V_FFBH_U32
8727 
8728  // D.u = position of first 1 in S0.u from MSB;
8729  // D.u = 0xffffffff if S0.u == 0.
8730  void
8732  {
8733  Wavefront *wf = gpuDynInst->wavefront();
8734  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
8735  VecOperandU32 vdst(gpuDynInst, instData.VDST);
8736 
8737  src.readSrc();
8738 
8739  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8740  if (wf->execMask(lane)) {
8741  vdst[lane] = findFirstOneMsb(src[lane]);
8742  }
8743  }
8744 
8745  vdst.write();
8746  }
8747 
8749  : Inst_VOP1(iFmt, "v_ffbl_b32")
8750  {
8751  setFlag(ALU);
8752  } // Inst_VOP1__V_FFBL_B32
8753 
8755  {
8756  } // ~Inst_VOP1__V_FFBL_B32
8757 
8758  // D.u = position of first 1 in S0.u from LSB;
8759  // D.u = 0xffffffff if S0.u == 0.
8760  void
8762  {
8763  Wavefront *wf = gpuDynInst->wavefront();
8764  ConstVecOperandU32 src(gpuDynInst, instData.SRC0);
8765  VecOperandU32 vdst(gpuDynInst, instData.VDST);
8766 
8767  src.readSrc();
8768 
8769  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8770  if (wf->execMask(lane)) {
8771  vdst[lane] = findFirstOne(src[lane]);
8772  }
8773  }
8774 
8775  vdst.write();
8776  }
8777 
8779  : Inst_VOP1(iFmt, "v_ffbh_i32")
8780  {
8781  setFlag(ALU);
8782  } // Inst_VOP1__V_FFBH_I32
8783 
8785  {
8786  } // ~Inst_VOP1__V_FFBH_I32
8787 
8788  // D.u = position of first bit different from sign bit in S0.i from MSB;
8789  // D.u = 0xffffffff if S0.i == 0 or S0.i == 0xffffffff.
8790  void
8792  {
8793  Wavefront *wf = gpuDynInst->wavefront();
8794  ConstVecOperandI32 src(gpuDynInst, instData.SRC0);
8795  VecOperandU32 vdst(gpuDynInst, instData.VDST);
8796 
8797  src.readSrc();
8798 
8799  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8800  if (wf->execMask(lane)) {
8801  vdst[lane] = firstOppositeSignBit(src[lane]);
8802  }
8803  }
8804 
8805  vdst.write();
8806  }
8807 
8809  InFmt_VOP1 *iFmt)
8810  : Inst_VOP1(iFmt, "v_frexp_exp_i32_f64")
8811  {
8812  setFlag(ALU);
8813  setFlag(F64);
8814  } // Inst_VOP1__V_FREXP_EXP_I32_F64
8815 
8817  {
8818  } // ~Inst_VOP1__V_FREXP_EXP_I32_F64
8819 
8820  void
8822  {
8823  Wavefront *wf = gpuDynInst->wavefront();
8824  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8825  VecOperandI32 vdst(gpuDynInst, instData.VDST);
8826 
8827  src.readSrc();
8828 
8829  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8830  if (wf->execMask(lane)) {
8831  if (std::isinf(src[lane]) || std::isnan(src[lane])) {
8832  vdst[lane] = 0;
8833  } else {
8834  VecElemI32 exp = 0;
8835  std::frexp(src[lane], &exp);
8836  vdst[lane] = exp;
8837  }
8838  }
8839  }
8840 
8841  vdst.write();
8842  }
8843 
8845  : Inst_VOP1(iFmt, "v_frexp_mant_f64")
8846  {
8847  setFlag(ALU);
8848  setFlag(F64);
8849  } // Inst_VOP1__V_FREXP_MANT_F64
8850 
8852  {
8853  } // ~Inst_VOP1__V_FREXP_MANT_F64
8854 
8855  void
8857  {
8858  Wavefront *wf = gpuDynInst->wavefront();
8859  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8860  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8861 
8862  src.readSrc();
8863 
8864  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8865  if (wf->execMask(lane)) {
8866  if (std::isinf(src[lane]) || std::isnan(src[lane])) {
8867  vdst[lane] = src[lane];
8868  } else {
8869  VecElemI32 exp(0);
8870  vdst[lane] = std::frexp(src[lane], &exp);
8871  }
8872  }
8873  }
8874 
8875  vdst.write();
8876  }
8877 
8879  : Inst_VOP1(iFmt, "v_fract_f64")
8880  {
8881  setFlag(ALU);
8882  setFlag(F64);
8883  } // Inst_VOP1__V_FRACT_F64
8884 
8886  {
8887  } // ~Inst_VOP1__V_FRACT_F64
8888 
8889  void
8891  {
8892  Wavefront *wf = gpuDynInst->wavefront();
8893  ConstVecOperandF64 src(gpuDynInst, instData.SRC0);
8894  VecOperandF64 vdst(gpuDynInst, instData.VDST);
8895 
8896  src.readSrc();
8897 
8898  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8899  if (wf->execMask(lane)) {
8900  VecElemF64 int_part(0.0);
8901  vdst[lane] = std::modf(src[lane], &int_part);
8902  }
8903  }
8904 
8905  vdst.write();
8906  }
8907 
8909  InFmt_VOP1 *iFmt)
8910  : Inst_VOP1(iFmt, "v_frexp_exp_i32_f32")
8911  {
8912  setFlag(ALU);
8913  setFlag(F32);
8914  } // Inst_VOP1__V_FREXP_EXP_I32_F32
8915 
8917  {
8918  } // ~Inst_VOP1__V_FREXP_EXP_I32_F32
8919 
8920  // frexp(S0.f, Exponent(S0.f))
8921  // if (S0.f == INF || S0.f == NAN) then D.i = 0;
8922  // else D.i = Exponent(S0.f);
8923  void
8925  {
8926  Wavefront *wf = gpuDynInst->wavefront();
8927  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8928  VecOperandI32 vdst(gpuDynInst, instData.VDST);
8929 
8930  src.readSrc();
8931 
8932  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8933  if (wf->execMask(lane)) {
8934  if (std::isinf(src[lane]) || std::isnan(src[lane])) {
8935  vdst[lane] = 0;
8936  } else {
8937  VecElemI32 exp(0);
8938  std::frexp(src[lane], &exp);
8939  vdst[lane] = exp;
8940  }
8941  }
8942  }
8943 
8944  vdst.write();
8945  }
8946 
8948  : Inst_VOP1(iFmt, "v_frexp_mant_f32")
8949  {
8950  setFlag(ALU);
8951  setFlag(F32);
8952  } // Inst_VOP1__V_FREXP_MANT_F32
8953 
8955  {
8956  } // ~Inst_VOP1__V_FREXP_MANT_F32
8957 
8958  // if (S0.f == INF || S0.f == NAN) then D.f = S0.f;
8959  // else D.f = frexp(S0.f, Exponent(S0.f)).
8960  void
8962  {
8963  Wavefront *wf = gpuDynInst->wavefront();
8964  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
8965  VecOperandF32 vdst(gpuDynInst, instData.VDST);
8966 
8967  src.readSrc();
8968 
8969  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
8970  if (wf->execMask(lane)) {
8971  if (std::isinf(src[lane]) || std::isnan(src[lane])) {
8972  vdst[lane] = src[lane];
8973  } else {
8974  VecElemI32 exp(0);
8975  vdst[lane] = std::frexp(src[lane], &exp);
8976  }
8977  }
8978  }
8979 
8980  vdst.write();
8981  }
8982 
8984  : Inst_VOP1(iFmt, "v_clrexcp")
8985  {
8986  setFlag(ALU);
8987  } // Inst_VOP1__V_CLREXCP
8988 
8990  {
8991  } // ~Inst_VOP1__V_CLREXCP
8992 
8993  void
8995  {
8997  }
8998 
9000  : Inst_VOP1(iFmt, "v_cvt_f16_u16")
9001  {
9002  setFlag(ALU);
9003  setFlag(F16);
9004  } // Inst_VOP1__V_CVT_F16_U16
9005 
9007  {
9008  } // ~Inst_VOP1__V_CVT_F16_U16
9009 
9010  // D.f16 = uint16_to_flt16(S.u16).
9011  void
9013  {
9015  }
9016 
9018  : Inst_VOP1(iFmt, "v_cvt_f16_i16")
9019  {
9020  setFlag(ALU);
9021  setFlag(F16);
9022  } // Inst_VOP1__V_CVT_F16_I16
9023 
9025  {
9026  } // ~Inst_VOP1__V_CVT_F16_I16
9027 
9028  // D.f16 = int16_to_flt16(S.i16).
9029  void
9031  {
9033  }
9034 
9036  : Inst_VOP1(iFmt, "v_cvt_u16_f16")
9037  {
9038  setFlag(ALU);
9039  setFlag(F16);
9040  } // Inst_VOP1__V_CVT_U16_F16
9041 
9043  {
9044  } // ~Inst_VOP1__V_CVT_U16_F16
9045 
9046  // D.u16 = flt16_to_uint16(S.f16).
9047  void
9049  {
9051  }
9052 
9054  : Inst_VOP1(iFmt, "v_cvt_i16_f16")
9055  {
9056  setFlag(ALU);
9057  setFlag(F16);
9058  } // Inst_VOP1__V_CVT_I16_F16
9059 
9061  {
9062  } // ~Inst_VOP1__V_CVT_I16_F16
9063 
9064  // D.i16 = flt16_to_int16(S.f16).
9065  void
9067  {
9069  }
9070 
9072  : Inst_VOP1(iFmt, "v_rcp_f16")
9073  {
9074  setFlag(ALU);
9075  setFlag(F16);
9076  } // Inst_VOP1__V_RCP_F16
9077 
9079  {
9080  } // ~Inst_VOP1__V_RCP_F16
9081 
9082  // if (S0.f16 == 1.0f)
9083  // D.f16 = 1.0f;
9084  // else
9085  // D.f16 = 1 / S0.f16;
9086  void
9088  {
9090  }
9091 
9093  : Inst_VOP1(iFmt, "v_sqrt_f16")
9094  {
9095  setFlag(ALU);
9096  setFlag(F16);
9097  } // Inst_VOP1__V_SQRT_F16
9098 
9100  {
9101  } // ~Inst_VOP1__V_SQRT_F16
9102 
9103  // if (S0.f16 == 1.0f)
9104  // D.f16 = 1.0f;
9105  // else
9106  // D.f16 = sqrt(S0.f16);
9107  void
9109  {
9111  }
9112 
9114  : Inst_VOP1(iFmt, "v_rsq_f16")
9115  {
9116  setFlag(ALU);
9117  setFlag(F16);
9118  } // Inst_VOP1__V_RSQ_F16
9119 
9121  {
9122  } // ~Inst_VOP1__V_RSQ_F16
9123 
9124  // if (S0.f16 == 1.0f)
9125  // D.f16 = 1.0f;
9126  // else
9127  // D.f16 = 1 / sqrt(S0.f16);
9128  void
9130  {
9132  }
9133 
9135  : Inst_VOP1(iFmt, "v_log_f16")
9136  {
9137  setFlag(ALU);
9138  setFlag(F16);
9139  } // Inst_VOP1__V_LOG_F16
9140 
9142  {
9143  } // ~Inst_VOP1__V_LOG_F16
9144 
9145  // if (S0.f16 == 1.0f)
9146  // D.f16 = 0.0f;
9147  // else
9148  // D.f16 = log2(S0.f16);
9149  void
9151  {
9153  }
9154 
9156  : Inst_VOP1(iFmt, "v_exp_f16")
9157  {
9158  setFlag(ALU);
9159  setFlag(F16);
9160  } // Inst_VOP1__V_EXP_F16
9161 
9163  {
9164  } // ~Inst_VOP1__V_EXP_F16
9165 
9166  // if (S0.f16 == 0.0f)
9167  // D.f16 = 1.0f;
9168  // else
9169  // D.f16 = pow(2.0, S0.f16).
9170  void
9172  {
9174  }
9175 
9177  : Inst_VOP1(iFmt, "v_frexp_mant_f16")
9178  {
9179  setFlag(ALU);
9180  setFlag(F16);
9181  } // Inst_VOP1__V_FREXP_MANT_F16
9182 
9184  {
9185  } // ~Inst_VOP1__V_FREXP_MANT_F16
9186 
9187  // if (S0.f16 == +-INF || S0.f16 == NAN)
9188  // D.f16 = S0.f16;
9189  // else
9190  // D.f16 = mantissa(S0.f16).
9191  void
9193  {
9195  }
9196 
9198  InFmt_VOP1 *iFmt)
9199  : Inst_VOP1(iFmt, "v_frexp_exp_i16_f16")
9200  {
9201  setFlag(ALU);
9202  setFlag(F16);
9203  } // Inst_VOP1__V_FREXP_EXP_I16_F16
9204 
9206  {
9207  } // ~Inst_VOP1__V_FREXP_EXP_I16_F16
9208 
9209  // frexp(S0.f16, Exponent(S0.f16))
9210  // if (S0.f16 == +-INF || S0.f16 == NAN)
9211  // D.i16 = 0;
9212  // else
9213  // D.i16 = Exponent(S0.f16);
9214  void
9216  {
9218  }
9219 
9221  : Inst_VOP1(iFmt, "v_floor_f16")
9222  {
9223  setFlag(ALU);
9224  setFlag(F16);
9225  } // Inst_VOP1__V_FLOOR_F16
9226 
9228  {
9229  } // ~Inst_VOP1__V_FLOOR_F16
9230 
9231  // D.f16 = floor(S0.f16);
9232  void
9234  {
9236  }
9237 
9239  : Inst_VOP1(iFmt, "v_ceil_f16")
9240  {
9241  setFlag(ALU);
9242  setFlag(F16);
9243  } // Inst_VOP1__V_CEIL_F16
9244 
9246  {
9247  } // ~Inst_VOP1__V_CEIL_F16
9248 
9249  // D.f16 = ceil(S0.f16);
9250  void
9252  {
9254  }
9255 
9257  : Inst_VOP1(iFmt, "v_trunc_f16")
9258  {
9259  setFlag(ALU);
9260  setFlag(F16);
9261  } // Inst_VOP1__V_TRUNC_F16
9262 
9264  {
9265  } // ~Inst_VOP1__V_TRUNC_F16
9266 
9267  // D.f16 = trunc(S0.f16).
9268  void
9270  {
9272  }
9273 
9275  : Inst_VOP1(iFmt, "v_rndne_f16")
9276  {
9277  setFlag(ALU);
9278  setFlag(F16);
9279  } // Inst_VOP1__V_RNDNE_F16
9280 
9282  {
9283  } // ~Inst_VOP1__V_RNDNE_F16
9284 
9285  // D.f16 = roundNearestEven(S0.f16);
9286  void
9288  {
9290  }
9291 
9293  : Inst_VOP1(iFmt, "v_fract_f16")
9294  {
9295  setFlag(ALU);
9296  setFlag(F16);
9297  } // Inst_VOP1__V_FRACT_F16
9298 
9300  {
9301  } // ~Inst_VOP1__V_FRACT_F16
9302 
9303  // D.f16 = S0.f16 + -floor(S0.f16).
9304  void
9306  {
9308  }
9309 
9311  : Inst_VOP1(iFmt, "v_sin_f16")
9312  {
9313  setFlag(ALU);
9314  setFlag(F16);
9315  } // Inst_VOP1__V_SIN_F16
9316 
9318  {
9319  } // ~Inst_VOP1__V_SIN_F16
9320 
9321  // D.f16 = sin(S0.f16 * 2 * PI).
9322  void
9324  {
9326  }
9327 
9329  : Inst_VOP1(iFmt, "v_cos_f16")
9330  {
9331  setFlag(ALU);
9332  setFlag(F16);
9333  } // Inst_VOP1__V_COS_F16
9334 
9336  {
9337  } // ~Inst_VOP1__V_COS_F16
9338 
9339  // D.f16 = cos(S0.f16 * 2 * PI).
9340  void
9342  {
9344  }
9345 
9347  : Inst_VOP1(iFmt, "v_exp_legacy_f32")
9348  {
9349  setFlag(ALU);
9350  setFlag(F32);
9351  } // Inst_VOP1__V_EXP_LEGACY_F32
9352 
9354  {
9355  } // ~Inst_VOP1__V_EXP_LEGACY_F32
9356 
9357  // D.f = pow(2.0, S0.f)
9358  void
9360  {
9361  Wavefront *wf = gpuDynInst->wavefront();
9362  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
9363  VecOperandF32 vdst(gpuDynInst, instData.VDST);
9364 
9365  src.readSrc();
9366 
9367  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9368  if (wf->execMask(lane)) {
9369  vdst[lane] = std::pow(2.0, src[lane]);
9370  }
9371  }
9372 
9373  vdst.write();
9374  }
9375 
9377  : Inst_VOP1(iFmt, "v_log_legacy_f32")
9378  {
9379  setFlag(ALU);
9380  setFlag(F32);
9381  } // Inst_VOP1__V_LOG_LEGACY_F32
9382 
9384  {
9385  } // ~Inst_VOP1__V_LOG_LEGACY_F32
9386 
9387  // D.f = log2(S0.f).
9388  void
9390  {
9391  Wavefront *wf = gpuDynInst->wavefront();
9392  ConstVecOperandF32 src(gpuDynInst, instData.SRC0);
9393  VecOperandF32 vdst(gpuDynInst, instData.VDST);
9394 
9395  src.readSrc();
9396 
9397  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9398  if (wf->execMask(lane)) {
9399  vdst[lane] = std::log2(src[lane]);
9400  }
9401  }
9402 
9403  vdst.write();
9404  }
9405 
9407  : Inst_VOPC(iFmt, "v_cmp_class_f32")
9408  {
9409  setFlag(ALU);
9410  setFlag(F32);
9411  } // Inst_VOPC__V_CMP_CLASS_F32
9412 
9414  {
9415  } // ~Inst_VOPC__V_CMP_CLASS_F32
9416 
9417  // VCC = IEEE numeric class function specified in S1.u, performed on S0.f
9418  // The function reports true if the floating point value is any of the
9419  // numeric types selected in S1.u according to the following list:
9420  // S1.u[0] -- value is a signaling NaN.
9421  // S1.u[1] -- value is a quiet NaN.
9422  // S1.u[2] -- value is negative infinity.
9423  // S1.u[3] -- value is a negative normal value.
9424  // S1.u[4] -- value is a negative denormal value.
9425  // S1.u[5] -- value is negative zero.
9426  // S1.u[6] -- value is positive zero.
9427  // S1.u[7] -- value is a positive denormal value.
9428  // S1.u[8] -- value is a positive normal value.
9429  // S1.u[9] -- value is positive infinity.
9430  void
9432  {
9433  Wavefront *wf = gpuDynInst->wavefront();
9434  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
9435  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
9436  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
9437 
9438  src0.readSrc();
9439  src1.read();
9440 
9441  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9442  if (wf->execMask(lane)) {
9443  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
9444  // is NaN
9445  if (std::isnan(src0[lane])) {
9446  vcc.setBit(lane, 1);
9447  continue;
9448  }
9449  }
9450  if (bits(src1[lane], 2)) {
9451  // is -infinity
9452  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
9453  vcc.setBit(lane, 1);
9454  continue;
9455  }
9456  }
9457  if (bits(src1[lane], 3)) {
9458  // is -normal
9459  if (std::isnormal(src0[lane])
9460  && std::signbit(src0[lane])) {
9461  vcc.setBit(lane, 1);
9462  continue;
9463  }
9464  }
9465  if (bits(src1[lane], 4)) {
9466  // is -denormal
9467  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
9468  && std::signbit(src0[lane])) {
9469  vcc.setBit(lane, 1);
9470  continue;
9471  }
9472  }
9473  if (bits(src1[lane], 5)) {
9474  // is -zero
9475  if (std::fpclassify(src0[lane]) == FP_ZERO
9476  && std::signbit(src0[lane])) {
9477  vcc.setBit(lane, 1);
9478  continue;
9479  }
9480  }
9481  if (bits(src1[lane], 6)) {
9482  // is +zero
9483  if (std::fpclassify(src0[lane]) == FP_ZERO
9484  && !std::signbit(src0[lane])) {
9485  vcc.setBit(lane, 1);
9486  continue;
9487  }
9488  }
9489  if (bits(src1[lane], 7)) {
9490  // is +denormal
9491  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
9492  && !std::signbit(src0[lane])) {
9493  vcc.setBit(lane, 1);
9494  continue;
9495  }
9496  }
9497  if (bits(src1[lane], 8)) {
9498  // is +normal
9499  if (std::isnormal(src0[lane])
9500  && !std::signbit(src0[lane])) {
9501  vcc.setBit(lane, 1);
9502  continue;
9503  }
9504  }
9505  if (bits(src1[lane], 9)) {
9506  // is +infinity
9507  if (std::isinf(src0[lane]) && !std::signbit(src0[lane])) {
9508  vcc.setBit(lane, 1);
9509  continue;
9510  }
9511  }
9512  }
9513  }
9514 
9515  vcc.write();
9516  }
9517 
9519  : Inst_VOPC(iFmt, "v_cmpx_class_f32")
9520  {
9521  setFlag(ALU);
9522  setFlag(F32);
9523  } // Inst_VOPC__V_CMPX_CLASS_F32
9524 
9526  {
9527  } // ~Inst_VOPC__V_CMPX_CLASS_F32
9528 
9529  // EXEC, VCC = IEEE numeric class function specified in S1.u, performed on
9530  // S0.f The function reports true if the floating point value is any of
9531  // the numeric types selected in S1.u according to the following list:
9532  // S1.u[0] -- value is a signaling NaN.
9533  // S1.u[1] -- value is a quiet NaN.
9534  // S1.u[2] -- value is negative infinity.
9535  // S1.u[3] -- value is a negative normal value.
9536  // S1.u[4] -- value is a negative denormal value.
9537  // S1.u[5] -- value is negative zero.
9538  // S1.u[6] -- value is positive zero.
9539  // S1.u[7] -- value is a positive denormal value.
9540  // S1.u[8] -- value is a positive normal value.
9541  // S1.u[9] -- value is positive infinity.
9542  void
9544  {
9545  Wavefront *wf = gpuDynInst->wavefront();
9546  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
9547  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
9548  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
9549 
9550  src0.readSrc();
9551  src1.read();
9552 
9553  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9554  if (wf->execMask(lane)) {
9555  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
9556  // is NaN
9557  if (std::isnan(src0[lane])) {
9558  vcc.setBit(lane, 1);
9559  continue;
9560  }
9561  }
9562  if (bits(src1[lane], 2)) {
9563  // is -infinity
9564  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
9565  vcc.setBit(lane, 1);
9566  continue;
9567  }
9568  }
9569  if (bits(src1[lane], 3)) {
9570  // is -normal
9571  if (std::isnormal(src0[lane])
9572  && std::signbit(src0[lane])) {
9573  vcc.setBit(lane, 1);
9574  continue;
9575  }
9576  }
9577  if (bits(src1[lane], 4)) {
9578  // is -denormal
9579  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
9580  && std::signbit(src0[lane])) {
9581  vcc.setBit(lane, 1);
9582  continue;
9583  }
9584  }
9585  if (bits(src1[lane], 5)) {
9586  // is -zero
9587  if (std::fpclassify(src0[lane]) == FP_ZERO
9588  && std::signbit(src0[lane])) {
9589  vcc.setBit(lane, 1);
9590  continue;
9591  }
9592  }
9593  if (bits(src1[lane], 6)) {
9594  // is +zero
9595  if (std::fpclassify(src0[lane]) == FP_ZERO
9596  && !std::signbit(src0[lane])) {
9597  vcc.setBit(lane, 1);
9598  continue;
9599  }
9600  }
9601  if (bits(src1[lane], 7)) {
9602  // is +denormal
9603  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
9604  && !std::signbit(src0[lane])) {
9605  vcc.setBit(lane, 1);
9606  continue;
9607  }
9608  }
9609  if (bits(src1[lane], 8)) {
9610  // is +normal
9611  if (std::isnormal(src0[lane])
9612  && !std::signbit(src0[lane])) {
9613  vcc.setBit(lane, 1);
9614  continue;
9615  }
9616  }
9617  if (bits(src1[lane], 9)) {
9618  // is +infinity
9619  if (std::isinf(src0[lane]) && !std::signbit(src0[lane])) {
9620  vcc.setBit(lane, 1);
9621  continue;
9622  }
9623  }
9624  }
9625  }
9626 
9627  vcc.write();
9628  wf->execMask() = vcc.rawData();
9629  }
9630 
9632  : Inst_VOPC(iFmt, "v_cmp_class_f64")
9633  {
9634  setFlag(ALU);
9635  setFlag(F64);
9636  } // Inst_VOPC__V_CMP_CLASS_F64
9637 
9639  {
9640  } // ~Inst_VOPC__V_CMP_CLASS_F64
9641 
9642  // VCC = IEEE numeric class function specified in S1.u, performed on S0.d
9643  // The function reports true if the floating point value is any of the
9644  // numeric types selected in S1.u according to the following list:
9645  // S1.u[0] -- value is a signaling NaN.
9646  // S1.u[1] -- value is a quiet NaN.
9647  // S1.u[2] -- value is negative infinity.
9648  // S1.u[3] -- value is a negative normal value.
9649  // S1.u[4] -- value is a negative denormal value.
9650  // S1.u[5] -- value is negative zero.
9651  // S1.u[6] -- value is positive zero.
9652  // S1.u[7] -- value is a positive denormal value.
9653  // S1.u[8] -- value is a positive normal value.
9654  // S1.u[9] -- value is positive infinity.
9655  void
9657  {
9658  Wavefront *wf = gpuDynInst->wavefront();
9659  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
9660  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
9661  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
9662 
9663  src0.readSrc();
9664  src1.read();
9665 
9666  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9667  if (wf->execMask(lane)) {
9668  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
9669  // is NaN
9670  if (std::isnan(src0[lane])) {
9671  vcc.setBit(lane, 1);
9672  continue;
9673  }
9674  }
9675  if (bits(src1[lane], 2)) {
9676  // is -infinity
9677  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
9678  vcc.setBit(lane, 1);
9679  continue;
9680  }
9681  }
9682  if (bits(src1[lane], 3)) {
9683  // is -normal
9684  if (std::isnormal(src0[lane])
9685  && std::signbit(src0[lane])) {
9686  vcc.setBit(lane, 1);
9687  continue;
9688  }
9689  }
9690  if (bits(src1[lane], 4)) {
9691  // is -denormal
9692  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
9693  && std::signbit(src0[lane])) {
9694  vcc.setBit(lane, 1);
9695  continue;
9696  }
9697  }
9698  if (bits(src1[lane], 5)) {
9699  // is -zero
9700  if (std::fpclassify(src0[lane]) == FP_ZERO
9701  && std::signbit(src0[lane])) {
9702  vcc.setBit(lane, 1);
9703  continue;
9704  }
9705  }
9706  if (bits(src1[lane], 6)) {
9707  // is +zero
9708  if (std::fpclassify(src0[lane]) == FP_ZERO
9709  && !std::signbit(src0[lane])) {
9710  vcc.setBit(lane, 1);
9711  continue;
9712  }
9713  }
9714  if (bits(src1[lane], 7)) {
9715  // is +denormal
9716  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
9717  && !std::signbit(src0[lane])) {
9718  vcc.setBit(lane, 1);
9719  continue;
9720  }
9721  }
9722  if (bits(src1[lane], 8)) {
9723  // is +normal
9724  if (std::isnormal(src0[lane])
9725  && !std::signbit(src0[lane])) {
9726  vcc.setBit(lane, 1);
9727  continue;
9728  }
9729  }
9730  if (bits(src1[lane], 9)) {
9731  // is +infinity
9732  if (std::isinf(src0[lane])
9733  && !std::signbit(src0[lane])) {
9734  vcc.setBit(lane, 1);
9735  continue;
9736  }
9737  }
9738  }
9739  }
9740 
9741  vcc.write();
9742  }
9743 
9745  : Inst_VOPC(iFmt, "v_cmpx_class_f64")
9746  {
9747  setFlag(ALU);
9748  setFlag(F64);
9749  } // Inst_VOPC__V_CMPX_CLASS_F64
9750 
9752  {
9753  } // ~Inst_VOPC__V_CMPX_CLASS_F64
9754 
9755  // EXEC, VCC = IEEE numeric class function specified in S1.u, performed on
9756  // S0.d The function reports true if the floating point value is any of
9757  // the numeric types selected in S1.u according to the following list:
9758  // S1.u[0] -- value is a signaling NaN.
9759  // S1.u[1] -- value is a quiet NaN.
9760  // S1.u[2] -- value is negative infinity.
9761  // S1.u[3] -- value is a negative normal value.
9762  // S1.u[4] -- value is a negative denormal value.
9763  // S1.u[5] -- value is negative zero.
9764  // S1.u[6] -- value is positive zero.
9765  // S1.u[7] -- value is a positive denormal value.
9766  // S1.u[8] -- value is a positive normal value.
9767  // S1.u[9] -- value is positive infinity.
9768  void
9770  {
9771  Wavefront *wf = gpuDynInst->wavefront();
9772  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
9773  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
9774  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
9775 
9776  src0.readSrc();
9777  src1.read();
9778 
9779  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
9780  if (wf->execMask(lane)) {
9781  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
9782  // is NaN
9783  if (std::isnan(src0[lane])) {
9784  vcc.setBit(lane, 1);
9785  continue;
9786  }
9787  }
9788  if (bits(src1[lane], 2)) {
9789  // is -infinity
9790  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
9791  vcc.setBit(lane, 1);
9792  continue;
9793  }
9794  }
9795  if (bits(src1[lane], 3)) {
9796  // is -normal
9797  if (std::isnormal(src0[lane])
9798  && std::signbit(src0[lane])) {
9799  vcc.setBit(lane, 1);
9800  continue;
9801  }
9802  }
9803  if (bits(src1[lane], 4)) {
9804  // is -denormal
9805  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
9806  && std::signbit(src0[lane])) {
9807  vcc.setBit(lane, 1);
9808  continue;
9809  }
9810  }
9811  if (bits(src1[lane], 5)) {
9812  // is -zero
9813  if (std::fpclassify(src0[lane]) == FP_ZERO
9814  && std::signbit(src0[lane])) {
9815  vcc.setBit(lane, 1);
9816  continue;
9817  }
9818  }
9819  if (bits(src1[lane], 6)) {
9820  // is +zero
9821  if (std::fpclassify(src0[lane]) == FP_ZERO
9822  && !std::signbit(src0[lane])) {
9823  vcc.setBit(lane, 1);
9824  continue;
9825  }
9826  }
9827  if (bits(src1[lane], 7)) {
9828  // is +denormal
9829  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
9830  && !std::signbit(src0[lane])) {
9831  vcc.setBit(lane, 1);
9832  continue;
9833  }
9834  }
9835  if (bits(src1[lane], 8)) {
9836  // is +normal
9837  if (std::isnormal(src0[lane])
9838  && !std::signbit(src0[lane])) {
9839  vcc.setBit(lane, 1);
9840  continue;
9841  }
9842  }
9843  if (bits(src1[lane], 9)) {
9844  // is +infinity
9845  if (std::isinf(src0[lane])
9846  && !std::signbit(src0[lane])) {
9847  vcc.setBit(lane, 1);
9848  continue;
9849  }
9850  }
9851  }
9852  }
9853 
9854  vcc.write();
9855  wf->execMask() = vcc.rawData();
9856  }
9857 
9859  : Inst_VOPC(iFmt, "v_cmp_class_f16")
9860  {
9861  setFlag(ALU);
9862  setFlag(F16);
9863  } // Inst_VOPC__V_CMP_CLASS_F16
9864 
9866  {
9867  } // ~Inst_VOPC__V_CMP_CLASS_F16
9868 
9869  // VCC = IEEE numeric class function specified in S1.u, performed on S0.f16
9870  // The function reports true if the floating point value is any of the
9871  // numeric types selected in S1.u according to the following list:
9872  // S1.u[0] -- value is a signaling NaN.
9873  // S1.u[1] -- value is a quiet NaN.
9874  // S1.u[2] -- value is negative infinity.
9875  // S1.u[3] -- value is a negative normal value.
9876  // S1.u[4] -- value is a negative denormal value.
9877  // S1.u[5] -- value is negative zero.
9878  // S1.u[6] -- value is positive zero.
9879  // S1.u[7] -- value is a positive denormal value.
9880  // S1.u[8] -- value is a positive normal value.
9881  // S1.u[9] -- value is positive infinity.
9882  void
9884  {
9886  }
9887 
9889  : Inst_VOPC(iFmt, "v_cmpx_class_f16")
9890  {
9891  setFlag(ALU);
9892  setFlag(F16);
9893  } // Inst_VOPC__V_CMPX_CLASS_F16
9894 
9896  {
9897  } // ~Inst_VOPC__V_CMPX_CLASS_F16
9898 
9899  // EXEC, VCC = IEEE numeric class function specified in S1.u, performed on
9900  // S0.f16
9901  // The function reports true if the floating point value is any of the
9902  // numeric types selected in S1.u according to the following list:
9903  // S1.u[0] -- value is a signaling NaN.
9904  // S1.u[1] -- value is a quiet NaN.
9905  // S1.u[2] -- value is negative infinity.
9906  // S1.u[3] -- value is a negative normal value.
9907  // S1.u[4] -- value is a negative denormal value.
9908  // S1.u[5] -- value is negative zero.
9909  // S1.u[6] -- value is positive zero.
9910  // S1.u[7] -- value is a positive denormal value.
9911  // S1.u[8] -- value is a positive normal value.
9912  // S1.u[9] -- value is positive infinity.
9913  void
9915  {
9917  }
9918 
9920  : Inst_VOPC(iFmt, "v_cmp_f_f16")
9921  {
9922  setFlag(ALU);
9923  setFlag(F16);
9924  } // Inst_VOPC__V_CMP_F_F16
9925 
9927  {
9928  } // ~Inst_VOPC__V_CMP_F_F16
9929 
9930  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
9931  void
9933  {
9935  }
9936 
9938  : Inst_VOPC(iFmt, "v_cmp_lt_f16")
9939  {
9940  setFlag(ALU);
9941  setFlag(F16);
9942  } // Inst_VOPC__V_CMP_LT_F16
9943 
9945  {
9946  } // ~Inst_VOPC__V_CMP_LT_F16
9947 
9948  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
9949  void
9951  {
9953  }
9954 
9956  : Inst_VOPC(iFmt, "v_cmp_eq_f16")
9957  {
9958  setFlag(ALU);
9959  setFlag(F16);
9960  } // Inst_VOPC__V_CMP_EQ_F16
9961 
9963  {
9964  } // ~Inst_VOPC__V_CMP_EQ_F16
9965 
9966  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
9967  void
9969  {
9971  }
9972 
9974  : Inst_VOPC(iFmt, "v_cmp_le_f16")
9975  {
9976  setFlag(ALU);
9977  setFlag(F16);
9978  } // Inst_VOPC__V_CMP_LE_F16
9979 
9981  {
9982  } // ~Inst_VOPC__V_CMP_LE_F16
9983 
9984  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
9985  void
9987  {
9989  }
9990 
9992  : Inst_VOPC(iFmt, "v_cmp_gt_f16")
9993  {
9994  setFlag(ALU);
9995  setFlag(F16);
9996  } // Inst_VOPC__V_CMP_GT_F16
9997 
9999  {
10000  } // ~Inst_VOPC__V_CMP_GT_F16
10001 
10002  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
10003  void
10005  {
10007  }
10008 
10010  : Inst_VOPC(iFmt, "v_cmp_lg_f16")
10011  {
10012  setFlag(ALU);
10013  setFlag(F16);
10014  } // Inst_VOPC__V_CMP_LG_F16
10015 
10017  {
10018  } // ~Inst_VOPC__V_CMP_LG_F16
10019 
10020  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
10021  void
10023  {
10025  }
10026 
10028  : Inst_VOPC(iFmt, "v_cmp_ge_f16")
10029  {
10030  setFlag(ALU);
10031  setFlag(F16);
10032  } // Inst_VOPC__V_CMP_GE_F16
10033 
10035  {
10036  } // ~Inst_VOPC__V_CMP_GE_F16
10037 
10038  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
10039  void
10041  {
10043  }
10044 
10046  : Inst_VOPC(iFmt, "v_cmp_o_f16")
10047  {
10048  setFlag(ALU);
10049  setFlag(F16);
10050  } // Inst_VOPC__V_CMP_O_F16
10051 
10053  {
10054  } // ~Inst_VOPC__V_CMP_O_F16
10055 
10056  // D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC encoding.
10057  void
10059  {
10061  }
10062 
10064  : Inst_VOPC(iFmt, "v_cmp_u_f16")
10065  {
10066  setFlag(ALU);
10067  setFlag(F16);
10068  } // Inst_VOPC__V_CMP_U_F16
10069 
10071  {
10072  } // ~Inst_VOPC__V_CMP_U_F16
10073 
10074  // D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC encoding.
10075  void
10077  {
10079  }
10080 
10082  : Inst_VOPC(iFmt, "v_cmp_nge_f16")
10083  {
10084  setFlag(ALU);
10085  setFlag(F16);
10086  } // Inst_VOPC__V_CMP_NGE_F16
10087 
10089  {
10090  } // ~Inst_VOPC__V_CMP_NGE_F16
10091 
10092  // D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
10093  void
10095  {
10097  }
10098 
10100  : Inst_VOPC(iFmt, "v_cmp_nlg_f16")
10101  {
10102  setFlag(ALU);
10103  setFlag(F16);
10104  } // Inst_VOPC__V_CMP_NLG_F16
10105 
10107  {
10108  } // ~Inst_VOPC__V_CMP_NLG_F16
10109 
10110  // D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
10111  void
10113  {
10115  }
10116 
10118  : Inst_VOPC(iFmt, "v_cmp_ngt_f16")
10119  {
10120  setFlag(ALU);
10121  setFlag(F16);
10122  } // Inst_VOPC__V_CMP_NGT_F16
10123 
10125  {
10126  } // ~Inst_VOPC__V_CMP_NGT_F16
10127 
10128  // D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
10129  void
10131  {
10133  }
10134 
10136  : Inst_VOPC(iFmt, "v_cmp_nle_f16")
10137  {
10138  setFlag(ALU);
10139  setFlag(F16);
10140  } // Inst_VOPC__V_CMP_NLE_F16
10141 
10143  {
10144  } // ~Inst_VOPC__V_CMP_NLE_F16
10145 
10146  // D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
10147  void
10149  {
10151  }
10152 
10154  : Inst_VOPC(iFmt, "v_cmp_neq_f16")
10155  {
10156  setFlag(ALU);
10157  setFlag(F16);
10158  } // Inst_VOPC__V_CMP_NEQ_F16
10159 
10161  {
10162  } // ~Inst_VOPC__V_CMP_NEQ_F16
10163 
10164  // D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
10165  void
10167  {
10169  }
10170 
10172  : Inst_VOPC(iFmt, "v_cmp_nlt_f16")
10173  {
10174  setFlag(ALU);
10175  setFlag(F16);
10176  } // Inst_VOPC__V_CMP_NLT_F16
10177 
10179  {
10180  } // ~Inst_VOPC__V_CMP_NLT_F16
10181 
10182  // D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
10183  void
10185  {
10187  }
10188 
10190  : Inst_VOPC(iFmt, "v_cmp_tru_f16")
10191  {
10192  setFlag(ALU);
10193  setFlag(F16);
10194  } // Inst_VOPC__V_CMP_TRU_F16
10195 
10197  {
10198  } // ~Inst_VOPC__V_CMP_TRU_F16
10199 
10200  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
10201  void
10203  {
10205  }
10206 
10208  : Inst_VOPC(iFmt, "v_cmpx_f_f16")
10209  {
10210  setFlag(ALU);
10211  setFlag(F16);
10212  } // Inst_VOPC__V_CMPX_F_F16
10213 
10215  {
10216  } // ~Inst_VOPC__V_CMPX_F_F16
10217 
10218  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
10219  void
10221  {
10223  }
10224 
10226  : Inst_VOPC(iFmt, "v_cmpx_lt_f16")
10227  {
10228  setFlag(ALU);
10229  setFlag(F16);
10230  } // Inst_VOPC__V_CMPX_LT_F16
10231 
10233  {
10234  } // ~Inst_VOPC__V_CMPX_LT_F16
10235 
10236  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
10237  void
10239  {
10241  }
10242 
10244  : Inst_VOPC(iFmt, "v_cmpx_eq_f16")
10245  {
10246  setFlag(ALU);
10247  setFlag(F16);
10248  } // Inst_VOPC__V_CMPX_EQ_F16
10249 
10251  {
10252  } // ~Inst_VOPC__V_CMPX_EQ_F16
10253 
10254  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
10255  void
10257  {
10259  }
10260 
10262  : Inst_VOPC(iFmt, "v_cmpx_le_f16")
10263  {
10264  setFlag(ALU);
10265  setFlag(F16);
10266  } // Inst_VOPC__V_CMPX_LE_F16
10267 
10269  {
10270  } // ~Inst_VOPC__V_CMPX_LE_F16
10271 
10272  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
10273  void
10275  {
10277  }
10278 
10280  : Inst_VOPC(iFmt, "v_cmpx_gt_f16")
10281  {
10282  setFlag(ALU);
10283  setFlag(F16);
10284  } // Inst_VOPC__V_CMPX_GT_F16
10285 
10287  {
10288  } // ~Inst_VOPC__V_CMPX_GT_F16
10289 
10290  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
10291  void
10293  {
10295  }
10296 
10298  : Inst_VOPC(iFmt, "v_cmpx_lg_f16")
10299  {
10300  setFlag(ALU);
10301  setFlag(F16);
10302  } // Inst_VOPC__V_CMPX_LG_F16
10303 
10305  {
10306  } // ~Inst_VOPC__V_CMPX_LG_F16
10307 
10308  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
10309  void
10311  {
10313  }
10314 
10316  : Inst_VOPC(iFmt, "v_cmpx_ge_f16")
10317  {
10318  setFlag(ALU);
10319  setFlag(F16);
10320  } // Inst_VOPC__V_CMPX_GE_F16
10321 
10323  {
10324  } // ~Inst_VOPC__V_CMPX_GE_F16
10325 
10326  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
10327  void
10329  {
10331  }
10332 
10334  : Inst_VOPC(iFmt, "v_cmpx_o_f16")
10335  {
10336  setFlag(ALU);
10337  setFlag(F16);
10338  } // Inst_VOPC__V_CMPX_O_F16
10339 
10341  {
10342  } // ~Inst_VOPC__V_CMPX_O_F16
10343 
10344  // EXEC,D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC
10345  // encoding.
10346  void
10348  {
10350  }
10351 
10353  : Inst_VOPC(iFmt, "v_cmpx_u_f16")
10354  {
10355  setFlag(ALU);
10356  setFlag(F16);
10357  } // Inst_VOPC__V_CMPX_U_F16
10358 
10360  {
10361  } // ~Inst_VOPC__V_CMPX_U_F16
10362 
10363  // EXEC,D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC
10364  // encoding.
10365  void
10367  {
10369  }
10370 
10372  : Inst_VOPC(iFmt, "v_cmpx_nge_f16")
10373  {
10374  setFlag(ALU);
10375  setFlag(F16);
10376  } // Inst_VOPC__V_CMPX_NGE_F16
10377 
10379  {
10380  } // ~Inst_VOPC__V_CMPX_NGE_F16
10381 
10382  // EXEC,D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
10383  void
10385  {
10387  }
10388 
10390  : Inst_VOPC(iFmt, "v_cmpx_nlg_f16")
10391  {
10392  setFlag(ALU);
10393  setFlag(F16);
10394  } // Inst_VOPC__V_CMPX_NLG_F16
10395 
10397  {
10398  } // ~Inst_VOPC__V_CMPX_NLG_F16
10399 
10400  // EXEC,D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
10401  void
10403  {
10405  }
10406 
10408  : Inst_VOPC(iFmt, "v_cmpx_ngt_f16")
10409  {
10410  setFlag(ALU);
10411  setFlag(F16);
10412  } // Inst_VOPC__V_CMPX_NGT_F16
10413 
10415  {
10416  } // ~Inst_VOPC__V_CMPX_NGT_F16
10417 
10418  // EXEC,D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
10419  void
10421  {
10423  }
10424 
10426  : Inst_VOPC(iFmt, "v_cmpx_nle_f16")
10427  {
10428  setFlag(ALU);
10429  setFlag(F16);
10430  } // Inst_VOPC__V_CMPX_NLE_F16
10431 
10433  {
10434  } // ~Inst_VOPC__V_CMPX_NLE_F16
10435 
10436  // EXEC,D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
10437  void
10439  {
10441  }
10442 
10444  : Inst_VOPC(iFmt, "v_cmpx_neq_f16")
10445  {
10446  setFlag(ALU);
10447  setFlag(F16);
10448  } // Inst_VOPC__V_CMPX_NEQ_F16
10449 
10451  {
10452  } // ~Inst_VOPC__V_CMPX_NEQ_F16
10453 
10454  // EXEC,D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
10455  void
10457  {
10459  }
10460 
10462  : Inst_VOPC(iFmt, "v_cmpx_nlt_f16")
10463  {
10464  setFlag(ALU);
10465  setFlag(F16);
10466  } // Inst_VOPC__V_CMPX_NLT_F16
10467 
10469  {
10470  } // ~Inst_VOPC__V_CMPX_NLT_F16
10471 
10472  // EXEC,D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
10473  void
10475  {
10477  }
10478 
10480  : Inst_VOPC(iFmt, "v_cmpx_tru_f16")
10481  {
10482  setFlag(ALU);
10483  setFlag(F16);
10484  } // Inst_VOPC__V_CMPX_TRU_F16
10485 
10487  {
10488  } // ~Inst_VOPC__V_CMPX_TRU_F16
10489 
10490  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
10491  void
10493  {
10495  }
10496 
10498  : Inst_VOPC(iFmt, "v_cmp_f_f32")
10499  {
10500  setFlag(ALU);
10501  setFlag(F32);
10502  } // Inst_VOPC__V_CMP_F_F32
10503 
10505  {
10506  } // ~Inst_VOPC__V_CMP_F_F32
10507 
10508  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
10509  void
10511  {
10512  Wavefront *wf = gpuDynInst->wavefront();
10513  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10514 
10515  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10516  if (wf->execMask(lane)) {
10517  vcc.setBit(lane, 0);
10518  }
10519  }
10520 
10521  vcc.write();
10522  }
10523 
10525  : Inst_VOPC(iFmt, "v_cmp_lt_f32")
10526  {
10527  setFlag(ALU);
10528  setFlag(F32);
10529  } // Inst_VOPC__V_CMP_LT_F32
10530 
10532  {
10533  } // ~Inst_VOPC__V_CMP_LT_F32
10534 
10535  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
10536  void
10538  {
10539  Wavefront *wf = gpuDynInst->wavefront();
10540  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10541  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10542  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10543 
10544  src0.readSrc();
10545  src1.read();
10546 
10547  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10548  if (wf->execMask(lane)) {
10549  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
10550  }
10551  }
10552 
10553  vcc.write();
10554  }
10555 
10557  : Inst_VOPC(iFmt, "v_cmp_eq_f32")
10558  {
10559  setFlag(ALU);
10560  setFlag(F32);
10561  } // Inst_VOPC__V_CMP_EQ_F32
10562 
10564  {
10565  } // ~Inst_VOPC__V_CMP_EQ_F32
10566 
10567  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
10568  void
10570  {
10571  Wavefront *wf = gpuDynInst->wavefront();
10572  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10573  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10574  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10575 
10576  src0.readSrc();
10577  src1.read();
10578 
10579  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10580  if (wf->execMask(lane)) {
10581  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
10582  }
10583  }
10584 
10585  vcc.write();
10586  }
10587 
10589  : Inst_VOPC(iFmt, "v_cmp_le_f32")
10590  {
10591  setFlag(ALU);
10592  setFlag(F32);
10593  } // Inst_VOPC__V_CMP_LE_F32
10594 
10596  {
10597  } // ~Inst_VOPC__V_CMP_LE_F32
10598 
10599  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
10600  void
10602  {
10603  Wavefront *wf = gpuDynInst->wavefront();
10604  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10605  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10606  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10607 
10608  src0.readSrc();
10609  src1.read();
10610 
10611  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10612  if (wf->execMask(lane)) {
10613  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
10614  }
10615  }
10616 
10617  vcc.write();
10618  }
10619 
10621  : Inst_VOPC(iFmt, "v_cmp_gt_f32")
10622  {
10623  setFlag(ALU);
10624  setFlag(F32);
10625  } // Inst_VOPC__V_CMP_GT_F32
10626 
10628  {
10629  } // ~Inst_VOPC__V_CMP_GT_F32
10630 
10631  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
10632  void
10634  {
10635  Wavefront *wf = gpuDynInst->wavefront();
10636  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10637  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10638  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10639 
10640  src0.readSrc();
10641  src1.read();
10642 
10643  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10644  if (wf->execMask(lane)) {
10645  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
10646  }
10647  }
10648 
10649  vcc.write();
10650  }
10651 
10653  : Inst_VOPC(iFmt, "v_cmp_lg_f32")
10654  {
10655  setFlag(ALU);
10656  setFlag(F32);
10657  } // Inst_VOPC__V_CMP_LG_F32
10658 
10660  {
10661  } // ~Inst_VOPC__V_CMP_LG_F32
10662 
10663  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
10664  void
10666  {
10667  Wavefront *wf = gpuDynInst->wavefront();
10668  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10669  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10670  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10671 
10672  src0.readSrc();
10673  src1.read();
10674 
10675  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10676  if (wf->execMask(lane)) {
10677  vcc.setBit(lane, (src0[lane] < src1[lane]
10678  || src0[lane] > src1[lane]) ? 1 : 0);
10679  }
10680  }
10681 
10682  vcc.write();
10683  }
10684 
10686  : Inst_VOPC(iFmt, "v_cmp_ge_f32")
10687  {
10688  setFlag(ALU);
10689  setFlag(F32);
10690  } // Inst_VOPC__V_CMP_GE_F32
10691 
10693  {
10694  } // ~Inst_VOPC__V_CMP_GE_F32
10695 
10696  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
10697  void
10699  {
10700  Wavefront *wf = gpuDynInst->wavefront();
10701  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10702  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10703  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10704 
10705  src0.readSrc();
10706  src1.read();
10707 
10708  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10709  if (wf->execMask(lane)) {
10710  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
10711  }
10712  }
10713 
10714  vcc.write();
10715  }
10716 
10718  : Inst_VOPC(iFmt, "v_cmp_o_f32")
10719  {
10720  setFlag(ALU);
10721  setFlag(F32);
10722  } // Inst_VOPC__V_CMP_O_F32
10723 
10725  {
10726  } // ~Inst_VOPC__V_CMP_O_F32
10727 
10728  // D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC encoding.
10729  void
10731  {
10732  Wavefront *wf = gpuDynInst->wavefront();
10733  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10734  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10735  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10736 
10737  src0.readSrc();
10738  src1.read();
10739 
10740  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10741  if (wf->execMask(lane)) {
10742  vcc.setBit(lane, (!std::isnan(src0[lane])
10743  && !std::isnan(src1[lane])) ? 1 : 0);
10744  }
10745  }
10746 
10747  vcc.write();
10748  }
10749 
10751  : Inst_VOPC(iFmt, "v_cmp_u_f32")
10752  {
10753  setFlag(ALU);
10754  setFlag(F32);
10755  } // Inst_VOPC__V_CMP_U_F32
10756 
10758  {
10759  } // ~Inst_VOPC__V_CMP_U_F32
10760 
10761  // D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC encoding.
10762  void
10764  {
10765  Wavefront *wf = gpuDynInst->wavefront();
10766  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10767  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10768  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10769 
10770  src0.readSrc();
10771  src1.read();
10772 
10773  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10774  if (wf->execMask(lane)) {
10775  vcc.setBit(lane, (std::isnan(src0[lane])
10776  || std::isnan(src1[lane])) ? 1 : 0);
10777  }
10778  }
10779 
10780  vcc.write();
10781  }
10782 
10784  : Inst_VOPC(iFmt, "v_cmp_nge_f32")
10785  {
10786  setFlag(ALU);
10787  setFlag(F32);
10788  } // Inst_VOPC__V_CMP_NGE_F32
10789 
10791  {
10792  } // ~Inst_VOPC__V_CMP_NGE_F32
10793 
10794  // D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
10795  void
10797  {
10798  Wavefront *wf = gpuDynInst->wavefront();
10799  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10800  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10801  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10802 
10803  src0.readSrc();
10804  src1.read();
10805 
10806  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10807  if (wf->execMask(lane)) {
10808  vcc.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
10809  }
10810  }
10811 
10812  vcc.write();
10813  }
10814 
10816  : Inst_VOPC(iFmt, "v_cmp_nlg_f32")
10817  {
10818  setFlag(ALU);
10819  setFlag(F32);
10820  } // Inst_VOPC__V_CMP_NLG_F32
10821 
10823  {
10824  } // ~Inst_VOPC__V_CMP_NLG_F32
10825 
10826  // D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
10827  void
10829  {
10830  Wavefront *wf = gpuDynInst->wavefront();
10831  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10832  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10833  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10834 
10835  src0.readSrc();
10836  src1.read();
10837 
10838  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10839  if (wf->execMask(lane)) {
10840  vcc.setBit(lane, !(src0[lane] < src1[lane]
10841  || src0[lane] > src1[lane]) ? 1 : 0);
10842  }
10843  }
10844 
10845  vcc.write();
10846  }
10847 
10849  : Inst_VOPC(iFmt, "v_cmp_ngt_f32")
10850  {
10851  setFlag(ALU);
10852  setFlag(F32);
10853  } // Inst_VOPC__V_CMP_NGT_F32
10854 
10856  {
10857  } // ~Inst_VOPC__V_CMP_NGT_F32
10858 
10859  // D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
10860  void
10862  {
10863  Wavefront *wf = gpuDynInst->wavefront();
10864  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10865  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10866  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10867 
10868  src0.readSrc();
10869  src1.read();
10870 
10871  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10872  if (wf->execMask(lane)) {
10873  vcc.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
10874  }
10875  }
10876 
10877  vcc.write();
10878  }
10879 
10881  : Inst_VOPC(iFmt, "v_cmp_nle_f32")
10882  {
10883  setFlag(ALU);
10884  setFlag(F32);
10885  } // Inst_VOPC__V_CMP_NLE_F32
10886 
10888  {
10889  } // ~Inst_VOPC__V_CMP_NLE_F32
10890 
10891  // D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
10892  void
10894  {
10895  Wavefront *wf = gpuDynInst->wavefront();
10896  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10897  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10898  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10899 
10900  src0.readSrc();
10901  src1.read();
10902 
10903  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10904  if (wf->execMask(lane)) {
10905  vcc.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
10906  }
10907  }
10908 
10909  vcc.write();
10910  }
10911 
10913  : Inst_VOPC(iFmt, "v_cmp_neq_f32")
10914  {
10915  setFlag(ALU);
10916  setFlag(F32);
10917  } // Inst_VOPC__V_CMP_NEQ_F32
10918 
10920  {
10921  } // ~Inst_VOPC__V_CMP_NEQ_F32
10922 
10923  // D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
10924  void
10926  {
10927  Wavefront *wf = gpuDynInst->wavefront();
10928  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10929  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10930  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10931 
10932  src0.readSrc();
10933  src1.read();
10934 
10935  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10936  if (wf->execMask(lane)) {
10937  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
10938  }
10939  }
10940 
10941  vcc.write();
10942  }
10943 
10945  : Inst_VOPC(iFmt, "v_cmp_nlt_f32")
10946  {
10947  setFlag(ALU);
10948  setFlag(F32);
10949  } // Inst_VOPC__V_CMP_NLT_F32
10950 
10952  {
10953  } // ~Inst_VOPC__V_CMP_NLT_F32
10954 
10955  // D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
10956  void
10958  {
10959  Wavefront *wf = gpuDynInst->wavefront();
10960  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
10961  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
10962  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10963 
10964  src0.readSrc();
10965  src1.read();
10966 
10967  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10968  if (wf->execMask(lane)) {
10969  vcc.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
10970  }
10971  }
10972 
10973  vcc.write();
10974  }
10975 
10977  : Inst_VOPC(iFmt, "v_cmp_tru_f32")
10978  {
10979  setFlag(ALU);
10980  setFlag(F32);
10981  } // Inst_VOPC__V_CMP_TRU_F32
10982 
10984  {
10985  } // ~Inst_VOPC__V_CMP_TRU_F32
10986 
10987  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
10988  void
10990  {
10991  Wavefront *wf = gpuDynInst->wavefront();
10992  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
10993 
10994  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
10995  if (wf->execMask(lane)) {
10996  vcc.setBit(lane, 1);
10997  }
10998  }
10999 
11000  vcc.write();
11001  }
11002 
11004  : Inst_VOPC(iFmt, "v_cmpx_f_f32")
11005  {
11006  setFlag(ALU);
11007  setFlag(F32);
11008  } // Inst_VOPC__V_CMPX_F_F32
11009 
11011  {
11012  } // ~Inst_VOPC__V_CMPX_F_F32
11013 
11014  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
11015  void
11017  {
11018  Wavefront *wf = gpuDynInst->wavefront();
11019  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11020 
11021  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11022  if (wf->execMask(lane)) {
11023  vcc.setBit(lane, 0);
11024  }
11025  }
11026 
11027  vcc.write();
11028  wf->execMask() = vcc.rawData();
11029  }
11030 
11032  : Inst_VOPC(iFmt, "v_cmpx_lt_f32")
11033  {
11034  setFlag(ALU);
11035  setFlag(F32);
11036  } // Inst_VOPC__V_CMPX_LT_F32
11037 
11039  {
11040  } // ~Inst_VOPC__V_CMPX_LT_F32
11041 
11042  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
11043  void
11045  {
11046  Wavefront *wf = gpuDynInst->wavefront();
11047  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11048  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11049  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11050 
11051  src0.readSrc();
11052  src1.read();
11053 
11054  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11055  if (wf->execMask(lane)) {
11056  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
11057  }
11058  }
11059 
11060  vcc.write();
11061  wf->execMask() = vcc.rawData();
11062  }
11063 
11065  : Inst_VOPC(iFmt, "v_cmpx_eq_f32")
11066  {
11067  setFlag(ALU);
11068  setFlag(F32);
11069  } // Inst_VOPC__V_CMPX_EQ_F32
11070 
11072  {
11073  } // ~Inst_VOPC__V_CMPX_EQ_F32
11074 
11075  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
11076  void
11078  {
11079  Wavefront *wf = gpuDynInst->wavefront();
11080  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11081  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11082  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11083 
11084  src0.readSrc();
11085  src1.read();
11086 
11087  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11088  if (wf->execMask(lane)) {
11089  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
11090  }
11091  }
11092 
11093  vcc.write();
11094  wf->execMask() = vcc.rawData();
11095  }
11096 
11098  : Inst_VOPC(iFmt, "v_cmpx_le_f32")
11099  {
11100  setFlag(ALU);
11101  setFlag(F32);
11102  } // Inst_VOPC__V_CMPX_LE_F32
11103 
11105  {
11106  } // ~Inst_VOPC__V_CMPX_LE_F32
11107 
11108  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
11109  void
11111  {
11112  Wavefront *wf = gpuDynInst->wavefront();
11113  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11114  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11115  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11116 
11117  src0.readSrc();
11118  src1.read();
11119 
11120  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11121  if (wf->execMask(lane)) {
11122  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
11123  }
11124  }
11125 
11126  vcc.write();
11127  wf->execMask() = vcc.rawData();
11128  }
11129 
11131  : Inst_VOPC(iFmt, "v_cmpx_gt_f32")
11132  {
11133  setFlag(ALU);
11134  setFlag(F32);
11135  } // Inst_VOPC__V_CMPX_GT_F32
11136 
11138  {
11139  } // ~Inst_VOPC__V_CMPX_GT_F32
11140 
11141  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
11142  void
11144  {
11145  Wavefront *wf = gpuDynInst->wavefront();
11146  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11147  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11148  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11149 
11150  src0.readSrc();
11151  src1.read();
11152 
11153  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11154  if (wf->execMask(lane)) {
11155  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
11156  }
11157  }
11158 
11159  vcc.write();
11160  wf->execMask() = vcc.rawData();
11161  }
11162 
11164  : Inst_VOPC(iFmt, "v_cmpx_lg_f32")
11165  {
11166  setFlag(ALU);
11167  setFlag(F32);
11168  } // Inst_VOPC__V_CMPX_LG_F32
11169 
11171  {
11172  } // ~Inst_VOPC__V_CMPX_LG_F32
11173 
11174  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
11175  void
11177  {
11178  Wavefront *wf = gpuDynInst->wavefront();
11179  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11180  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11181  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11182 
11183  src0.readSrc();
11184  src1.read();
11185 
11186  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11187  if (wf->execMask(lane)) {
11188  vcc.setBit(lane, (src0[lane] < src1[lane]
11189  || src0[lane] > src1[lane]) ? 1 : 0);
11190  }
11191  }
11192 
11193  vcc.write();
11194  wf->execMask() = vcc.rawData();
11195  }
11196 
11198  : Inst_VOPC(iFmt, "v_cmpx_ge_f32")
11199  {
11200  setFlag(ALU);
11201  setFlag(F32);
11202  } // Inst_VOPC__V_CMPX_GE_F32
11203 
11205  {
11206  } // ~Inst_VOPC__V_CMPX_GE_F32
11207 
11208  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
11209  void
11211  {
11212  Wavefront *wf = gpuDynInst->wavefront();
11213  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11214  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11215  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11216 
11217  src0.readSrc();
11218  src1.read();
11219 
11220  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11221  if (wf->execMask(lane)) {
11222  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
11223  }
11224  }
11225 
11226  vcc.write();
11227  wf->execMask() = vcc.rawData();
11228  }
11229 
11231  : Inst_VOPC(iFmt, "v_cmpx_o_f32")
11232  {
11233  setFlag(ALU);
11234  setFlag(F32);
11235  } // Inst_VOPC__V_CMPX_O_F32
11236 
11238  {
11239  } // ~Inst_VOPC__V_CMPX_O_F32
11240 
11241  // EXEC,D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC
11242  // encoding.
11243  void
11245  {
11246  Wavefront *wf = gpuDynInst->wavefront();
11247  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11248  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11249  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11250 
11251  src0.readSrc();
11252  src1.read();
11253 
11254  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11255  if (wf->execMask(lane)) {
11256  vcc.setBit(lane, (!std::isnan(src0[lane])
11257  && !std::isnan(src1[lane])) ? 1 : 0);
11258  }
11259  }
11260 
11261  vcc.write();
11262  wf->execMask() = vcc.rawData();
11263  }
11264 
11266  : Inst_VOPC(iFmt, "v_cmpx_u_f32")
11267  {
11268  setFlag(ALU);
11269  setFlag(F32);
11270  } // Inst_VOPC__V_CMPX_U_F32
11271 
11273  {
11274  } // ~Inst_VOPC__V_CMPX_U_F32
11275 
11276  // EXEC,D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC
11277  // encoding.
11278  void
11280  {
11281  Wavefront *wf = gpuDynInst->wavefront();
11282  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11283  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11284  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11285 
11286  src0.readSrc();
11287  src1.read();
11288 
11289  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11290  if (wf->execMask(lane)) {
11291  vcc.setBit(lane, (std::isnan(src0[lane])
11292  || std::isnan(src1[lane])) ? 1 : 0);
11293  }
11294  }
11295 
11296  vcc.write();
11297  wf->execMask() = vcc.rawData();
11298  }
11299 
11301  : Inst_VOPC(iFmt, "v_cmpx_nge_f32")
11302  {
11303  setFlag(ALU);
11304  setFlag(F32);
11305  } // Inst_VOPC__V_CMPX_NGE_F32
11306 
11308  {
11309  } // ~Inst_VOPC__V_CMPX_NGE_F32
11310 
11311  // EXEC,D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
11312  void
11314  {
11315  Wavefront *wf = gpuDynInst->wavefront();
11316  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11317  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11318  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11319 
11320  src0.readSrc();
11321  src1.read();
11322 
11323  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11324  if (wf->execMask(lane)) {
11325  vcc.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
11326  }
11327  }
11328 
11329  vcc.write();
11330  wf->execMask() = vcc.rawData();
11331  }
11332 
11334  : Inst_VOPC(iFmt, "v_cmpx_nlg_f32")
11335  {
11336  setFlag(ALU);
11337  setFlag(F32);
11338  } // Inst_VOPC__V_CMPX_NLG_F32
11339 
11341  {
11342  } // ~Inst_VOPC__V_CMPX_NLG_F32
11343 
11344  // EXEC,D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
11345  void
11347  {
11348  Wavefront *wf = gpuDynInst->wavefront();
11349  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11350  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11351  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11352 
11353  src0.readSrc();
11354  src1.read();
11355 
11356  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11357  if (wf->execMask(lane)) {
11358  vcc.setBit(lane, !(src0[lane] < src1[lane]
11359  || src0[lane] > src1[lane]) ? 1 : 0);
11360  }
11361  }
11362 
11363  vcc.write();
11364  wf->execMask() = vcc.rawData();
11365  }
11366 
11368  : Inst_VOPC(iFmt, "v_cmpx_ngt_f32")
11369  {
11370  setFlag(ALU);
11371  setFlag(F32);
11372  } // Inst_VOPC__V_CMPX_NGT_F32
11373 
11375  {
11376  } // ~Inst_VOPC__V_CMPX_NGT_F32
11377 
11378  // EXEC,D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
11379  void
11381  {
11382  Wavefront *wf = gpuDynInst->wavefront();
11383  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11384  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11385  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11386 
11387  src0.readSrc();
11388  src1.read();
11389 
11390  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11391  if (wf->execMask(lane)) {
11392  vcc.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
11393  }
11394  }
11395 
11396  vcc.write();
11397  wf->execMask() = vcc.rawData();
11398  }
11399 
11401  : Inst_VOPC(iFmt, "v_cmpx_nle_f32")
11402  {
11403  setFlag(ALU);
11404  setFlag(F32);
11405  } // Inst_VOPC__V_CMPX_NLE_F32
11406 
11408  {
11409  } // ~Inst_VOPC__V_CMPX_NLE_F32
11410 
11411  // EXEC,D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
11412  void
11414  {
11415  Wavefront *wf = gpuDynInst->wavefront();
11416  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11417  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11418  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11419 
11420  src0.readSrc();
11421  src1.read();
11422 
11423  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11424  if (wf->execMask(lane)) {
11425  vcc.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
11426  }
11427  }
11428 
11429  vcc.write();
11430  wf->execMask() = vcc.rawData();
11431  }
11432 
11434  : Inst_VOPC(iFmt, "v_cmpx_neq_f32")
11435  {
11436  setFlag(ALU);
11437  setFlag(F32);
11438  } // Inst_VOPC__V_CMPX_NEQ_F32
11439 
11441  {
11442  } // ~Inst_VOPC__V_CMPX_NEQ_F32
11443 
11444  // EXEC,D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
11445  void
11447  {
11448  Wavefront *wf = gpuDynInst->wavefront();
11449  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11450  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11451  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11452 
11453  src0.readSrc();
11454  src1.read();
11455 
11456  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11457  if (wf->execMask(lane)) {
11458  vcc.setBit(lane, !(src0[lane] == src1[lane]) ? 1 : 0);
11459  }
11460  }
11461 
11462  vcc.write();
11463  }
11464 
11466  : Inst_VOPC(iFmt, "v_cmpx_nlt_f32")
11467  {
11468  setFlag(ALU);
11469  setFlag(F32);
11470  } // Inst_VOPC__V_CMPX_NLT_F32
11471 
11473  {
11474  } // ~Inst_VOPC__V_CMPX_NLT_F32
11475 
11476  // EXEC,D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
11477  void
11479  {
11480  Wavefront *wf = gpuDynInst->wavefront();
11481  ConstVecOperandF32 src0(gpuDynInst, instData.SRC0);
11482  ConstVecOperandF32 src1(gpuDynInst, instData.VSRC1);
11483  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11484 
11485  src0.readSrc();
11486  src1.read();
11487 
11488  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11489  if (wf->execMask(lane)) {
11490  vcc.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
11491  }
11492  }
11493 
11494  vcc.write();
11495  wf->execMask() = vcc.rawData();
11496  }
11497 
11499  : Inst_VOPC(iFmt, "v_cmpx_tru_f32")
11500  {
11501  setFlag(ALU);
11502  setFlag(F32);
11503  } // Inst_VOPC__V_CMPX_TRU_F32
11504 
11506  {
11507  } // ~Inst_VOPC__V_CMPX_TRU_F32
11508 
11509  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
11510  void
11512  {
11513  Wavefront *wf = gpuDynInst->wavefront();
11514  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11515 
11516  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11517  if (wf->execMask(lane)) {
11518  vcc.setBit(lane, 1);
11519  }
11520  }
11521 
11522  vcc.write();
11523  wf->execMask() = vcc.rawData();
11524  }
11525 
11527  : Inst_VOPC(iFmt, "v_cmp_f_f64")
11528  {
11529  setFlag(ALU);
11530  setFlag(F64);
11531  } // Inst_VOPC__V_CMP_F_F64
11532 
11534  {
11535  } // ~Inst_VOPC__V_CMP_F_F64
11536 
11537  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
11538  void
11540  {
11541  Wavefront *wf = gpuDynInst->wavefront();
11542  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11543 
11544  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11545  if (wf->execMask(lane)) {
11546  vcc.setBit(lane, 0);
11547  }
11548  }
11549 
11550  vcc.write();
11551  }
11552 
11554  : Inst_VOPC(iFmt, "v_cmp_lt_f64")
11555  {
11556  setFlag(ALU);
11557  setFlag(F64);
11558  } // Inst_VOPC__V_CMP_LT_F64
11559 
11561  {
11562  } // ~Inst_VOPC__V_CMP_LT_F64
11563 
11564  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
11565  void
11567  {
11568  Wavefront *wf = gpuDynInst->wavefront();
11569  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11570  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11571  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11572 
11573  src0.readSrc();
11574  src1.read();
11575 
11576  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11577  if (wf->execMask(lane)) {
11578  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
11579  }
11580  }
11581 
11582  vcc.write();
11583  }
11584 
11586  : Inst_VOPC(iFmt, "v_cmp_eq_f64")
11587  {
11588  setFlag(ALU);
11589  setFlag(F64);
11590  } // Inst_VOPC__V_CMP_EQ_F64
11591 
11593  {
11594  } // ~Inst_VOPC__V_CMP_EQ_F64
11595 
11596  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
11597  void
11599  {
11600  Wavefront *wf = gpuDynInst->wavefront();
11601  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11602  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11603  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11604 
11605  src0.readSrc();
11606  src1.read();
11607 
11608  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11609  if (wf->execMask(lane)) {
11610  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
11611  }
11612  }
11613 
11614  vcc.write();
11615  }
11616 
11618  : Inst_VOPC(iFmt, "v_cmp_le_f64")
11619  {
11620  setFlag(ALU);
11621  setFlag(F64);
11622  } // Inst_VOPC__V_CMP_LE_F64
11623 
11625  {
11626  } // ~Inst_VOPC__V_CMP_LE_F64
11627 
11628  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
11629  void
11631  {
11632  Wavefront *wf = gpuDynInst->wavefront();
11633  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11634  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11635  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11636 
11637  src0.readSrc();
11638  src1.read();
11639 
11640  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11641  if (wf->execMask(lane)) {
11642  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
11643  }
11644  }
11645 
11646  vcc.write();
11647  }
11648 
11650  : Inst_VOPC(iFmt, "v_cmp_gt_f64")
11651  {
11652  setFlag(ALU);
11653  setFlag(F64);
11654  } // Inst_VOPC__V_CMP_GT_F64
11655 
11657  {
11658  } // ~Inst_VOPC__V_CMP_GT_F64
11659 
11660  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
11661  void
11663  {
11664  Wavefront *wf = gpuDynInst->wavefront();
11665  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11666  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11667  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11668 
11669  src0.readSrc();
11670  src1.read();
11671 
11672  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11673  if (wf->execMask(lane)) {
11674  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
11675  }
11676  }
11677 
11678  vcc.write();
11679  }
11680 
11682  : Inst_VOPC(iFmt, "v_cmp_lg_f64")
11683  {
11684  setFlag(ALU);
11685  setFlag(F64);
11686  } // Inst_VOPC__V_CMP_LG_F64
11687 
11689  {
11690  } // ~Inst_VOPC__V_CMP_LG_F64
11691 
11692  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
11693  void
11695  {
11696  Wavefront *wf = gpuDynInst->wavefront();
11697  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11698  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11699  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11700 
11701  src0.readSrc();
11702  src1.read();
11703 
11704  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11705  if (wf->execMask(lane)) {
11706  vcc.setBit(lane, (src0[lane] < src1[lane]
11707  || src0[lane] > src1[lane]) ? 1 : 0);
11708  }
11709  }
11710 
11711  vcc.write();
11712  }
11713 
11715  : Inst_VOPC(iFmt, "v_cmp_ge_f64")
11716  {
11717  setFlag(ALU);
11718  setFlag(F64);
11719  } // Inst_VOPC__V_CMP_GE_F64
11720 
11722  {
11723  } // ~Inst_VOPC__V_CMP_GE_F64
11724 
11725  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
11726  void
11728  {
11729  Wavefront *wf = gpuDynInst->wavefront();
11730  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11731  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11732  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11733 
11734  src0.readSrc();
11735  src1.read();
11736 
11737  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11738  if (wf->execMask(lane)) {
11739  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
11740  }
11741  }
11742 
11743  vcc.write();
11744  }
11745 
11747  : Inst_VOPC(iFmt, "v_cmp_o_f64")
11748  {
11749  setFlag(ALU);
11750  setFlag(F64);
11751  } // Inst_VOPC__V_CMP_O_F64
11752 
11754  {
11755  } // ~Inst_VOPC__V_CMP_O_F64
11756 
11757  // D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC encoding.
11758  void
11760  {
11761  Wavefront *wf = gpuDynInst->wavefront();
11762  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11763  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11764  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11765 
11766  src0.readSrc();
11767  src1.read();
11768 
11769  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11770  if (wf->execMask(lane)) {
11771  vcc.setBit(lane, (!std::isnan(src0[lane])
11772  && !std::isnan(src1[lane])) ? 1 : 0);
11773  }
11774  }
11775 
11776  vcc.write();
11777  }
11778 
11780  : Inst_VOPC(iFmt, "v_cmp_u_f64")
11781  {
11782  setFlag(ALU);
11783  setFlag(F64);
11784  } // Inst_VOPC__V_CMP_U_F64
11785 
11787  {
11788  } // ~Inst_VOPC__V_CMP_U_F64
11789 
11790  // D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC encoding.
11791  void
11793  {
11794  Wavefront *wf = gpuDynInst->wavefront();
11795  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11796  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11797  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11798 
11799  src0.readSrc();
11800  src1.read();
11801 
11802  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11803  if (wf->execMask(lane)) {
11804  vcc.setBit(lane, (std::isnan(src0[lane])
11805  || std::isnan(src1[lane])) ? 1 : 0);
11806  }
11807  }
11808 
11809  vcc.write();
11810  }
11811 
11813  : Inst_VOPC(iFmt, "v_cmp_nge_f64")
11814  {
11815  setFlag(ALU);
11816  setFlag(F64);
11817  } // Inst_VOPC__V_CMP_NGE_F64
11818 
11820  {
11821  } // ~Inst_VOPC__V_CMP_NGE_F64
11822 
11823  // D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
11824  void
11826  {
11827  Wavefront *wf = gpuDynInst->wavefront();
11828  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11829  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11830  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11831 
11832  src0.readSrc();
11833  src1.read();
11834 
11835  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11836  if (wf->execMask(lane)) {
11837  vcc.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
11838  }
11839  }
11840 
11841  vcc.write();
11842  }
11843 
11845  : Inst_VOPC(iFmt, "v_cmp_nlg_f64")
11846  {
11847  setFlag(ALU);
11848  setFlag(F64);
11849  } // Inst_VOPC__V_CMP_NLG_F64
11850 
11852  {
11853  } // ~Inst_VOPC__V_CMP_NLG_F64
11854 
11855  // D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
11856  void
11858  {
11859  Wavefront *wf = gpuDynInst->wavefront();
11860  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11861  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11862  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11863 
11864  src0.readSrc();
11865  src1.read();
11866 
11867  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11868  if (wf->execMask(lane)) {
11869  vcc.setBit(lane, !(src0[lane] < src1[lane]
11870  || src0[lane] > src1[lane]) ? 1 : 0);
11871  }
11872  }
11873 
11874  vcc.write();
11875  }
11876 
11878  : Inst_VOPC(iFmt, "v_cmp_ngt_f64")
11879  {
11880  setFlag(ALU);
11881  setFlag(F64);
11882  } // Inst_VOPC__V_CMP_NGT_F64
11883 
11885  {
11886  } // ~Inst_VOPC__V_CMP_NGT_F64
11887 
11888  // D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
11889  void
11891  {
11892  Wavefront *wf = gpuDynInst->wavefront();
11893  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11894  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11895  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11896 
11897  src0.readSrc();
11898  src1.read();
11899 
11900  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11901  if (wf->execMask(lane)) {
11902  vcc.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
11903  }
11904  }
11905 
11906  vcc.write();
11907  }
11908 
11910  : Inst_VOPC(iFmt, "v_cmp_nle_f64")
11911  {
11912  setFlag(ALU);
11913  setFlag(F64);
11914  } // Inst_VOPC__V_CMP_NLE_F64
11915 
11917  {
11918  } // ~Inst_VOPC__V_CMP_NLE_F64
11919 
11920  // D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
11921  void
11923  {
11924  Wavefront *wf = gpuDynInst->wavefront();
11925  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11926  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11927  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11928 
11929  src0.readSrc();
11930  src1.read();
11931 
11932  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11933  if (wf->execMask(lane)) {
11934  vcc.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
11935  }
11936  }
11937 
11938  vcc.write();
11939  }
11940 
11942  : Inst_VOPC(iFmt, "v_cmp_neq_f64")
11943  {
11944  setFlag(ALU);
11945  setFlag(F64);
11946  } // Inst_VOPC__V_CMP_NEQ_F64
11947 
11949  {
11950  } // ~Inst_VOPC__V_CMP_NEQ_F64
11951 
11952  // D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
11953  void
11955  {
11956  Wavefront *wf = gpuDynInst->wavefront();
11957  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11958  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11959  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11960 
11961  src0.readSrc();
11962  src1.read();
11963 
11964  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11965  if (wf->execMask(lane)) {
11966  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
11967  }
11968  }
11969 
11970  vcc.write();
11971  }
11972 
11974  : Inst_VOPC(iFmt, "v_cmp_nlt_f64")
11975  {
11976  setFlag(ALU);
11977  setFlag(F64);
11978  } // Inst_VOPC__V_CMP_NLT_F64
11979 
11981  {
11982  } // ~Inst_VOPC__V_CMP_NLT_F64
11983 
11984  // D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
11985  void
11987  {
11988  Wavefront *wf = gpuDynInst->wavefront();
11989  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
11990  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
11991  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
11992 
11993  src0.readSrc();
11994  src1.read();
11995 
11996  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
11997  if (wf->execMask(lane)) {
11998  vcc.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
11999  }
12000  }
12001 
12002  vcc.write();
12003  }
12004 
12006  : Inst_VOPC(iFmt, "v_cmp_tru_f64")
12007  {
12008  setFlag(ALU);
12009  setFlag(F64);
12010  } // Inst_VOPC__V_CMP_TRU_F64
12011 
12013  {
12014  } // ~Inst_VOPC__V_CMP_TRU_F64
12015 
12016  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
12017  void
12019  {
12020  Wavefront *wf = gpuDynInst->wavefront();
12021  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12022 
12023  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12024  if (wf->execMask(lane)) {
12025  vcc.setBit(lane, 1);
12026  }
12027  }
12028 
12029  vcc.write();
12030  }
12031 
12033  : Inst_VOPC(iFmt, "v_cmpx_f_f64")
12034  {
12035  setFlag(ALU);
12036  setFlag(F64);
12037  } // Inst_VOPC__V_CMPX_F_F64
12038 
12040  {
12041  } // ~Inst_VOPC__V_CMPX_F_F64
12042 
12043  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
12044  void
12046  {
12047  Wavefront *wf = gpuDynInst->wavefront();
12048  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12049 
12050  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12051  if (wf->execMask(lane)) {
12052  vcc.setBit(lane, 0);
12053  }
12054  }
12055 
12056  vcc.write();
12057  wf->execMask() = vcc.rawData();
12058  }
12059 
12061  : Inst_VOPC(iFmt, "v_cmpx_lt_f64")
12062  {
12063  setFlag(ALU);
12064  setFlag(F64);
12065  } // Inst_VOPC__V_CMPX_LT_F64
12066 
12068  {
12069  } // ~Inst_VOPC__V_CMPX_LT_F64
12070 
12071  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
12072  void
12074  {
12075  Wavefront *wf = gpuDynInst->wavefront();
12076  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12077  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12078  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12079 
12080  src0.readSrc();
12081  src1.read();
12082 
12083  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12084  if (wf->execMask(lane)) {
12085  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
12086  }
12087  }
12088 
12089  vcc.write();
12090  wf->execMask() = vcc.rawData();
12091  }
12092 
12094  : Inst_VOPC(iFmt, "v_cmpx_eq_f64")
12095  {
12096  setFlag(ALU);
12097  setFlag(F64);
12098  } // Inst_VOPC__V_CMPX_EQ_F64
12099 
12101  {
12102  } // ~Inst_VOPC__V_CMPX_EQ_F64
12103 
12104  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
12105  void
12107  {
12108  Wavefront *wf = gpuDynInst->wavefront();
12109  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12110  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12111  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12112 
12113  src0.readSrc();
12114  src1.read();
12115 
12116  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12117  if (wf->execMask(lane)) {
12118  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
12119  }
12120  }
12121 
12122  vcc.write();
12123  wf->execMask() = vcc.rawData();
12124  }
12125 
12127  : Inst_VOPC(iFmt, "v_cmpx_le_f64")
12128  {
12129  setFlag(ALU);
12130  setFlag(F64);
12131  } // Inst_VOPC__V_CMPX_LE_F64
12132 
12134  {
12135  } // ~Inst_VOPC__V_CMPX_LE_F64
12136 
12137  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
12138  void
12140  {
12141  Wavefront *wf = gpuDynInst->wavefront();
12142  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12143  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12144  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12145 
12146  src0.readSrc();
12147  src1.read();
12148 
12149  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12150  if (wf->execMask(lane)) {
12151  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
12152  }
12153  }
12154 
12155  wf->execMask() = vcc.rawData();
12156  vcc.write();
12157  }
12158 
12160  : Inst_VOPC(iFmt, "v_cmpx_gt_f64")
12161  {
12162  setFlag(ALU);
12163  setFlag(F64);
12164  } // Inst_VOPC__V_CMPX_GT_F64
12165 
12167  {
12168  } // ~Inst_VOPC__V_CMPX_GT_F64
12169 
12170  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
12171  void
12173  {
12174  Wavefront *wf = gpuDynInst->wavefront();
12175  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12176  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12177  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12178 
12179  src0.readSrc();
12180  src1.read();
12181 
12182  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12183  if (wf->execMask(lane)) {
12184  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
12185  }
12186  }
12187 
12188  wf->execMask() = vcc.rawData();
12189  vcc.write();
12190  }
12191 
12193  : Inst_VOPC(iFmt, "v_cmpx_lg_f64")
12194  {
12195  setFlag(ALU);
12196  setFlag(F64);
12197  } // Inst_VOPC__V_CMPX_LG_F64
12198 
12200  {
12201  } // ~Inst_VOPC__V_CMPX_LG_F64
12202 
12203  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
12204  void
12206  {
12207  Wavefront *wf = gpuDynInst->wavefront();
12208  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12209  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12210  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12211 
12212  src0.readSrc();
12213  src1.read();
12214 
12215  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12216  if (wf->execMask(lane)) {
12217  vcc.setBit(lane, (src0[lane] < src1[lane]
12218  || src0[lane] > src1[lane]) ? 1 : 0);
12219  }
12220  }
12221 
12222  wf->execMask() = vcc.rawData();
12223  vcc.write();
12224  }
12225 
12227  : Inst_VOPC(iFmt, "v_cmpx_ge_f64")
12228  {
12229  setFlag(ALU);
12230  setFlag(F64);
12231  } // Inst_VOPC__V_CMPX_GE_F64
12232 
12234  {
12235  } // ~Inst_VOPC__V_CMPX_GE_F64
12236 
12237  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
12238  void
12240  {
12241  Wavefront *wf = gpuDynInst->wavefront();
12242  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12243  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12244  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12245 
12246  src0.readSrc();
12247  src1.read();
12248 
12249  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12250  if (wf->execMask(lane)) {
12251  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
12252  }
12253  }
12254 
12255  wf->execMask() = vcc.rawData();
12256  vcc.write();
12257  }
12258 
12260  : Inst_VOPC(iFmt, "v_cmpx_o_f64")
12261  {
12262  setFlag(ALU);
12263  setFlag(F64);
12264  } // Inst_VOPC__V_CMPX_O_F64
12265 
12267  {
12268  } // ~Inst_VOPC__V_CMPX_O_F64
12269 
12270  // EXEC,D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC
12271  // encoding.
12272  void
12274  {
12275  Wavefront *wf = gpuDynInst->wavefront();
12276  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12277  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12278  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12279 
12280  src0.readSrc();
12281  src1.read();
12282 
12283  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12284  if (wf->execMask(lane)) {
12285  vcc.setBit(lane, (!std::isnan(src0[lane])
12286  && !std::isnan(src1[lane])) ? 1 : 0);
12287  }
12288  }
12289 
12290  wf->execMask() = vcc.rawData();
12291  vcc.write();
12292  }
12293 
12295  : Inst_VOPC(iFmt, "v_cmpx_u_f64")
12296  {
12297  setFlag(ALU);
12298  setFlag(F64);
12299  } // Inst_VOPC__V_CMPX_U_F64
12300 
12302  {
12303  } // ~Inst_VOPC__V_CMPX_U_F64
12304 
12305  // EXEC,D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC
12306  // encoding.
12307  void
12309  {
12310  Wavefront *wf = gpuDynInst->wavefront();
12311  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12312  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12313  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12314 
12315  src0.readSrc();
12316  src1.read();
12317 
12318  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12319  if (wf->execMask(lane)) {
12320  vcc.setBit(lane, (std::isnan(src0[lane])
12321  || std::isnan(src1[lane])) ? 1 : 0);
12322  }
12323  }
12324 
12325  wf->execMask() = vcc.rawData();
12326  vcc.write();
12327  }
12328 
12330  : Inst_VOPC(iFmt, "v_cmpx_nge_f64")
12331  {
12332  setFlag(ALU);
12333  setFlag(F64);
12334  } // Inst_VOPC__V_CMPX_NGE_F64
12335 
12337  {
12338  } // ~Inst_VOPC__V_CMPX_NGE_F64
12339 
12340  // EXEC,D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
12341  void
12343  {
12344  Wavefront *wf = gpuDynInst->wavefront();
12345  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12346  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12347  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12348 
12349  src0.readSrc();
12350  src1.read();
12351 
12352  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12353  if (wf->execMask(lane)) {
12354  vcc.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
12355  }
12356  }
12357 
12358  wf->execMask() = vcc.rawData();
12359  vcc.write();
12360  }
12361 
12363  : Inst_VOPC(iFmt, "v_cmpx_nlg_f64")
12364  {
12365  setFlag(ALU);
12366  setFlag(F64);
12367  } // Inst_VOPC__V_CMPX_NLG_F64
12368 
12370  {
12371  } // ~Inst_VOPC__V_CMPX_NLG_F64
12372 
12373  // EXEC,D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
12374  void
12376  {
12377  Wavefront *wf = gpuDynInst->wavefront();
12378  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12379  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12380  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12381 
12382  src0.readSrc();
12383  src1.read();
12384 
12385  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12386  if (wf->execMask(lane)) {
12387  vcc.setBit(lane, !(src0[lane] < src1[lane]
12388  || src0[lane] > src1[lane]) ? 1 : 0);
12389  }
12390  }
12391 
12392  wf->execMask() = vcc.rawData();
12393  vcc.write();
12394  }
12395 
12397  : Inst_VOPC(iFmt, "v_cmpx_ngt_f64")
12398  {
12399  setFlag(ALU);
12400  setFlag(F64);
12401  } // Inst_VOPC__V_CMPX_NGT_F64
12402 
12404  {
12405  } // ~Inst_VOPC__V_CMPX_NGT_F64
12406 
12407  // EXEC,D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
12408  void
12410  {
12411  Wavefront *wf = gpuDynInst->wavefront();
12412  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12413  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12414  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12415 
12416  src0.readSrc();
12417  src1.read();
12418 
12419  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12420  if (wf->execMask(lane)) {
12421  vcc.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
12422  }
12423  }
12424 
12425  wf->execMask() = vcc.rawData();
12426  vcc.write();
12427  }
12428 
12430  : Inst_VOPC(iFmt, "v_cmpx_nle_f64")
12431  {
12432  setFlag(ALU);
12433  setFlag(F64);
12434  } // Inst_VOPC__V_CMPX_NLE_F64
12435 
12437  {
12438  } // ~Inst_VOPC__V_CMPX_NLE_F64
12439 
12440  // EXEC,D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
12441  void
12443  {
12444  Wavefront *wf = gpuDynInst->wavefront();
12445  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12446  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12447  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12448 
12449  src0.readSrc();
12450  src1.read();
12451 
12452  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12453  if (wf->execMask(lane)) {
12454  vcc.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
12455  }
12456  }
12457 
12458  wf->execMask() = vcc.rawData();
12459  vcc.write();
12460  }
12461 
12463  : Inst_VOPC(iFmt, "v_cmpx_neq_f64")
12464  {
12465  setFlag(ALU);
12466  setFlag(F64);
12467  } // Inst_VOPC__V_CMPX_NEQ_F64
12468 
12470  {
12471  } // ~Inst_VOPC__V_CMPX_NEQ_F64
12472 
12473  // EXEC,D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
12474  void
12476  {
12477  Wavefront *wf = gpuDynInst->wavefront();
12478  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12479  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12480  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12481 
12482  src0.readSrc();
12483  src1.read();
12484 
12485  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12486  if (wf->execMask(lane)) {
12487  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
12488  }
12489  }
12490 
12491  wf->execMask() = vcc.rawData();
12492  vcc.write();
12493  }
12494 
12496  : Inst_VOPC(iFmt, "v_cmpx_nlt_f64")
12497  {
12498  setFlag(ALU);
12499  setFlag(F64);
12500  } // Inst_VOPC__V_CMPX_NLT_F64
12501 
12503  {
12504  } // ~Inst_VOPC__V_CMPX_NLT_F64
12505 
12506  // EXEC,D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
12507  void
12509  {
12510  Wavefront *wf = gpuDynInst->wavefront();
12511  ConstVecOperandF64 src0(gpuDynInst, instData.SRC0);
12512  ConstVecOperandF64 src1(gpuDynInst, instData.VSRC1);
12513  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12514 
12515  src0.readSrc();
12516  src1.read();
12517 
12518  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12519  if (wf->execMask(lane)) {
12520  vcc.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
12521  }
12522  }
12523 
12524  wf->execMask() = vcc.rawData();
12525  vcc.write();
12526  }
12527 
12529  : Inst_VOPC(iFmt, "v_cmpx_tru_f64")
12530  {
12531  setFlag(ALU);
12532  setFlag(F64);
12533  } // Inst_VOPC__V_CMPX_TRU_F64
12534 
12536  {
12537  } // ~Inst_VOPC__V_CMPX_TRU_F64
12538 
12539  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
12540  void
12542  {
12543  Wavefront *wf = gpuDynInst->wavefront();
12544  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12545 
12546  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12547  if (wf->execMask(lane)) {
12548  vcc.setBit(lane, 1);
12549  }
12550  }
12551 
12552  wf->execMask() = vcc.rawData();
12553  vcc.write();
12554  }
12555 
12557  : Inst_VOPC(iFmt, "v_cmp_f_i16")
12558  {
12559  setFlag(ALU);
12560  } // Inst_VOPC__V_CMP_F_I16
12561 
12563  {
12564  } // ~Inst_VOPC__V_CMP_F_I16
12565 
12566  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
12567  void
12569  {
12570  Wavefront *wf = gpuDynInst->wavefront();
12571  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12572 
12573  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12574  if (wf->execMask(lane)) {
12575  vcc.setBit(lane, 0);
12576  }
12577  }
12578 
12579  vcc.write();
12580  }
12581 
12583  : Inst_VOPC(iFmt, "v_cmp_lt_i16")
12584  {
12585  setFlag(ALU);
12586  } // Inst_VOPC__V_CMP_LT_I16
12587 
12589  {
12590  } // ~Inst_VOPC__V_CMP_LT_I16
12591 
12592  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
12593  void
12595  {
12596  Wavefront *wf = gpuDynInst->wavefront();
12597  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
12598  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
12599  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12600 
12601  src0.readSrc();
12602  src1.read();
12603 
12604  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12605  if (wf->execMask(lane)) {
12606  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
12607  }
12608  }
12609 
12610  vcc.write();
12611  }
12612 
12614  : Inst_VOPC(iFmt, "v_cmp_eq_i16")
12615  {
12616  setFlag(ALU);
12617  } // Inst_VOPC__V_CMP_EQ_I16
12618 
12620  {
12621  } // ~Inst_VOPC__V_CMP_EQ_I16
12622 
12623  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
12624  void
12626  {
12627  Wavefront *wf = gpuDynInst->wavefront();
12628  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
12629  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
12630  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12631 
12632  src0.readSrc();
12633  src1.read();
12634 
12635  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12636  if (wf->execMask(lane)) {
12637  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
12638  }
12639  }
12640 
12641  vcc.write();
12642  }
12643 
12645  : Inst_VOPC(iFmt, "v_cmp_le_i16")
12646  {
12647  setFlag(ALU);
12648  } // Inst_VOPC__V_CMP_LE_I16
12649 
12651  {
12652  } // ~Inst_VOPC__V_CMP_LE_I16
12653 
12654  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
12655  void
12657  {
12658  Wavefront *wf = gpuDynInst->wavefront();
12659  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
12660  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
12661  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12662 
12663  src0.readSrc();
12664  src1.read();
12665 
12666  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12667  if (wf->execMask(lane)) {
12668  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
12669  }
12670  }
12671 
12672  vcc.write();
12673  }
12674 
12676  : Inst_VOPC(iFmt, "v_cmp_gt_i16")
12677  {
12678  setFlag(ALU);
12679  } // Inst_VOPC__V_CMP_GT_I16
12680 
12682  {
12683  } // ~Inst_VOPC__V_CMP_GT_I16
12684 
12685  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
12686  void
12688  {
12689  Wavefront *wf = gpuDynInst->wavefront();
12690  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
12691  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
12692  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12693 
12694  src0.readSrc();
12695  src1.read();
12696 
12697  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12698  if (wf->execMask(lane)) {
12699  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
12700  }
12701  }
12702 
12703  vcc.write();
12704  }
12705 
12707  : Inst_VOPC(iFmt, "v_cmp_ne_i16")
12708  {
12709  setFlag(ALU);
12710  } // Inst_VOPC__V_CMP_NE_I16
12711 
12713  {
12714  } // ~Inst_VOPC__V_CMP_NE_I16
12715 
12716  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
12717  void
12719  {
12720  Wavefront *wf = gpuDynInst->wavefront();
12721  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
12722  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
12723  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12724 
12725  src0.readSrc();
12726  src1.read();
12727 
12728  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12729  if (wf->execMask(lane)) {
12730  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
12731  }
12732  }
12733 
12734  vcc.write();
12735  }
12736 
12738  : Inst_VOPC(iFmt, "v_cmp_ge_i16")
12739  {
12740  setFlag(ALU);
12741  } // Inst_VOPC__V_CMP_GE_I16
12742 
12744  {
12745  } // ~Inst_VOPC__V_CMP_GE_I16
12746 
12747  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
12748  void
12750  {
12751  Wavefront *wf = gpuDynInst->wavefront();
12752  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
12753  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
12754  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12755 
12756  src0.readSrc();
12757  src1.read();
12758 
12759  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12760  if (wf->execMask(lane)) {
12761  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
12762  }
12763  }
12764 
12765  vcc.write();
12766  }
12767 
12769  : Inst_VOPC(iFmt, "v_cmp_t_i16")
12770  {
12771  setFlag(ALU);
12772  } // Inst_VOPC__V_CMP_T_I16
12773 
12775  {
12776  } // ~Inst_VOPC__V_CMP_T_I16
12777 
12778  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
12779  void
12781  {
12782  Wavefront *wf = gpuDynInst->wavefront();
12783  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12784 
12785  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12786  if (wf->execMask(lane)) {
12787  vcc.setBit(lane, 1);
12788  }
12789  }
12790 
12791  vcc.write();
12792  }
12793 
12795  : Inst_VOPC(iFmt, "v_cmp_f_u16")
12796  {
12797  setFlag(ALU);
12798  } // Inst_VOPC__V_CMP_F_U16
12799 
12801  {
12802  } // ~Inst_VOPC__V_CMP_F_U16
12803 
12804  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
12805  void
12807  {
12808  Wavefront *wf = gpuDynInst->wavefront();
12809  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12810 
12811  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12812  if (wf->execMask(lane)) {
12813  vcc.setBit(lane, 0);
12814  }
12815  }
12816 
12817  vcc.write();
12818  }
12819 
12821  : Inst_VOPC(iFmt, "v_cmp_lt_u16")
12822  {
12823  setFlag(ALU);
12824  } // Inst_VOPC__V_CMP_LT_U16
12825 
12827  {
12828  } // ~Inst_VOPC__V_CMP_LT_U16
12829 
12830  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
12831  void
12833  {
12834  Wavefront *wf = gpuDynInst->wavefront();
12835  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
12836  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
12837  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12838 
12839  src0.readSrc();
12840  src1.read();
12841 
12842  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12843  if (wf->execMask(lane)) {
12844  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
12845  }
12846  }
12847 
12848  vcc.write();
12849  }
12850 
12852  : Inst_VOPC(iFmt, "v_cmp_eq_u16")
12853  {
12854  setFlag(ALU);
12855  } // Inst_VOPC__V_CMP_EQ_U16
12856 
12858  {
12859  } // ~Inst_VOPC__V_CMP_EQ_U16
12860 
12861  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
12862  void
12864  {
12865  Wavefront *wf = gpuDynInst->wavefront();
12866  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
12867  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
12868  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12869 
12870  src0.readSrc();
12871  src1.read();
12872 
12873  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12874  if (wf->execMask(lane)) {
12875  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
12876  }
12877  }
12878 
12879  vcc.write();
12880  }
12881 
12883  : Inst_VOPC(iFmt, "v_cmp_le_u16")
12884  {
12885  setFlag(ALU);
12886  } // Inst_VOPC__V_CMP_LE_U16
12887 
12889  {
12890  } // ~Inst_VOPC__V_CMP_LE_U16
12891 
12892  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
12893  void
12895  {
12896  Wavefront *wf = gpuDynInst->wavefront();
12897  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
12898  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
12899  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12900 
12901  src0.readSrc();
12902  src1.read();
12903 
12904  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12905  if (wf->execMask(lane)) {
12906  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
12907  }
12908  }
12909 
12910  vcc.write();
12911  }
12912 
12914  : Inst_VOPC(iFmt, "v_cmp_gt_u16")
12915  {
12916  setFlag(ALU);
12917  } // Inst_VOPC__V_CMP_GT_U16
12918 
12920  {
12921  } // ~Inst_VOPC__V_CMP_GT_U16
12922 
12923  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
12924  void
12926  {
12927  Wavefront *wf = gpuDynInst->wavefront();
12928  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
12929  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
12930  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12931 
12932  src0.readSrc();
12933  src1.read();
12934 
12935  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12936  if (wf->execMask(lane)) {
12937  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
12938  }
12939  }
12940 
12941  vcc.write();
12942  }
12943 
12945  : Inst_VOPC(iFmt, "v_cmp_ne_u16")
12946  {
12947  setFlag(ALU);
12948  } // Inst_VOPC__V_CMP_NE_U16
12949 
12951  {
12952  } // ~Inst_VOPC__V_CMP_NE_U16
12953 
12954  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
12955  void
12957  {
12958  Wavefront *wf = gpuDynInst->wavefront();
12959  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
12960  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
12961  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12962 
12963  src0.readSrc();
12964  src1.read();
12965 
12966  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12967  if (wf->execMask(lane)) {
12968  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
12969  }
12970  }
12971 
12972  vcc.write();
12973  }
12974 
12976  : Inst_VOPC(iFmt, "v_cmp_ge_u16")
12977  {
12978  setFlag(ALU);
12979  } // Inst_VOPC__V_CMP_GE_U16
12980 
12982  {
12983  } // ~Inst_VOPC__V_CMP_GE_U16
12984 
12985  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
12986  void
12988  {
12989  Wavefront *wf = gpuDynInst->wavefront();
12990  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
12991  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
12992  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
12993 
12994  src0.readSrc();
12995  src1.read();
12996 
12997  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
12998  if (wf->execMask(lane)) {
12999  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
13000  }
13001  }
13002 
13003  vcc.write();
13004  }
13005 
13007  : Inst_VOPC(iFmt, "v_cmp_t_u16")
13008  {
13009  setFlag(ALU);
13010  } // Inst_VOPC__V_CMP_T_U16
13011 
13013  {
13014  } // ~Inst_VOPC__V_CMP_T_U16
13015 
13016  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
13017  void
13019  {
13020  Wavefront *wf = gpuDynInst->wavefront();
13021  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13022 
13023  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13024  if (wf->execMask(lane)) {
13025  vcc.setBit(lane, 1);
13026  }
13027  }
13028 
13029  vcc.write();
13030  }
13031 
13033  : Inst_VOPC(iFmt, "v_cmpx_f_i16")
13034  {
13035  setFlag(ALU);
13036  } // Inst_VOPC__V_CMPX_F_I16
13037 
13039  {
13040  } // ~Inst_VOPC__V_CMPX_F_I16
13041 
13042  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
13043  void
13045  {
13046  Wavefront *wf = gpuDynInst->wavefront();
13047  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13048 
13049  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13050  if (wf->execMask(lane)) {
13051  vcc.setBit(lane, 0);
13052  }
13053  }
13054 
13055  wf->execMask() = vcc.rawData();
13056  vcc.write();
13057  }
13058 
13060  : Inst_VOPC(iFmt, "v_cmpx_lt_i16")
13061  {
13062  setFlag(ALU);
13063  } // Inst_VOPC__V_CMPX_LT_I16
13064 
13066  {
13067  } // ~Inst_VOPC__V_CMPX_LT_I16
13068 
13069  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
13070  void
13072  {
13073  Wavefront *wf = gpuDynInst->wavefront();
13074  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
13075  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
13076  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13077 
13078  src0.readSrc();
13079  src1.read();
13080 
13081  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13082  if (wf->execMask(lane)) {
13083  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
13084  }
13085  }
13086 
13087  wf->execMask() = vcc.rawData();
13088  vcc.write();
13089  }
13090 
13092  : Inst_VOPC(iFmt, "v_cmpx_eq_i16")
13093  {
13094  setFlag(ALU);
13095  } // Inst_VOPC__V_CMPX_EQ_I16
13096 
13098  {
13099  } // ~Inst_VOPC__V_CMPX_EQ_I16
13100 
13101  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
13102  void
13104  {
13105  Wavefront *wf = gpuDynInst->wavefront();
13106  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
13107  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
13108  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13109 
13110  src0.readSrc();
13111  src1.read();
13112 
13113  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13114  if (wf->execMask(lane)) {
13115  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
13116  }
13117  }
13118 
13119  wf->execMask() = vcc.rawData();
13120  vcc.write();
13121  }
13122 
13124  : Inst_VOPC(iFmt, "v_cmpx_le_i16")
13125  {
13126  setFlag(ALU);
13127  } // Inst_VOPC__V_CMPX_LE_I16
13128 
13130  {
13131  } // ~Inst_VOPC__V_CMPX_LE_I16
13132 
13133  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
13134  void
13136  {
13137  Wavefront *wf = gpuDynInst->wavefront();
13138  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
13139  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
13140  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13141 
13142  src0.readSrc();
13143  src1.read();
13144 
13145  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13146  if (wf->execMask(lane)) {
13147  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
13148  }
13149  }
13150 
13151  wf->execMask() = vcc.rawData();
13152  vcc.write();
13153  }
13154 
13156  : Inst_VOPC(iFmt, "v_cmpx_gt_i16")
13157  {
13158  setFlag(ALU);
13159  } // Inst_VOPC__V_CMPX_GT_I16
13160 
13162  {
13163  } // ~Inst_VOPC__V_CMPX_GT_I16
13164 
13165  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
13166  void
13168  {
13169  Wavefront *wf = gpuDynInst->wavefront();
13170  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
13171  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
13172  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13173 
13174  src0.readSrc();
13175  src1.read();
13176 
13177  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13178  if (wf->execMask(lane)) {
13179  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
13180  }
13181  }
13182 
13183  wf->execMask() = vcc.rawData();
13184  vcc.write();
13185  }
13186 
13188  : Inst_VOPC(iFmt, "v_cmpx_ne_i16")
13189  {
13190  setFlag(ALU);
13191  } // Inst_VOPC__V_CMPX_NE_I16
13192 
13194  {
13195  } // ~Inst_VOPC__V_CMPX_NE_I16
13196 
13197  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
13198  void
13200  {
13201  Wavefront *wf = gpuDynInst->wavefront();
13202  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
13203  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
13204  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13205 
13206  src0.readSrc();
13207  src1.read();
13208 
13209  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13210  if (wf->execMask(lane)) {
13211  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
13212  }
13213  }
13214 
13215  wf->execMask() = vcc.rawData();
13216  vcc.write();
13217  }
13218 
13220  : Inst_VOPC(iFmt, "v_cmpx_ge_i16")
13221  {
13222  setFlag(ALU);
13223  } // Inst_VOPC__V_CMPX_GE_I16
13224 
13226  {
13227  } // ~Inst_VOPC__V_CMPX_GE_I16
13228 
13229  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
13230  void
13232  {
13233  Wavefront *wf = gpuDynInst->wavefront();
13234  ConstVecOperandI16 src0(gpuDynInst, instData.SRC0);
13235  ConstVecOperandI16 src1(gpuDynInst, instData.VSRC1);
13236  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13237 
13238  src0.readSrc();
13239  src1.read();
13240 
13241  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13242  if (wf->execMask(lane)) {
13243  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
13244  }
13245  }
13246 
13247  wf->execMask() = vcc.rawData();
13248  vcc.write();
13249  }
13250 
13252  : Inst_VOPC(iFmt, "v_cmpx_t_i16")
13253  {
13254  setFlag(ALU);
13255  } // Inst_VOPC__V_CMPX_T_I16
13256 
13258  {
13259  } // ~Inst_VOPC__V_CMPX_T_I16
13260 
13261  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
13262  void
13264  {
13265  Wavefront *wf = gpuDynInst->wavefront();
13266  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13267 
13268  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13269  if (wf->execMask(lane)) {
13270  vcc.setBit(lane, 1);
13271  }
13272  }
13273 
13274  wf->execMask() = vcc.rawData();
13275  vcc.write();
13276  }
13277 
13279  : Inst_VOPC(iFmt, "v_cmpx_f_u16")
13280  {
13281  setFlag(ALU);
13282  } // Inst_VOPC__V_CMPX_F_U16
13283 
13285  {
13286  } // ~Inst_VOPC__V_CMPX_F_U16
13287 
13288  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
13289  void
13291  {
13292  Wavefront *wf = gpuDynInst->wavefront();
13293  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13294 
13295  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13296  if (wf->execMask(lane)) {
13297  vcc.setBit(lane, 0);
13298  }
13299  }
13300 
13301  wf->execMask() = vcc.rawData();
13302  vcc.write();
13303  }
13304 
13306  : Inst_VOPC(iFmt, "v_cmpx_lt_u16")
13307  {
13308  setFlag(ALU);
13309  } // Inst_VOPC__V_CMPX_LT_U16
13310 
13312  {
13313  } // ~Inst_VOPC__V_CMPX_LT_U16
13314 
13315  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
13316  void
13318  {
13319  Wavefront *wf = gpuDynInst->wavefront();
13320  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
13321  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
13322  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13323 
13324  src0.readSrc();
13325  src1.read();
13326 
13327  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13328  if (wf->execMask(lane)) {
13329  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
13330  }
13331  }
13332 
13333  wf->execMask() = vcc.rawData();
13334  vcc.write();
13335  }
13336 
13338  : Inst_VOPC(iFmt, "v_cmpx_eq_u16")
13339  {
13340  setFlag(ALU);
13341  } // Inst_VOPC__V_CMPX_EQ_U16
13342 
13344  {
13345  } // ~Inst_VOPC__V_CMPX_EQ_U16
13346 
13347  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
13348  void
13350  {
13351  Wavefront *wf = gpuDynInst->wavefront();
13352  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
13353  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
13354  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13355 
13356  src0.readSrc();
13357  src1.read();
13358 
13359  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13360  if (wf->execMask(lane)) {
13361  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
13362  }
13363  }
13364 
13365  wf->execMask() = vcc.rawData();
13366  vcc.write();
13367  }
13368 
13370  : Inst_VOPC(iFmt, "v_cmpx_le_u16")
13371  {
13372  setFlag(ALU);
13373  } // Inst_VOPC__V_CMPX_LE_U16
13374 
13376  {
13377  } // ~Inst_VOPC__V_CMPX_LE_U16
13378 
13379  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
13380  void
13382  {
13383  Wavefront *wf = gpuDynInst->wavefront();
13384  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
13385  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
13386  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13387 
13388  src0.readSrc();
13389  src1.read();
13390 
13391  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13392  if (wf->execMask(lane)) {
13393  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
13394  }
13395  }
13396 
13397  wf->execMask() = vcc.rawData();
13398  vcc.write();
13399  }
13400 
13402  : Inst_VOPC(iFmt, "v_cmpx_gt_u16")
13403  {
13404  setFlag(ALU);
13405  } // Inst_VOPC__V_CMPX_GT_U16
13406 
13408  {
13409  } // ~Inst_VOPC__V_CMPX_GT_U16
13410 
13411  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
13412  void
13414  {
13415  Wavefront *wf = gpuDynInst->wavefront();
13416  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
13417  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
13418  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13419 
13420  src0.readSrc();
13421  src1.read();
13422 
13423  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13424  if (wf->execMask(lane)) {
13425  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
13426  }
13427  }
13428 
13429  wf->execMask() = vcc.rawData();
13430  vcc.write();
13431  }
13432 
13434  : Inst_VOPC(iFmt, "v_cmpx_ne_u16")
13435  {
13436  setFlag(ALU);
13437  } // Inst_VOPC__V_CMPX_NE_U16
13438 
13440  {
13441  } // ~Inst_VOPC__V_CMPX_NE_U16
13442 
13443  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
13444  void
13446  {
13447  Wavefront *wf = gpuDynInst->wavefront();
13448  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
13449  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
13450  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13451 
13452  src0.readSrc();
13453  src1.read();
13454 
13455  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13456  if (wf->execMask(lane)) {
13457  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
13458  }
13459  }
13460 
13461  wf->execMask() = vcc.rawData();
13462  vcc.write();
13463  }
13464 
13466  : Inst_VOPC(iFmt, "v_cmpx_ge_u16")
13467  {
13468  setFlag(ALU);
13469  } // Inst_VOPC__V_CMPX_GE_U16
13470 
13472  {
13473  } // ~Inst_VOPC__V_CMPX_GE_U16
13474 
13475  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
13476  void
13478  {
13479  Wavefront *wf = gpuDynInst->wavefront();
13480  ConstVecOperandU16 src0(gpuDynInst, instData.SRC0);
13481  ConstVecOperandU16 src1(gpuDynInst, instData.VSRC1);
13482  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13483 
13484  src0.readSrc();
13485  src1.read();
13486 
13487  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13488  if (wf->execMask(lane)) {
13489  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
13490  }
13491  }
13492 
13493  wf->execMask() = vcc.rawData();
13494  vcc.write();
13495  }
13496 
13498  : Inst_VOPC(iFmt, "v_cmpx_t_u16")
13499  {
13500  setFlag(ALU);
13501  } // Inst_VOPC__V_CMPX_T_U16
13502 
13504  {
13505  } // ~Inst_VOPC__V_CMPX_T_U16
13506 
13507  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
13508  void
13510  {
13511  Wavefront *wf = gpuDynInst->wavefront();
13512  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13513 
13514  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13515  if (wf->execMask(lane)) {
13516  vcc.setBit(lane, 1);
13517  }
13518  }
13519 
13520  wf->execMask() = vcc.rawData();
13521  vcc.write();
13522  }
13523 
13525  : Inst_VOPC(iFmt, "v_cmp_f_i32")
13526  {
13527  setFlag(ALU);
13528  } // Inst_VOPC__V_CMP_F_I32
13529 
13531  {
13532  } // ~Inst_VOPC__V_CMP_F_I32
13533 
13534  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
13535  void
13537  {
13538  Wavefront *wf = gpuDynInst->wavefront();
13539  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13540 
13541  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13542  if (wf->execMask(lane)) {
13543  vcc.setBit(lane, 0);
13544  }
13545  }
13546 
13547  vcc.write();
13548  }
13549 
13551  : Inst_VOPC(iFmt, "v_cmp_lt_i32")
13552  {
13553  setFlag(ALU);
13554  } // Inst_VOPC__V_CMP_LT_I32
13555 
13557  {
13558  } // ~Inst_VOPC__V_CMP_LT_I32
13559 
13560  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
13561  void
13563  {
13564  Wavefront *wf = gpuDynInst->wavefront();
13565  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
13566  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
13567  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13568 
13569  src0.readSrc();
13570  src1.read();
13571 
13572  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13573  if (wf->execMask(lane)) {
13574  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
13575  }
13576  }
13577 
13578  vcc.write();
13579  }
13580 
13582  : Inst_VOPC(iFmt, "v_cmp_eq_i32")
13583  {
13584  setFlag(ALU);
13585  } // Inst_VOPC__V_CMP_EQ_I32
13586 
13588  {
13589  } // ~Inst_VOPC__V_CMP_EQ_I32
13590 
13591  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
13592  void
13594  {
13595  Wavefront *wf = gpuDynInst->wavefront();
13596  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
13597  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
13598  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13599 
13600  src0.readSrc();
13601  src1.read();
13602 
13603  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13604  if (wf->execMask(lane)) {
13605  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
13606  }
13607  }
13608 
13609  vcc.write();
13610  }
13611 
13613  : Inst_VOPC(iFmt, "v_cmp_le_i32")
13614  {
13615  setFlag(ALU);
13616  } // Inst_VOPC__V_CMP_LE_I32
13617 
13619  {
13620  } // ~Inst_VOPC__V_CMP_LE_I32
13621 
13622  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
13623  void
13625  {
13626  Wavefront *wf = gpuDynInst->wavefront();
13627  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
13628  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
13629  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13630 
13631  src0.readSrc();
13632  src1.read();
13633 
13634  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13635  if (wf->execMask(lane)) {
13636  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
13637  }
13638  }
13639 
13640  vcc.write();
13641  }
13642 
13644  : Inst_VOPC(iFmt, "v_cmp_gt_i32")
13645  {
13646  setFlag(ALU);
13647  } // Inst_VOPC__V_CMP_GT_I32
13648 
13650  {
13651  } // ~Inst_VOPC__V_CMP_GT_I32
13652 
13653  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
13654  void
13656  {
13657  Wavefront *wf = gpuDynInst->wavefront();
13658  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
13659  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
13660  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13661 
13662  src0.readSrc();
13663  src1.read();
13664 
13665  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13666  if (wf->execMask(lane)) {
13667  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
13668  }
13669  }
13670 
13671  vcc.write();
13672  }
13673 
13675  : Inst_VOPC(iFmt, "v_cmp_ne_i32")
13676  {
13677  setFlag(ALU);
13678  } // Inst_VOPC__V_CMP_NE_I32
13679 
13681  {
13682  } // ~Inst_VOPC__V_CMP_NE_I32
13683 
13684  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
13685  void
13687  {
13688  Wavefront *wf = gpuDynInst->wavefront();
13689  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
13690  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
13691  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13692 
13693  src0.readSrc();
13694  src1.read();
13695 
13696  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13697  if (wf->execMask(lane)) {
13698  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
13699  }
13700  }
13701 
13702  vcc.write();
13703  }
13704 
13706  : Inst_VOPC(iFmt, "v_cmp_ge_i32")
13707  {
13708  setFlag(ALU);
13709  } // Inst_VOPC__V_CMP_GE_I32
13710 
13712  {
13713  } // ~Inst_VOPC__V_CMP_GE_I32
13714 
13715  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
13716  void
13718  {
13719  Wavefront *wf = gpuDynInst->wavefront();
13720  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
13721  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
13722  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13723 
13724  src0.readSrc();
13725  src1.read();
13726 
13727  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13728  if (wf->execMask(lane)) {
13729  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
13730  }
13731  }
13732 
13733  vcc.write();
13734  }
13735 
13737  : Inst_VOPC(iFmt, "v_cmp_t_i32")
13738  {
13739  setFlag(ALU);
13740  } // Inst_VOPC__V_CMP_T_I32
13741 
13743  {
13744  } // ~Inst_VOPC__V_CMP_T_I32
13745 
13746  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
13747  void
13749  {
13750  Wavefront *wf = gpuDynInst->wavefront();
13751  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13752 
13753  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13754  if (wf->execMask(lane)) {
13755  vcc.setBit(lane, 1);
13756  }
13757  }
13758 
13759  vcc.write();
13760  }
13761 
13763  : Inst_VOPC(iFmt, "v_cmp_f_u32")
13764  {
13765  setFlag(ALU);
13766  } // Inst_VOPC__V_CMP_F_U32
13767 
13769  {
13770  } // ~Inst_VOPC__V_CMP_F_U32
13771 
13772  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
13773  void
13775  {
13776  Wavefront *wf = gpuDynInst->wavefront();
13777  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13778 
13779  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13780  if (wf->execMask(lane)) {
13781  vcc.setBit(lane, 0);
13782  }
13783  }
13784 
13785  vcc.write();
13786  }
13787 
13789  : Inst_VOPC(iFmt, "v_cmp_lt_u32")
13790  {
13791  setFlag(ALU);
13792  } // Inst_VOPC__V_CMP_LT_U32
13793 
13795  {
13796  } // ~Inst_VOPC__V_CMP_LT_U32
13797 
13798  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
13799  void
13801  {
13802  Wavefront *wf = gpuDynInst->wavefront();
13803  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
13804  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
13805  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13806 
13807  src0.readSrc();
13808  src1.read();
13809 
13810  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13811  if (wf->execMask(lane)) {
13812  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
13813  }
13814  }
13815 
13816  vcc.write();
13817  }
13818 
13820  : Inst_VOPC(iFmt, "v_cmp_eq_u32")
13821  {
13822  setFlag(ALU);
13823  } // Inst_VOPC__V_CMP_EQ_U32
13824 
13826  {
13827  } // ~Inst_VOPC__V_CMP_EQ_U32
13828 
13829  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
13830  void
13832  {
13833  Wavefront *wf = gpuDynInst->wavefront();
13834  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
13835  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
13836  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13837 
13838  src0.readSrc();
13839  src1.read();
13840 
13841  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13842  if (wf->execMask(lane)) {
13843  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
13844  }
13845  }
13846 
13847  vcc.write();
13848  }
13849 
13851  : Inst_VOPC(iFmt, "v_cmp_le_u32")
13852  {
13853  setFlag(ALU);
13854  } // Inst_VOPC__V_CMP_LE_U32
13855 
13857  {
13858  } // ~Inst_VOPC__V_CMP_LE_U32
13859 
13860  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
13861  void
13863  {
13864  Wavefront *wf = gpuDynInst->wavefront();
13865  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
13866  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
13867  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13868 
13869  src0.readSrc();
13870  src1.read();
13871 
13872  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13873  if (wf->execMask(lane)) {
13874  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
13875  }
13876  }
13877 
13878  vcc.write();
13879  }
13880 
13882  : Inst_VOPC(iFmt, "v_cmp_gt_u32")
13883  {
13884  setFlag(ALU);
13885  } // Inst_VOPC__V_CMP_GT_U32
13886 
13888  {
13889  } // ~Inst_VOPC__V_CMP_GT_U32
13890 
13891  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
13892  void
13894  {
13895  Wavefront *wf = gpuDynInst->wavefront();
13896  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
13897  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
13898  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13899 
13900  src0.readSrc();
13901  src1.read();
13902 
13903  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13904  if (wf->execMask(lane)) {
13905  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
13906  }
13907  }
13908 
13909  vcc.write();
13910  }
13911 
13913  : Inst_VOPC(iFmt, "v_cmp_ne_u32")
13914  {
13915  setFlag(ALU);
13916  } // Inst_VOPC__V_CMP_NE_U32
13917 
13919  {
13920  } // ~Inst_VOPC__V_CMP_NE_U32
13921 
13922  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
13923  void
13925  {
13926  Wavefront *wf = gpuDynInst->wavefront();
13927  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
13928  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
13929  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13930 
13931  src0.readSrc();
13932  src1.read();
13933 
13934  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13935  if (wf->execMask(lane)) {
13936  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
13937  }
13938  }
13939 
13940  vcc.write();
13941  }
13942 
13944  : Inst_VOPC(iFmt, "v_cmp_ge_u32")
13945  {
13946  setFlag(ALU);
13947  } // Inst_VOPC__V_CMP_GE_U32
13948 
13950  {
13951  } // ~Inst_VOPC__V_CMP_GE_U32
13952 
13953  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
13954  void
13956  {
13957  Wavefront *wf = gpuDynInst->wavefront();
13958  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
13959  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
13960  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13961 
13962  src0.readSrc();
13963  src1.read();
13964 
13965  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13966  if (wf->execMask(lane)) {
13967  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
13968  }
13969  }
13970 
13971  vcc.write();
13972  }
13973 
13975  : Inst_VOPC(iFmt, "v_cmp_t_u32")
13976  {
13977  setFlag(ALU);
13978  } // Inst_VOPC__V_CMP_T_U32
13979 
13981  {
13982  } // ~Inst_VOPC__V_CMP_T_U32
13983 
13984  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
13985  void
13987  {
13988  Wavefront *wf = gpuDynInst->wavefront();
13989  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
13990 
13991  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
13992  if (wf->execMask(lane)) {
13993  vcc.setBit(lane, 1);
13994  }
13995  }
13996 
13997  vcc.write();
13998  }
13999 
14001  : Inst_VOPC(iFmt, "v_cmpx_f_i32")
14002  {
14003  setFlag(ALU);
14004  } // Inst_VOPC__V_CMPX_F_I32
14005 
14007  {
14008  } // ~Inst_VOPC__V_CMPX_F_I32
14009 
14010  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
14011  void
14013  {
14014  Wavefront *wf = gpuDynInst->wavefront();
14015  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14016 
14017  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14018  if (wf->execMask(lane)) {
14019  vcc.setBit(lane, 0);
14020  }
14021  }
14022 
14023  wf->execMask() = vcc.rawData();
14024  vcc.write();
14025  }
14026 
14028  : Inst_VOPC(iFmt, "v_cmpx_lt_i32")
14029  {
14030  setFlag(ALU);
14031  } // Inst_VOPC__V_CMPX_LT_I32
14032 
14034  {
14035  } // ~Inst_VOPC__V_CMPX_LT_I32
14036 
14037  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
14038  void
14040  {
14041  Wavefront *wf = gpuDynInst->wavefront();
14042  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
14043  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
14044  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14045 
14046  src0.readSrc();
14047  src1.read();
14048 
14049  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14050  if (wf->execMask(lane)) {
14051  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
14052  }
14053  }
14054 
14055  wf->execMask() = vcc.rawData();
14056  vcc.write();
14057  }
14058 
14060  : Inst_VOPC(iFmt, "v_cmpx_eq_i32")
14061  {
14062  setFlag(ALU);
14063  } // Inst_VOPC__V_CMPX_EQ_I32
14064 
14066  {
14067  } // ~Inst_VOPC__V_CMPX_EQ_I32
14068 
14069  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
14070  void
14072  {
14073  Wavefront *wf = gpuDynInst->wavefront();
14074  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
14075  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
14076  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14077 
14078  src0.readSrc();
14079  src1.read();
14080 
14081  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14082  if (wf->execMask(lane)) {
14083  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
14084  }
14085  }
14086 
14087  wf->execMask() = vcc.rawData();
14088  vcc.write();
14089  }
14090 
14092  : Inst_VOPC(iFmt, "v_cmpx_le_i32")
14093  {
14094  setFlag(ALU);
14095  } // Inst_VOPC__V_CMPX_LE_I32
14096 
14098  {
14099  } // ~Inst_VOPC__V_CMPX_LE_I32
14100 
14101  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
14102  void
14104  {
14105  Wavefront *wf = gpuDynInst->wavefront();
14106  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
14107  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
14108  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14109 
14110  src0.readSrc();
14111  src1.read();
14112 
14113  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14114  if (wf->execMask(lane)) {
14115  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
14116  }
14117  }
14118 
14119  wf->execMask() = vcc.rawData();
14120  vcc.write();
14121  }
14122 
14124  : Inst_VOPC(iFmt, "v_cmpx_gt_i32")
14125  {
14126  setFlag(ALU);
14127  } // Inst_VOPC__V_CMPX_GT_I32
14128 
14130  {
14131  } // ~Inst_VOPC__V_CMPX_GT_I32
14132 
14133  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
14134  void
14136  {
14137  Wavefront *wf = gpuDynInst->wavefront();
14138  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
14139  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
14140  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14141 
14142  src0.readSrc();
14143  src1.read();
14144 
14145  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14146  if (wf->execMask(lane)) {
14147  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
14148  }
14149  }
14150 
14151  wf->execMask() = vcc.rawData();
14152  vcc.write();
14153  }
14154 
14156  : Inst_VOPC(iFmt, "v_cmpx_ne_i32")
14157  {
14158  setFlag(ALU);
14159  } // Inst_VOPC__V_CMPX_NE_I32
14160 
14162  {
14163  } // ~Inst_VOPC__V_CMPX_NE_I32
14164 
14165  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
14166  void
14168  {
14169  Wavefront *wf = gpuDynInst->wavefront();
14170  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
14171  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
14172  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14173 
14174  src0.readSrc();
14175  src1.read();
14176 
14177  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14178  if (wf->execMask(lane)) {
14179  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
14180  }
14181  }
14182 
14183  wf->execMask() = vcc.rawData();
14184  vcc.write();
14185  }
14186 
14188  : Inst_VOPC(iFmt, "v_cmpx_ge_i32")
14189  {
14190  setFlag(ALU);
14191  } // Inst_VOPC__V_CMPX_GE_I32
14192 
14194  {
14195  } // ~Inst_VOPC__V_CMPX_GE_I32
14196 
14197  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
14198  void
14200  {
14201  Wavefront *wf = gpuDynInst->wavefront();
14202  ConstVecOperandI32 src0(gpuDynInst, instData.SRC0);
14203  ConstVecOperandI32 src1(gpuDynInst, instData.VSRC1);
14204  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14205 
14206  src0.readSrc();
14207  src1.read();
14208 
14209  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14210  if (wf->execMask(lane)) {
14211  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
14212  }
14213  }
14214 
14215  wf->execMask() = vcc.rawData();
14216  vcc.write();
14217  }
14218 
14220  : Inst_VOPC(iFmt, "v_cmpx_t_i32")
14221  {
14222  setFlag(ALU);
14223  } // Inst_VOPC__V_CMPX_T_I32
14224 
14226  {
14227  } // ~Inst_VOPC__V_CMPX_T_I32
14228 
14229  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
14230  void
14232  {
14233  Wavefront *wf = gpuDynInst->wavefront();
14234  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14235 
14236  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14237  if (wf->execMask(lane)) {
14238  vcc.setBit(lane, 1);
14239  }
14240  }
14241 
14242  wf->execMask() = vcc.rawData();
14243  vcc.write();
14244  }
14245 
14247  : Inst_VOPC(iFmt, "v_cmpx_f_u32")
14248  {
14249  setFlag(ALU);
14250  } // Inst_VOPC__V_CMPX_F_U32
14251 
14253  {
14254  } // ~Inst_VOPC__V_CMPX_F_U32
14255 
14256  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
14257  void
14259  {
14260  Wavefront *wf = gpuDynInst->wavefront();
14261  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14262 
14263  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14264  if (wf->execMask(lane)) {
14265  vcc.setBit(lane, 0);
14266  }
14267  }
14268 
14269  wf->execMask() = vcc.rawData();
14270  vcc.write();
14271  }
14272 
14274  : Inst_VOPC(iFmt, "v_cmpx_lt_u32")
14275  {
14276  setFlag(ALU);
14277  } // Inst_VOPC__V_CMPX_LT_U32
14278 
14280  {
14281  } // ~Inst_VOPC__V_CMPX_LT_U32
14282 
14283  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
14284  void
14286  {
14287  Wavefront *wf = gpuDynInst->wavefront();
14288  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
14289  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
14290  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14291 
14292  src0.readSrc();
14293  src1.read();
14294 
14295  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14296  if (wf->execMask(lane)) {
14297  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
14298  }
14299  }
14300 
14301  wf->execMask() = vcc.rawData();
14302  vcc.write();
14303  }
14304 
14306  : Inst_VOPC(iFmt, "v_cmpx_eq_u32")
14307  {
14308  setFlag(ALU);
14309  } // Inst_VOPC__V_CMPX_EQ_U32
14310 
14312  {
14313  } // ~Inst_VOPC__V_CMPX_EQ_U32
14314 
14315  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
14316  void
14318  {
14319  Wavefront *wf = gpuDynInst->wavefront();
14320  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
14321  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
14322  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14323 
14324  src0.readSrc();
14325  src1.read();
14326 
14327  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14328  if (wf->execMask(lane)) {
14329  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
14330  }
14331  }
14332 
14333  wf->execMask() = vcc.rawData();
14334  vcc.write();
14335  }
14336 
14338  : Inst_VOPC(iFmt, "v_cmpx_le_u32")
14339  {
14340  setFlag(ALU);
14341  } // Inst_VOPC__V_CMPX_LE_U32
14342 
14344  {
14345  } // ~Inst_VOPC__V_CMPX_LE_U32
14346 
14347  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
14348  void
14350  {
14351  Wavefront *wf = gpuDynInst->wavefront();
14352  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
14353  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
14354  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14355 
14356  src0.readSrc();
14357  src1.read();
14358 
14359  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14360  if (wf->execMask(lane)) {
14361  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
14362  }
14363  }
14364 
14365  wf->execMask() = vcc.rawData();
14366  vcc.write();
14367  }
14368 
14370  : Inst_VOPC(iFmt, "v_cmpx_gt_u32")
14371  {
14372  setFlag(ALU);
14373  } // Inst_VOPC__V_CMPX_GT_U32
14374 
14376  {
14377  } // ~Inst_VOPC__V_CMPX_GT_U32
14378 
14379  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
14380  void
14382  {
14383  Wavefront *wf = gpuDynInst->wavefront();
14384  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
14385  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
14386  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14387 
14388  src0.readSrc();
14389  src1.read();
14390 
14391  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14392  if (wf->execMask(lane)) {
14393  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
14394  }
14395  }
14396 
14397  wf->execMask() = vcc.rawData();
14398  vcc.write();
14399  }
14400 
14402  : Inst_VOPC(iFmt, "v_cmpx_ne_u32")
14403  {
14404  setFlag(ALU);
14405  } // Inst_VOPC__V_CMPX_NE_U32
14406 
14408  {
14409  } // ~Inst_VOPC__V_CMPX_NE_U32
14410 
14411  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
14412  void
14414  {
14415  Wavefront *wf = gpuDynInst->wavefront();
14416  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
14417  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
14418  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14419 
14420  src0.readSrc();
14421  src1.read();
14422 
14423  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14424  if (wf->execMask(lane)) {
14425  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
14426  }
14427  }
14428 
14429  wf->execMask() = vcc.rawData();
14430  vcc.write();
14431  }
14432 
14434  : Inst_VOPC(iFmt, "v_cmpx_ge_u32")
14435  {
14436  setFlag(ALU);
14437  } // Inst_VOPC__V_CMPX_GE_U32
14438 
14440  {
14441  } // ~Inst_VOPC__V_CMPX_GE_U32
14442 
14443  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
14444  void
14446  {
14447  Wavefront *wf = gpuDynInst->wavefront();
14448  ConstVecOperandU32 src0(gpuDynInst, instData.SRC0);
14449  ConstVecOperandU32 src1(gpuDynInst, instData.VSRC1);
14450  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14451 
14452  src0.readSrc();
14453  src1.read();
14454 
14455  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14456  if (wf->execMask(lane)) {
14457  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
14458  }
14459  }
14460 
14461  wf->execMask() = vcc.rawData();
14462  vcc.write();
14463  }
14464 
14466  : Inst_VOPC(iFmt, "v_cmpx_t_u32")
14467  {
14468  setFlag(ALU);
14469  } // Inst_VOPC__V_CMPX_T_U32
14470 
14472  {
14473  } // ~Inst_VOPC__V_CMPX_T_U32
14474 
14475  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
14476  void
14478  {
14479  Wavefront *wf = gpuDynInst->wavefront();
14480  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14481 
14482  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14483  if (wf->execMask(lane)) {
14484  vcc.setBit(lane, 1);
14485  }
14486  }
14487 
14488  wf->execMask() = vcc.rawData();
14489  vcc.write();
14490  }
14491 
14493  : Inst_VOPC(iFmt, "v_cmp_f_i64")
14494  {
14495  setFlag(ALU);
14496  } // Inst_VOPC__V_CMP_F_I64
14497 
14499  {
14500  } // ~Inst_VOPC__V_CMP_F_I64
14501 
14502  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
14503  void
14505  {
14506  Wavefront *wf = gpuDynInst->wavefront();
14507  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14508 
14509  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14510  if (wf->execMask(lane)) {
14511  vcc.setBit(lane, 0);
14512  }
14513  }
14514 
14515  vcc.write();
14516  }
14517 
14519  : Inst_VOPC(iFmt, "v_cmp_lt_i64")
14520  {
14521  setFlag(ALU);
14522  } // Inst_VOPC__V_CMP_LT_I64
14523 
14525  {
14526  } // ~Inst_VOPC__V_CMP_LT_I64
14527 
14528  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
14529  void
14531  {
14532  Wavefront *wf = gpuDynInst->wavefront();
14533  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
14534  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
14535  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14536 
14537  src0.readSrc();
14538  src1.read();
14539 
14540  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14541  if (wf->execMask(lane)) {
14542  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
14543  }
14544  }
14545 
14546  vcc.write();
14547  }
14548 
14550  : Inst_VOPC(iFmt, "v_cmp_eq_i64")
14551  {
14552  setFlag(ALU);
14553  } // Inst_VOPC__V_CMP_EQ_I64
14554 
14556  {
14557  } // ~Inst_VOPC__V_CMP_EQ_I64
14558 
14559  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
14560  void
14562  {
14563  Wavefront *wf = gpuDynInst->wavefront();
14564  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
14565  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
14566  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14567 
14568  src0.readSrc();
14569  src1.read();
14570 
14571  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14572  if (wf->execMask(lane)) {
14573  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
14574  }
14575  }
14576 
14577  vcc.write();
14578  }
14579 
14581  : Inst_VOPC(iFmt, "v_cmp_le_i64")
14582  {
14583  setFlag(ALU);
14584  } // Inst_VOPC__V_CMP_LE_I64
14585 
14587  {
14588  } // ~Inst_VOPC__V_CMP_LE_I64
14589 
14590  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
14591  void
14593  {
14594  Wavefront *wf = gpuDynInst->wavefront();
14595  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
14596  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
14597  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14598 
14599  src0.readSrc();
14600  src1.read();
14601 
14602  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14603  if (wf->execMask(lane)) {
14604  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
14605  }
14606  }
14607 
14608  vcc.write();
14609  }
14610 
14612  : Inst_VOPC(iFmt, "v_cmp_gt_i64")
14613  {
14614  setFlag(ALU);
14615  } // Inst_VOPC__V_CMP_GT_I64
14616 
14618  {
14619  } // ~Inst_VOPC__V_CMP_GT_I64
14620 
14621  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
14622  void
14624  {
14625  Wavefront *wf = gpuDynInst->wavefront();
14626  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
14627  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
14628  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14629 
14630  src0.readSrc();
14631  src1.read();
14632 
14633  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14634  if (wf->execMask(lane)) {
14635  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
14636  }
14637  }
14638 
14639  vcc.write();
14640  }
14641 
14643  : Inst_VOPC(iFmt, "v_cmp_ne_i64")
14644  {
14645  setFlag(ALU);
14646  } // Inst_VOPC__V_CMP_NE_I64
14647 
14649  {
14650  } // ~Inst_VOPC__V_CMP_NE_I64
14651 
14652  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
14653  void
14655  {
14656  Wavefront *wf = gpuDynInst->wavefront();
14657  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
14658  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
14659  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14660 
14661  src0.readSrc();
14662  src1.read();
14663 
14664  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14665  if (wf->execMask(lane)) {
14666  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
14667  }
14668  }
14669 
14670  vcc.write();
14671  }
14672 
14674  : Inst_VOPC(iFmt, "v_cmp_ge_i64")
14675  {
14676  setFlag(ALU);
14677  } // Inst_VOPC__V_CMP_GE_I64
14678 
14680  {
14681  } // ~Inst_VOPC__V_CMP_GE_I64
14682 
14683  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
14684  void
14686  {
14687  Wavefront *wf = gpuDynInst->wavefront();
14688  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
14689  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
14690  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14691 
14692  src0.readSrc();
14693  src1.read();
14694 
14695  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14696  if (wf->execMask(lane)) {
14697  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
14698  }
14699  }
14700 
14701  vcc.write();
14702  }
14703 
14705  : Inst_VOPC(iFmt, "v_cmp_t_i64")
14706  {
14707  setFlag(ALU);
14708  } // Inst_VOPC__V_CMP_T_I64
14709 
14711  {
14712  } // ~Inst_VOPC__V_CMP_T_I64
14713 
14714  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
14715  void
14717  {
14718  Wavefront *wf = gpuDynInst->wavefront();
14719  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14720 
14721  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14722  if (wf->execMask(lane)) {
14723  vcc.setBit(lane, 1);
14724  }
14725  }
14726 
14727  vcc.write();
14728  }
14729 
14731  : Inst_VOPC(iFmt, "v_cmp_f_u64")
14732  {
14733  setFlag(ALU);
14734  } // Inst_VOPC__V_CMP_F_U64
14735 
14737  {
14738  } // ~Inst_VOPC__V_CMP_F_U64
14739 
14740  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
14741  void
14743  {
14744  Wavefront *wf = gpuDynInst->wavefront();
14745  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14746 
14747  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14748  if (wf->execMask(lane)) {
14749  vcc.setBit(lane, 0);
14750  }
14751  }
14752 
14753  vcc.write();
14754  }
14755 
14757  : Inst_VOPC(iFmt, "v_cmp_lt_u64")
14758  {
14759  setFlag(ALU);
14760  } // Inst_VOPC__V_CMP_LT_U64
14761 
14763  {
14764  } // ~Inst_VOPC__V_CMP_LT_U64
14765 
14766  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
14767  void
14769  {
14770  Wavefront *wf = gpuDynInst->wavefront();
14771  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
14772  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
14773  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14774 
14775  src0.readSrc();
14776  src1.read();
14777 
14778  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14779  if (wf->execMask(lane)) {
14780  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
14781  }
14782  }
14783 
14784  vcc.write();
14785  }
14786 
14788  : Inst_VOPC(iFmt, "v_cmp_eq_u64")
14789  {
14790  setFlag(ALU);
14791  } // Inst_VOPC__V_CMP_EQ_U64
14792 
14794  {
14795  } // ~Inst_VOPC__V_CMP_EQ_U64
14796 
14797  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
14798  void
14800  {
14801  Wavefront *wf = gpuDynInst->wavefront();
14802  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
14803  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
14804  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14805 
14806  src0.readSrc();
14807  src1.read();
14808 
14809  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14810  if (wf->execMask(lane)) {
14811  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
14812  }
14813  }
14814 
14815  vcc.write();
14816  }
14817 
14819  : Inst_VOPC(iFmt, "v_cmp_le_u64")
14820  {
14821  setFlag(ALU);
14822  } // Inst_VOPC__V_CMP_LE_U64
14823 
14825  {
14826  } // ~Inst_VOPC__V_CMP_LE_U64
14827 
14828  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
14829  void
14831  {
14832  Wavefront *wf = gpuDynInst->wavefront();
14833  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
14834  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
14835  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14836 
14837  src0.readSrc();
14838  src1.read();
14839 
14840  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14841  if (wf->execMask(lane)) {
14842  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
14843  }
14844  }
14845 
14846  vcc.write();
14847  }
14848 
14850  : Inst_VOPC(iFmt, "v_cmp_gt_u64")
14851  {
14852  setFlag(ALU);
14853  } // Inst_VOPC__V_CMP_GT_U64
14854 
14856  {
14857  } // ~Inst_VOPC__V_CMP_GT_U64
14858 
14859  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
14860  void
14862  {
14863  Wavefront *wf = gpuDynInst->wavefront();
14864  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
14865  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
14866  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14867 
14868  src0.readSrc();
14869  src1.read();
14870 
14871  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14872  if (wf->execMask(lane)) {
14873  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
14874  }
14875  }
14876 
14877  vcc.write();
14878  }
14879 
14881  : Inst_VOPC(iFmt, "v_cmp_ne_u64")
14882  {
14883  setFlag(ALU);
14884  } // Inst_VOPC__V_CMP_NE_U64
14885 
14887  {
14888  } // ~Inst_VOPC__V_CMP_NE_U64
14889 
14890  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
14891  void
14893  {
14894  Wavefront *wf = gpuDynInst->wavefront();
14895  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
14896  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
14897  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14898 
14899  src0.readSrc();
14900  src1.read();
14901 
14902  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14903  if (wf->execMask(lane)) {
14904  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
14905  }
14906  }
14907 
14908  vcc.write();
14909  }
14910 
14912  : Inst_VOPC(iFmt, "v_cmp_ge_u64")
14913  {
14914  setFlag(ALU);
14915  } // Inst_VOPC__V_CMP_GE_U64
14916 
14918  {
14919  } // ~Inst_VOPC__V_CMP_GE_U64
14920 
14921  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
14922  void
14924  {
14925  Wavefront *wf = gpuDynInst->wavefront();
14926  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
14927  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
14928  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14929 
14930  src0.readSrc();
14931  src1.read();
14932 
14933  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14934  if (wf->execMask(lane)) {
14935  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
14936  }
14937  }
14938 
14939  vcc.write();
14940  }
14941 
14943  : Inst_VOPC(iFmt, "v_cmp_t_u64")
14944  {
14945  setFlag(ALU);
14946  } // Inst_VOPC__V_CMP_T_U64
14947 
14949  {
14950  } // ~Inst_VOPC__V_CMP_T_U64
14951 
14952  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
14953  void
14955  {
14956  Wavefront *wf = gpuDynInst->wavefront();
14957  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14958 
14959  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14960  if (wf->execMask(lane)) {
14961  vcc.setBit(lane, 1);
14962  }
14963  }
14964 
14965  vcc.write();
14966  }
14967 
14969  : Inst_VOPC(iFmt, "v_cmpx_f_i64")
14970  {
14971  setFlag(ALU);
14972  } // Inst_VOPC__V_CMPX_F_I64
14973 
14975  {
14976  } // ~Inst_VOPC__V_CMPX_F_I64
14977 
14978  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
14979  void
14981  {
14982  Wavefront *wf = gpuDynInst->wavefront();
14983  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
14984 
14985  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
14986  if (wf->execMask(lane)) {
14987  vcc.setBit(lane, 0);
14988  }
14989  }
14990 
14991  wf->execMask() = vcc.rawData();
14992  vcc.write();
14993  }
14994 
14996  : Inst_VOPC(iFmt, "v_cmpx_lt_i64")
14997  {
14998  setFlag(ALU);
14999  } // Inst_VOPC__V_CMPX_LT_I64
15000 
15002  {
15003  } // ~Inst_VOPC__V_CMPX_LT_I64
15004 
15005  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
15006  void
15008  {
15009  Wavefront *wf = gpuDynInst->wavefront();
15010  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
15011  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
15012  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15013 
15014  src0.readSrc();
15015  src1.read();
15016 
15017  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15018  if (wf->execMask(lane)) {
15019  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
15020  }
15021  }
15022 
15023  wf->execMask() = vcc.rawData();
15024  vcc.write();
15025  }
15026 
15028  : Inst_VOPC(iFmt, "v_cmpx_eq_i64")
15029  {
15030  setFlag(ALU);
15031  } // Inst_VOPC__V_CMPX_EQ_I64
15032 
15034  {
15035  } // ~Inst_VOPC__V_CMPX_EQ_I64
15036 
15037  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
15038  void
15040  {
15041  Wavefront *wf = gpuDynInst->wavefront();
15042  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
15043  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
15044  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15045 
15046  src0.readSrc();
15047  src1.read();
15048 
15049  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15050  if (wf->execMask(lane)) {
15051  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
15052  }
15053  }
15054 
15055  wf->execMask() = vcc.rawData();
15056  vcc.write();
15057  }
15058 
15060  : Inst_VOPC(iFmt, "v_cmpx_le_i64")
15061  {
15062  setFlag(ALU);
15063  } // Inst_VOPC__V_CMPX_LE_I64
15064 
15066  {
15067  } // ~Inst_VOPC__V_CMPX_LE_I64
15068 
15069  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
15070  void
15072  {
15073  Wavefront *wf = gpuDynInst->wavefront();
15074  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
15075  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
15076  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15077 
15078  src0.readSrc();
15079  src1.read();
15080 
15081  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15082  if (wf->execMask(lane)) {
15083  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
15084  }
15085  }
15086 
15087  wf->execMask() = vcc.rawData();
15088  vcc.write();
15089  }
15090 
15092  : Inst_VOPC(iFmt, "v_cmpx_gt_i64")
15093  {
15094  setFlag(ALU);
15095  } // Inst_VOPC__V_CMPX_GT_I64
15096 
15098  {
15099  } // ~Inst_VOPC__V_CMPX_GT_I64
15100 
15101  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
15102  void
15104  {
15105  Wavefront *wf = gpuDynInst->wavefront();
15106  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
15107  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
15108  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15109 
15110  src0.readSrc();
15111  src1.read();
15112 
15113  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15114  if (wf->execMask(lane)) {
15115  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
15116  }
15117  }
15118 
15119  wf->execMask() = vcc.rawData();
15120  vcc.write();
15121  }
15122 
15124  : Inst_VOPC(iFmt, "v_cmpx_ne_i64")
15125  {
15126  setFlag(ALU);
15127  } // Inst_VOPC__V_CMPX_NE_I64
15128 
15130  {
15131  } // ~Inst_VOPC__V_CMPX_NE_I64
15132 
15133  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
15134  void
15136  {
15137  Wavefront *wf = gpuDynInst->wavefront();
15138  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
15139  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
15140  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15141 
15142  src0.readSrc();
15143  src1.read();
15144 
15145  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15146  if (wf->execMask(lane)) {
15147  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
15148  }
15149  }
15150 
15151  wf->execMask() = vcc.rawData();
15152  vcc.write();
15153  }
15154 
15156  : Inst_VOPC(iFmt, "v_cmpx_ge_i64")
15157  {
15158  setFlag(ALU);
15159  } // Inst_VOPC__V_CMPX_GE_I64
15160 
15162  {
15163  } // ~Inst_VOPC__V_CMPX_GE_I64
15164 
15165  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
15166  void
15168  {
15169  Wavefront *wf = gpuDynInst->wavefront();
15170  ConstVecOperandI64 src0(gpuDynInst, instData.SRC0);
15171  ConstVecOperandI64 src1(gpuDynInst, instData.VSRC1);
15172  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15173 
15174  src0.readSrc();
15175  src1.read();
15176 
15177  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15178  if (wf->execMask(lane)) {
15179  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
15180  }
15181  }
15182 
15183  wf->execMask() = vcc.rawData();
15184  vcc.write();
15185  }
15186 
15188  : Inst_VOPC(iFmt, "v_cmpx_t_i64")
15189  {
15190  setFlag(ALU);
15191  } // Inst_VOPC__V_CMPX_T_I64
15192 
15194  {
15195  } // ~Inst_VOPC__V_CMPX_T_I64
15196 
15197  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
15198  void
15200  {
15201  Wavefront *wf = gpuDynInst->wavefront();
15202  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15203 
15204  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15205  if (wf->execMask(lane)) {
15206  vcc.setBit(lane, 1);
15207  }
15208  }
15209 
15210  wf->execMask() = vcc.rawData();
15211  vcc.write();
15212  }
15213 
15215  : Inst_VOPC(iFmt, "v_cmpx_f_u64")
15216  {
15217  setFlag(ALU);
15218  } // Inst_VOPC__V_CMPX_F_U64
15219 
15221  {
15222  } // ~Inst_VOPC__V_CMPX_F_U64
15223 
15224  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
15225  void
15227  {
15228  Wavefront *wf = gpuDynInst->wavefront();
15229  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15230 
15231  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15232  if (wf->execMask(lane)) {
15233  vcc.setBit(lane, 0);
15234  }
15235  }
15236 
15237  wf->execMask() = vcc.rawData();
15238  vcc.write();
15239  }
15240 
15242  : Inst_VOPC(iFmt, "v_cmpx_lt_u64")
15243  {
15244  setFlag(ALU);
15245  } // Inst_VOPC__V_CMPX_LT_U64
15246 
15248  {
15249  } // ~Inst_VOPC__V_CMPX_LT_U64
15250 
15251  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
15252  void
15254  {
15255  Wavefront *wf = gpuDynInst->wavefront();
15256  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
15257  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
15258  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15259 
15260  src0.readSrc();
15261  src1.read();
15262 
15263  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15264  if (wf->execMask(lane)) {
15265  vcc.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
15266  }
15267  }
15268 
15269  wf->execMask() = vcc.rawData();
15270  vcc.write();
15271  }
15272 
15274  : Inst_VOPC(iFmt, "v_cmpx_eq_u64")
15275  {
15276  setFlag(ALU);
15277  } // Inst_VOPC__V_CMPX_EQ_U64
15278 
15280  {
15281  } // ~Inst_VOPC__V_CMPX_EQ_U64
15282 
15283  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
15284  void
15286  {
15287  Wavefront *wf = gpuDynInst->wavefront();
15288  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
15289  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
15290  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15291 
15292  src0.readSrc();
15293  src1.read();
15294 
15295  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15296  if (wf->execMask(lane)) {
15297  vcc.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
15298  }
15299  }
15300 
15301  wf->execMask() = vcc.rawData();
15302  vcc.write();
15303  }
15304 
15306  : Inst_VOPC(iFmt, "v_cmpx_le_u64")
15307  {
15308  setFlag(ALU);
15309  } // Inst_VOPC__V_CMPX_LE_U64
15310 
15312  {
15313  } // ~Inst_VOPC__V_CMPX_LE_U64
15314 
15315  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
15316  void
15318  {
15319  Wavefront *wf = gpuDynInst->wavefront();
15320  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
15321  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
15322  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15323 
15324  src0.readSrc();
15325  src1.read();
15326 
15327  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15328  if (wf->execMask(lane)) {
15329  vcc.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
15330  }
15331  }
15332 
15333  wf->execMask() = vcc.rawData();
15334  vcc.write();
15335  }
15336 
15338  : Inst_VOPC(iFmt, "v_cmpx_gt_u64")
15339  {
15340  setFlag(ALU);
15341  } // Inst_VOPC__V_CMPX_GT_U64
15342 
15344  {
15345  } // ~Inst_VOPC__V_CMPX_GT_U64
15346 
15347  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
15348  void
15350  {
15351  Wavefront *wf = gpuDynInst->wavefront();
15352  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
15353  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
15354  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15355 
15356  src0.readSrc();
15357  src1.read();
15358 
15359  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15360  if (wf->execMask(lane)) {
15361  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
15362  }
15363  }
15364 
15365  wf->execMask() = vcc.rawData();
15366  vcc.write();
15367  }
15368 
15370  : Inst_VOPC(iFmt, "v_cmpx_ne_u64")
15371  {
15372  setFlag(ALU);
15373  } // Inst_VOPC__V_CMPX_NE_U64
15374 
15376  {
15377  } // ~Inst_VOPC__V_CMPX_NE_U64
15378 
15379  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
15380  void
15382  {
15383  Wavefront *wf = gpuDynInst->wavefront();
15384  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
15385  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
15386  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15387 
15388  src0.readSrc();
15389  src1.read();
15390 
15391  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15392  if (wf->execMask(lane)) {
15393  vcc.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
15394  }
15395  }
15396 
15397  wf->execMask() = vcc.rawData();
15398  vcc.write();
15399  }
15400 
15402  : Inst_VOPC(iFmt, "v_cmpx_ge_u64")
15403  {
15404  setFlag(ALU);
15405  } // Inst_VOPC__V_CMPX_GE_U64
15406 
15408  {
15409  } // ~Inst_VOPC__V_CMPX_GE_U64
15410 
15411  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
15412  void
15414  {
15415  Wavefront *wf = gpuDynInst->wavefront();
15416  ConstVecOperandU64 src0(gpuDynInst, instData.SRC0);
15417  ConstVecOperandU64 src1(gpuDynInst, instData.VSRC1);
15418  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15419 
15420  src0.readSrc();
15421  src1.read();
15422 
15423  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15424  if (wf->execMask(lane)) {
15425  vcc.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
15426  }
15427  }
15428 
15429  wf->execMask() = vcc.rawData();
15430  vcc.write();
15431  }
15432 
15434  : Inst_VOPC(iFmt, "v_cmpx_t_u64")
15435  {
15436  setFlag(ALU);
15437  } // Inst_VOPC__V_CMPX_T_U64
15438 
15440  {
15441  } // ~Inst_VOPC__V_CMPX_T_U64
15442 
15443  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
15444  void
15446  {
15447  Wavefront *wf = gpuDynInst->wavefront();
15448  ScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
15449 
15450  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15451  if (wf->execMask(lane)) {
15452  vcc.setBit(lane, 1);
15453  }
15454  }
15455 
15456  wf->execMask() = vcc.rawData();
15457  vcc.write();
15458  }
15459 
15461  InFmt_VINTRP *iFmt)
15462  : Inst_VINTRP(iFmt, "v_interp_p1_f32")
15463  {
15464  setFlag(ALU);
15465  setFlag(F32);
15466  } // Inst_VINTRP__V_INTERP_P1_F32
15467 
15469  {
15470  } // ~Inst_VINTRP__V_INTERP_P1_F32
15471 
15472  // D.f = P10 * S.f + P0; parameter interpolation
15473  void
15475  {
15477  }
15478 
15480  InFmt_VINTRP *iFmt)
15481  : Inst_VINTRP(iFmt, "v_interp_p2_f32")
15482  {
15483  setFlag(ALU);
15484  setFlag(F32);
15485  } // Inst_VINTRP__V_INTERP_P2_F32
15486 
15488  {
15489  } // ~Inst_VINTRP__V_INTERP_P2_F32
15490 
15491  // D.f = P20 * S.f + D.f; parameter interpolation
15492  void
15494  {
15496  }
15497 
15499  InFmt_VINTRP *iFmt)
15500  : Inst_VINTRP(iFmt, "v_interp_mov_f32")
15501  {
15502  setFlag(ALU);
15503  setFlag(F32);
15504  } // Inst_VINTRP__V_INTERP_MOV_F32
15505 
15507  {
15508  } // ~Inst_VINTRP__V_INTERP_MOV_F32
15509 
15510  void
15512  {
15514  }
15515 
15517  InFmt_VOP3 *iFmt)
15518  : Inst_VOP3(iFmt, "v_cmp_class_f32", true)
15519  {
15520  setFlag(ALU);
15521  setFlag(F32);
15522  } // Inst_VOP3__V_CMP_CLASS_F32
15523 
15525  {
15526  } // ~Inst_VOP3__V_CMP_CLASS_F32
15527 
15528  // VCC = IEEE numeric class function specified in S1.u, performed on S0.f
15529  // The function reports true if the floating point value is any of the
15530  // numeric types selected in S1.u according to the following list:
15531  // S1.u[0] -- value is a signaling NaN.
15532  // S1.u[1] -- value is a quiet NaN.
15533  // S1.u[2] -- value is negative infinity.
15534  // S1.u[3] -- value is a negative normal value.
15535  // S1.u[4] -- value is a negative denormal value.
15536  // S1.u[5] -- value is negative zero.
15537  // S1.u[6] -- value is positive zero.
15538  // S1.u[7] -- value is a positive denormal value.
15539  // S1.u[8] -- value is a positive normal value.
15540  // S1.u[9] -- value is positive infinity.
15541  void
15543  {
15544  Wavefront *wf = gpuDynInst->wavefront();
15545  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
15546  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
15547  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
15548 
15549  src0.readSrc();
15550  src1.readSrc();
15551 
15552  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15553  if (wf->execMask(lane)) {
15554  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
15555  // is NaN
15556  if (std::isnan(src0[lane])) {
15557  sdst.setBit(lane, 1);
15558  continue;
15559  }
15560  }
15561  if (bits(src1[lane], 2)) {
15562  // is -infinity
15563  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
15564  sdst.setBit(lane, 1);
15565  continue;
15566  }
15567  }
15568  if (bits(src1[lane], 3)) {
15569  // is -normal
15570  if (std::isnormal(src0[lane])
15571  && std::signbit(src0[lane])) {
15572  sdst.setBit(lane, 1);
15573  continue;
15574  }
15575  }
15576  if (bits(src1[lane], 4)) {
15577  // is -denormal
15578  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
15579  && std::signbit(src0[lane])) {
15580  sdst.setBit(lane, 1);
15581  continue;
15582  }
15583  }
15584  if (bits(src1[lane], 5)) {
15585  // is -zero
15586  if (std::fpclassify(src0[lane]) == FP_ZERO
15587  && std::signbit(src0[lane])) {
15588  sdst.setBit(lane, 1);
15589  continue;
15590  }
15591  }
15592  if (bits(src1[lane], 6)) {
15593  // is +zero
15594  if (std::fpclassify(src0[lane]) == FP_ZERO
15595  && !std::signbit(src0[lane])) {
15596  sdst.setBit(lane, 1);
15597  continue;
15598  }
15599  }
15600  if (bits(src1[lane], 7)) {
15601  // is +denormal
15602  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
15603  && !std::signbit(src0[lane])) {
15604  sdst.setBit(lane, 1);
15605  continue;
15606  }
15607  }
15608  if (bits(src1[lane], 8)) {
15609  // is +normal
15610  if (std::isnormal(src0[lane])
15611  && !std::signbit(src0[lane])) {
15612  sdst.setBit(lane, 1);
15613  continue;
15614  }
15615  }
15616  if (bits(src1[lane], 9)) {
15617  // is +infinity
15618  if (std::isinf(src0[lane])
15619  && !std::signbit(src0[lane])) {
15620  sdst.setBit(lane, 1);
15621  continue;
15622  }
15623  }
15624  }
15625  }
15626 
15627  sdst.write();
15628  }
15629 
15631  InFmt_VOP3 *iFmt)
15632  : Inst_VOP3(iFmt, "v_cmpx_class_f32", true)
15633  {
15634  setFlag(ALU);
15635  setFlag(F32);
15636  } // Inst_VOP3__V_CMPX_CLASS_F32
15637 
15639  {
15640  } // ~Inst_VOP3__V_CMPX_CLASS_F32
15641 
15642  // EXEC, VCC = IEEE numeric class function specified in S1.u, performed on
15643  // S0.f
15644  // The function reports true if the floating point value is any of the
15645  // numeric types selected in S1.u according to the following list:
15646  // S1.u[0] -- value is a signaling NaN.
15647  // S1.u[1] -- value is a quiet NaN.
15648  // S1.u[2] -- value is negative infinity.
15649  // S1.u[3] -- value is a negative normal value.
15650  // S1.u[4] -- value is a negative denormal value.
15651  // S1.u[5] -- value is negative zero.
15652  // S1.u[6] -- value is positive zero.
15653  // S1.u[7] -- value is a positive denormal value.
15654  // S1.u[8] -- value is a positive normal value.
15655  // S1.u[9] -- value is positive infinity.
15656  void
15658  {
15659  Wavefront *wf = gpuDynInst->wavefront();
15660  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
15661  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
15662  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
15663 
15664  src0.readSrc();
15665  src1.readSrc();
15666 
15667  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15668  if (wf->execMask(lane)) {
15669  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
15670  // is NaN
15671  if (std::isnan(src0[lane])) {
15672  sdst.setBit(lane, 1);
15673  continue;
15674  }
15675  }
15676  if (bits(src1[lane], 2)) {
15677  // is -infinity
15678  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
15679  sdst.setBit(lane, 1);
15680  continue;
15681  }
15682  }
15683  if (bits(src1[lane], 3)) {
15684  // is -normal
15685  if (std::isnormal(src0[lane])
15686  && std::signbit(src0[lane])) {
15687  sdst.setBit(lane, 1);
15688  continue;
15689  }
15690  }
15691  if (bits(src1[lane], 4)) {
15692  // is -denormal
15693  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
15694  && std::signbit(src0[lane])) {
15695  sdst.setBit(lane, 1);
15696  continue;
15697  }
15698  }
15699  if (bits(src1[lane], 5)) {
15700  // is -zero
15701  if (std::fpclassify(src0[lane]) == FP_ZERO
15702  && std::signbit(src0[lane])) {
15703  sdst.setBit(lane, 1);
15704  continue;
15705  }
15706  }
15707  if (bits(src1[lane], 6)) {
15708  // is +zero
15709  if (std::fpclassify(src0[lane]) == FP_ZERO
15710  && !std::signbit(src0[lane])) {
15711  sdst.setBit(lane, 1);
15712  continue;
15713  }
15714  }
15715  if (bits(src1[lane], 7)) {
15716  // is +denormal
15717  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
15718  && !std::signbit(src0[lane])) {
15719  sdst.setBit(lane, 1);
15720  continue;
15721  }
15722  }
15723  if (bits(src1[lane], 8)) {
15724  // is +normal
15725  if (std::isnormal(src0[lane])
15726  && !std::signbit(src0[lane])) {
15727  sdst.setBit(lane, 1);
15728  continue;
15729  }
15730  }
15731  if (bits(src1[lane], 9)) {
15732  // is +infinity
15733  if (std::isinf(src0[lane])
15734  && !std::signbit(src0[lane])) {
15735  sdst.setBit(lane, 1);
15736  continue;
15737  }
15738  }
15739  }
15740  }
15741 
15742  wf->execMask() = sdst.rawData();
15743  sdst.write();
15744  }
15745 
15747  InFmt_VOP3 *iFmt)
15748  : Inst_VOP3(iFmt, "v_cmp_class_f64", true)
15749  {
15750  setFlag(ALU);
15751  setFlag(F64);
15752  } // Inst_VOP3__V_CMP_CLASS_F64
15753 
15755  {
15756  } // ~Inst_VOP3__V_CMP_CLASS_F64
15757 
15758  // VCC = IEEE numeric class function specified in S1.u, performed on S0.d
15759  // The function reports true if the floating point value is any of the
15760  // numeric types selected in S1.u according to the following list:
15761  // S1.u[0] -- value is a signaling NaN.
15762  // S1.u[1] -- value is a quiet NaN.
15763  // S1.u[2] -- value is negative infinity.
15764  // S1.u[3] -- value is a negative normal value.
15765  // S1.u[4] -- value is a negative denormal value.
15766  // S1.u[5] -- value is negative zero.
15767  // S1.u[6] -- value is positive zero.
15768  // S1.u[7] -- value is a positive denormal value.
15769  // S1.u[8] -- value is a positive normal value.
15770  // S1.u[9] -- value is positive infinity.
15771  void
15773  {
15774  Wavefront *wf = gpuDynInst->wavefront();
15775  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
15776  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
15777  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
15778 
15779  src0.readSrc();
15780  src1.readSrc();
15781 
15782  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15783  if (wf->execMask(lane)) {
15784  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
15785  // is NaN
15786  if (std::isnan(src0[lane])) {
15787  sdst.setBit(lane, 1);
15788  continue;
15789  }
15790  }
15791  if (bits(src1[lane], 2)) {
15792  // is -infinity
15793  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
15794  sdst.setBit(lane, 1);
15795  continue;
15796  }
15797  }
15798  if (bits(src1[lane], 3)) {
15799  // is -normal
15800  if (std::isnormal(src0[lane])
15801  && std::signbit(src0[lane])) {
15802  sdst.setBit(lane, 1);
15803  continue;
15804  }
15805  }
15806  if (bits(src1[lane], 4)) {
15807  // is -denormal
15808  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
15809  && std::signbit(src0[lane])) {
15810  sdst.setBit(lane, 1);
15811  continue;
15812  }
15813  }
15814  if (bits(src1[lane], 5)) {
15815  // is -zero
15816  if (std::fpclassify(src0[lane]) == FP_ZERO
15817  && std::signbit(src0[lane])) {
15818  sdst.setBit(lane, 1);
15819  continue;
15820  }
15821  }
15822  if (bits(src1[lane], 6)) {
15823  // is +zero
15824  if (std::fpclassify(src0[lane]) == FP_ZERO
15825  && !std::signbit(src0[lane])) {
15826  sdst.setBit(lane, 1);
15827  continue;
15828  }
15829  }
15830  if (bits(src1[lane], 7)) {
15831  // is +denormal
15832  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
15833  && !std::signbit(src0[lane])) {
15834  sdst.setBit(lane, 1);
15835  continue;
15836  }
15837  }
15838  if (bits(src1[lane], 8)) {
15839  // is +normal
15840  if (std::isnormal(src0[lane])
15841  && !std::signbit(src0[lane])) {
15842  sdst.setBit(lane, 1);
15843  continue;
15844  }
15845  }
15846  if (bits(src1[lane], 9)) {
15847  // is +infinity
15848  if (std::isinf(src0[lane])
15849  && !std::signbit(src0[lane])) {
15850  sdst.setBit(lane, 1);
15851  continue;
15852  }
15853  }
15854  }
15855  }
15856 
15857  sdst.write();
15858  }
15859 
15861  InFmt_VOP3 *iFmt)
15862  : Inst_VOP3(iFmt, "v_cmpx_class_f64", true)
15863  {
15864  setFlag(ALU);
15865  setFlag(F64);
15866  } // Inst_VOP3__V_CMPX_CLASS_F64
15867 
15869  {
15870  } // ~Inst_VOP3__V_CMPX_CLASS_F64
15871 
15872  // EXEC, VCC = IEEE numeric class function specified in S1.u, performed on
15873  // S0.d
15874  // The function reports true if the floating point value is any of the
15875  // numeric types selected in S1.u according to the following list:
15876  // S1.u[0] -- value is a signaling NaN.
15877  // S1.u[1] -- value is a quiet NaN.
15878  // S1.u[2] -- value is negative infinity.
15879  // S1.u[3] -- value is a negative normal value.
15880  // S1.u[4] -- value is a negative denormal value.
15881  // S1.u[5] -- value is negative zero.
15882  // S1.u[6] -- value is positive zero.
15883  // S1.u[7] -- value is a positive denormal value.
15884  // S1.u[8] -- value is a positive normal value.
15885  // S1.u[9] -- value is positive infinity.
15886  void
15888  {
15889  Wavefront *wf = gpuDynInst->wavefront();
15890  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
15891  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
15892  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
15893 
15894  src0.readSrc();
15895  src1.readSrc();
15896 
15897  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
15898  if (wf->execMask(lane)) {
15899  if (bits(src1[lane], 0) || bits(src1[lane], 1)) {
15900  // is NaN
15901  if (std::isnan(src0[lane])) {
15902  sdst.setBit(lane, 1);
15903  continue;
15904  }
15905  }
15906  if (bits(src1[lane], 2)) {
15907  // is -infinity
15908  if (std::isinf(src0[lane]) && std::signbit(src0[lane])) {
15909  sdst.setBit(lane, 1);
15910  continue;
15911  }
15912  }
15913  if (bits(src1[lane], 3)) {
15914  // is -normal
15915  if (std::isnormal(src0[lane])
15916  && std::signbit(src0[lane])) {
15917  sdst.setBit(lane, 1);
15918  continue;
15919  }
15920  }
15921  if (bits(src1[lane], 4)) {
15922  // is -denormal
15923  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
15924  && std::signbit(src0[lane])) {
15925  sdst.setBit(lane, 1);
15926  continue;
15927  }
15928  }
15929  if (bits(src1[lane], 5)) {
15930  // is -zero
15931  if (std::fpclassify(src0[lane]) == FP_ZERO
15932  && std::signbit(src0[lane])) {
15933  sdst.setBit(lane, 1);
15934  continue;
15935  }
15936  }
15937  if (bits(src1[lane], 6)) {
15938  // is +zero
15939  if (std::fpclassify(src0[lane]) == FP_ZERO
15940  && !std::signbit(src0[lane])) {
15941  sdst.setBit(lane, 1);
15942  continue;
15943  }
15944  }
15945  if (bits(src1[lane], 7)) {
15946  // is +denormal
15947  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
15948  && !std::signbit(src0[lane])) {
15949  sdst.setBit(lane, 1);
15950  continue;
15951  }
15952  }
15953  if (bits(src1[lane], 8)) {
15954  // is +normal
15955  if (std::isnormal(src0[lane])
15956  && !std::signbit(src0[lane])) {
15957  sdst.setBit(lane, 1);
15958  continue;
15959  }
15960  }
15961  if (bits(src1[lane], 9)) {
15962  // is +infinity
15963  if (std::isinf(src0[lane])
15964  && !std::signbit(src0[lane])) {
15965  sdst.setBit(lane, 1);
15966  continue;
15967  }
15968  }
15969  }
15970  }
15971 
15972  wf->execMask() = sdst.rawData();
15973  sdst.write();
15974  }
15975 
15977  InFmt_VOP3 *iFmt)
15978  : Inst_VOP3(iFmt, "v_cmp_class_f16", true)
15979  {
15980  setFlag(ALU);
15981  setFlag(F16);
15982  } // Inst_VOP3__V_CMP_CLASS_F16
15983 
15985  {
15986  } // ~Inst_VOP3__V_CMP_CLASS_F16
15987 
15988  // VCC = IEEE numeric class function specified in S1.u, performed on S0.f16
15989  // The function reports true if the floating point value is any of the
15990  // numeric types selected in S1.u according to the following list:
15991  // S1.u[0] -- value is a signaling NaN.
15992  // S1.u[1] -- value is a quiet NaN.
15993  // S1.u[2] -- value is negative infinity.
15994  // S1.u[3] -- value is a negative normal value.
15995  // S1.u[4] -- value is a negative denormal value.
15996  // S1.u[5] -- value is negative zero.
15997  // S1.u[6] -- value is positive zero.
15998  // S1.u[7] -- value is a positive denormal value.
15999  // S1.u[8] -- value is a positive normal value.
16000  // S1.u[9] -- value is positive infinity.
16001  void
16003  {
16005  }
16006 
16008  InFmt_VOP3 *iFmt)
16009  : Inst_VOP3(iFmt, "v_cmpx_class_f16", true)
16010  {
16011  setFlag(ALU);
16012  setFlag(F16);
16013  } // Inst_VOP3__V_CMPX_CLASS_F16
16014 
16016  {
16017  } // ~Inst_VOP3__V_CMPX_CLASS_F16
16018 
16019  // EXEC, VCC = IEEE numeric class function specified in S1.u, performed on
16020  // S0.f16
16021  // The function reports true if the floating point value is any of the
16022  // numeric types selected in S1.u according to the following list:
16023  // S1.u[0] -- value is a signaling NaN.
16024  // S1.u[1] -- value is a quiet NaN.
16025  // S1.u[2] -- value is negative infinity.
16026  // S1.u[3] -- value is a negative normal value.
16027  // S1.u[4] -- value is a negative denormal value.
16028  // S1.u[5] -- value is negative zero.
16029  // S1.u[6] -- value is positive zero.
16030  // S1.u[7] -- value is a positive denormal value.
16031  // S1.u[8] -- value is a positive normal value.
16032  // S1.u[9] -- value is positive infinity.
16033  void
16035  {
16037  }
16038 
16040  : Inst_VOP3(iFmt, "v_cmp_f_f16", true)
16041  {
16042  setFlag(ALU);
16043  setFlag(F16);
16044  } // Inst_VOP3__V_CMP_F_F16
16045 
16047  {
16048  } // ~Inst_VOP3__V_CMP_F_F16
16049 
16050  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
16051  void
16053  {
16055  }
16056 
16058  InFmt_VOP3 *iFmt)
16059  : Inst_VOP3(iFmt, "v_cmp_lt_f16", true)
16060  {
16061  setFlag(ALU);
16062  setFlag(F16);
16063  } // Inst_VOP3__V_CMP_LT_F16
16064 
16066  {
16067  } // ~Inst_VOP3__V_CMP_LT_F16
16068 
16069  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
16070  void
16072  {
16074  }
16075 
16077  InFmt_VOP3 *iFmt)
16078  : Inst_VOP3(iFmt, "v_cmp_eq_f16", true)
16079  {
16080  setFlag(ALU);
16081  setFlag(F16);
16082  } // Inst_VOP3__V_CMP_EQ_F16
16083 
16085  {
16086  } // ~Inst_VOP3__V_CMP_EQ_F16
16087 
16088  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
16089  void
16091  {
16093  }
16094 
16096  InFmt_VOP3 *iFmt)
16097  : Inst_VOP3(iFmt, "v_cmp_le_f16", true)
16098  {
16099  setFlag(ALU);
16100  setFlag(F16);
16101  } // Inst_VOP3__V_CMP_LE_F16
16102 
16104  {
16105  } // ~Inst_VOP3__V_CMP_LE_F16
16106 
16107  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
16108  void
16110  {
16112  }
16113 
16115  InFmt_VOP3 *iFmt)
16116  : Inst_VOP3(iFmt, "v_cmp_gt_f16", true)
16117  {
16118  setFlag(ALU);
16119  setFlag(F16);
16120  } // Inst_VOP3__V_CMP_GT_F16
16121 
16123  {
16124  } // ~Inst_VOP3__V_CMP_GT_F16
16125 
16126  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
16127  void
16129  {
16131  }
16132 
16134  InFmt_VOP3 *iFmt)
16135  : Inst_VOP3(iFmt, "v_cmp_lg_f16", true)
16136  {
16137  setFlag(ALU);
16138  setFlag(F16);
16139  } // Inst_VOP3__V_CMP_LG_F16
16140 
16142  {
16143  } // ~Inst_VOP3__V_CMP_LG_F16
16144 
16145  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
16146  void
16148  {
16150  }
16151 
16153  InFmt_VOP3 *iFmt)
16154  : Inst_VOP3(iFmt, "v_cmp_ge_f16", true)
16155  {
16156  setFlag(ALU);
16157  setFlag(F16);
16158  } // Inst_VOP3__V_CMP_GE_F16
16159 
16161  {
16162  } // ~Inst_VOP3__V_CMP_GE_F16
16163 
16164  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
16165  void
16167  {
16169  }
16170 
16172  : Inst_VOP3(iFmt, "v_cmp_o_f16", true)
16173  {
16174  setFlag(ALU);
16175  setFlag(F16);
16176  } // Inst_VOP3__V_CMP_O_F16
16177 
16179  {
16180  } // ~Inst_VOP3__V_CMP_O_F16
16181 
16182  // D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC encoding.
16183  void
16185  {
16187  }
16188 
16190  : Inst_VOP3(iFmt, "v_cmp_u_f16", true)
16191  {
16192  setFlag(ALU);
16193  setFlag(F16);
16194  } // Inst_VOP3__V_CMP_U_F16
16195 
16197  {
16198  } // ~Inst_VOP3__V_CMP_U_F16
16199 
16200  // D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC encoding.
16201  void
16203  {
16205  }
16206 
16208  InFmt_VOP3 *iFmt)
16209  : Inst_VOP3(iFmt, "v_cmp_nge_f16", true)
16210  {
16211  setFlag(ALU);
16212  setFlag(F16);
16213  } // Inst_VOP3__V_CMP_NGE_F16
16214 
16216  {
16217  } // ~Inst_VOP3__V_CMP_NGE_F16
16218 
16219  // D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
16220  void
16222  {
16224  }
16225 
16227  InFmt_VOP3 *iFmt)
16228  : Inst_VOP3(iFmt, "v_cmp_nlg_f16", true)
16229  {
16230  setFlag(ALU);
16231  setFlag(F16);
16232  } // Inst_VOP3__V_CMP_NLG_F16
16233 
16235  {
16236  } // ~Inst_VOP3__V_CMP_NLG_F16
16237 
16238  // D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
16239  void
16241  {
16243  }
16244 
16246  InFmt_VOP3 *iFmt)
16247  : Inst_VOP3(iFmt, "v_cmp_ngt_f16", true)
16248  {
16249  setFlag(ALU);
16250  setFlag(F16);
16251  } // Inst_VOP3__V_CMP_NGT_F16
16252 
16254  {
16255  } // ~Inst_VOP3__V_CMP_NGT_F16
16256 
16257  // D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
16258  void
16260  {
16262  }
16263 
16265  InFmt_VOP3 *iFmt)
16266  : Inst_VOP3(iFmt, "v_cmp_nle_f16", true)
16267  {
16268  setFlag(ALU);
16269  setFlag(F16);
16270  } // Inst_VOP3__V_CMP_NLE_F16
16271 
16273  {
16274  } // ~Inst_VOP3__V_CMP_NLE_F16
16275 
16276  // D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
16277  void
16279  {
16281  }
16282 
16284  InFmt_VOP3 *iFmt)
16285  : Inst_VOP3(iFmt, "v_cmp_neq_f16", true)
16286  {
16287  setFlag(ALU);
16288  setFlag(F16);
16289  } // Inst_VOP3__V_CMP_NEQ_F16
16290 
16292  {
16293  } // ~Inst_VOP3__V_CMP_NEQ_F16
16294 
16295  // D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
16296  void
16298  {
16300  }
16301 
16303  InFmt_VOP3 *iFmt)
16304  : Inst_VOP3(iFmt, "v_cmp_nlt_f16", true)
16305  {
16306  setFlag(ALU);
16307  setFlag(F16);
16308  } // Inst_VOP3__V_CMP_NLT_F16
16309 
16311  {
16312  } // ~Inst_VOP3__V_CMP_NLT_F16
16313 
16314  // D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
16315  void
16317  {
16319  }
16320 
16322  InFmt_VOP3 *iFmt)
16323  : Inst_VOP3(iFmt, "v_cmp_tru_f16", true)
16324  {
16325  setFlag(ALU);
16326  setFlag(F16);
16327  } // Inst_VOP3__V_CMP_TRU_F16
16328 
16330  {
16331  } // ~Inst_VOP3__V_CMP_TRU_F16
16332 
16333  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
16334  void
16336  {
16337  Wavefront *wf = gpuDynInst->wavefront();
16338  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16339 
16340  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16341  if (wf->execMask(lane)) {
16342  sdst.setBit(lane, 1);
16343  }
16344  }
16345 
16346  sdst.write();
16347  }
16348 
16350  InFmt_VOP3 *iFmt)
16351  : Inst_VOP3(iFmt, "v_cmpx_f_f16", true)
16352  {
16353  setFlag(ALU);
16354  } // Inst_VOP3__V_CMPX_F_F16
16355 
16357  {
16358  } // ~Inst_VOP3__V_CMPX_F_F16
16359 
16360  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
16361  void
16363  {
16364  Wavefront *wf = gpuDynInst->wavefront();
16365  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16366 
16367  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16368  if (wf->execMask(lane)) {
16369  sdst.setBit(lane, 0);
16370  }
16371  }
16372 
16373  wf->execMask() = sdst.rawData();
16374  sdst.write();
16375  }
16376 
16378  InFmt_VOP3 *iFmt)
16379  : Inst_VOP3(iFmt, "v_cmpx_lt_f16", true)
16380  {
16381  setFlag(ALU);
16382  setFlag(F16);
16383  } // Inst_VOP3__V_CMPX_LT_F16
16384 
16386  {
16387  } // ~Inst_VOP3__V_CMPX_LT_F16
16388 
16389  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
16390  void
16392  {
16394  }
16395 
16397  InFmt_VOP3 *iFmt)
16398  : Inst_VOP3(iFmt, "v_cmpx_eq_f16", true)
16399  {
16400  setFlag(ALU);
16401  setFlag(F16);
16402  } // Inst_VOP3__V_CMPX_EQ_F16
16403 
16405  {
16406  } // ~Inst_VOP3__V_CMPX_EQ_F16
16407 
16408  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
16409  void
16411  {
16413  }
16414 
16416  InFmt_VOP3 *iFmt)
16417  : Inst_VOP3(iFmt, "v_cmpx_le_f16", true)
16418  {
16419  setFlag(ALU);
16420  setFlag(F16);
16421  } // Inst_VOP3__V_CMPX_LE_F16
16422 
16424  {
16425  } // ~Inst_VOP3__V_CMPX_LE_F16
16426 
16427  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
16428  void
16430  {
16432  }
16433 
16435  InFmt_VOP3 *iFmt)
16436  : Inst_VOP3(iFmt, "v_cmpx_gt_f16", true)
16437  {
16438  setFlag(ALU);
16439  setFlag(F16);
16440  } // Inst_VOP3__V_CMPX_GT_F16
16441 
16443  {
16444  } // ~Inst_VOP3__V_CMPX_GT_F16
16445 
16446  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
16447  void
16449  {
16451  }
16452 
16454  InFmt_VOP3 *iFmt)
16455  : Inst_VOP3(iFmt, "v_cmpx_lg_f16", true)
16456  {
16457  setFlag(ALU);
16458  setFlag(F16);
16459  } // Inst_VOP3__V_CMPX_LG_F16
16460 
16462  {
16463  } // ~Inst_VOP3__V_CMPX_LG_F16
16464 
16465  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
16466  void
16468  {
16470  }
16471 
16473  InFmt_VOP3 *iFmt)
16474  : Inst_VOP3(iFmt, "v_cmpx_ge_f16", true)
16475  {
16476  setFlag(ALU);
16477  setFlag(F16);
16478  } // Inst_VOP3__V_CMPX_GE_F16
16479 
16481  {
16482  } // ~Inst_VOP3__V_CMPX_GE_F16
16483 
16484  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
16485  void
16487  {
16489  }
16490 
16492  InFmt_VOP3 *iFmt)
16493  : Inst_VOP3(iFmt, "v_cmpx_o_f16", true)
16494  {
16495  setFlag(ALU);
16496  setFlag(F16);
16497  } // Inst_VOP3__V_CMPX_O_F16
16498 
16500  {
16501  } // ~Inst_VOP3__V_CMPX_O_F16
16502 
16503  // EXEC,D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC
16504  // encoding.
16505  void
16507  {
16509  }
16510 
16512  InFmt_VOP3 *iFmt)
16513  : Inst_VOP3(iFmt, "v_cmpx_u_f16", true)
16514  {
16515  setFlag(ALU);
16516  setFlag(F16);
16517  } // Inst_VOP3__V_CMPX_U_F16
16518 
16520  {
16521  } // ~Inst_VOP3__V_CMPX_U_F16
16522 
16523  // EXEC,D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC
16524  // encoding.
16525  void
16527  {
16529  }
16530 
16532  InFmt_VOP3 *iFmt)
16533  : Inst_VOP3(iFmt, "v_cmpx_nge_f16", true)
16534  {
16535  setFlag(ALU);
16536  setFlag(F16);
16537  } // Inst_VOP3__V_CMPX_NGE_F16
16538 
16540  {
16541  } // ~Inst_VOP3__V_CMPX_NGE_F16
16542 
16543  // EXEC,D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
16544  void
16546  {
16548  }
16549 
16551  InFmt_VOP3 *iFmt)
16552  : Inst_VOP3(iFmt, "v_cmpx_nlg_f16", true)
16553  {
16554  setFlag(ALU);
16555  setFlag(F16);
16556  } // Inst_VOP3__V_CMPX_NLG_F16
16557 
16559  {
16560  } // ~Inst_VOP3__V_CMPX_NLG_F16
16561 
16562  // EXEC,D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
16563  void
16565  {
16567  }
16568 
16570  InFmt_VOP3 *iFmt)
16571  : Inst_VOP3(iFmt, "v_cmpx_ngt_f16", true)
16572  {
16573  setFlag(ALU);
16574  setFlag(F16);
16575  } // Inst_VOP3__V_CMPX_NGT_F16
16576 
16578  {
16579  } // ~Inst_VOP3__V_CMPX_NGT_F16
16580 
16581  // EXEC,D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
16582  void
16584  {
16586  }
16587 
16589  InFmt_VOP3 *iFmt)
16590  : Inst_VOP3(iFmt, "v_cmpx_nle_f16", true)
16591  {
16592  setFlag(ALU);
16593  setFlag(F16);
16594  } // Inst_VOP3__V_CMPX_NLE_F16
16595 
16597  {
16598  } // ~Inst_VOP3__V_CMPX_NLE_F16
16599 
16600  // EXEC,D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
16601  void
16603  {
16605  }
16606 
16608  InFmt_VOP3 *iFmt)
16609  : Inst_VOP3(iFmt, "v_cmpx_neq_f16", true)
16610  {
16611  setFlag(ALU);
16612  setFlag(F16);
16613  } // Inst_VOP3__V_CMPX_NEQ_F16
16614 
16616  {
16617  } // ~Inst_VOP3__V_CMPX_NEQ_F16
16618 
16619  // EXEC,D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
16620  void
16622  {
16624  }
16625 
16627  InFmt_VOP3 *iFmt)
16628  : Inst_VOP3(iFmt, "v_cmpx_nlt_f16", true)
16629  {
16630  setFlag(ALU);
16631  setFlag(F16);
16632  } // Inst_VOP3__V_CMPX_NLT_F16
16633 
16635  {
16636  } // ~Inst_VOP3__V_CMPX_NLT_F16
16637 
16638  // EXEC,D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
16639  void
16641  {
16643  }
16644 
16646  InFmt_VOP3 *iFmt)
16647  : Inst_VOP3(iFmt, "v_cmpx_tru_f16", true)
16648  {
16649  setFlag(ALU);
16650  setFlag(F16);
16651  } // Inst_VOP3__V_CMPX_TRU_F16
16652 
16654  {
16655  } // ~Inst_VOP3__V_CMPX_TRU_F16
16656 
16657  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
16658  void
16660  {
16661  Wavefront *wf = gpuDynInst->wavefront();
16662  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16663 
16664  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16665  if (wf->execMask(lane)) {
16666  sdst.setBit(lane, 1);
16667  }
16668  }
16669 
16670  wf->execMask() = sdst.rawData();
16671  sdst.write();
16672  }
16673 
16675  : Inst_VOP3(iFmt, "v_cmp_f_f32", true)
16676  {
16677  setFlag(ALU);
16678  setFlag(F32);
16679  } // Inst_VOP3__V_CMP_F_F32
16680 
16682  {
16683  } // ~Inst_VOP3__V_CMP_F_F32
16684 
16685  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
16686  void
16688  {
16689  Wavefront *wf = gpuDynInst->wavefront();
16690  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16691 
16692  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16693  if (wf->execMask(lane)) {
16694  sdst.setBit(lane, 0);
16695  }
16696  }
16697 
16698  sdst.write();
16699  }
16700 
16702  InFmt_VOP3 *iFmt)
16703  : Inst_VOP3(iFmt, "v_cmp_lt_f32", true)
16704  {
16705  setFlag(ALU);
16706  setFlag(F32);
16707  } // Inst_VOP3__V_CMP_LT_F32
16708 
16710  {
16711  } // ~Inst_VOP3__V_CMP_LT_F32
16712 
16713  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
16714  void
16716  {
16717  Wavefront *wf = gpuDynInst->wavefront();
16718  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
16719  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
16720  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16721 
16722  src0.readSrc();
16723  src1.readSrc();
16724 
16725  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16726  if (wf->execMask(lane)) {
16727  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
16728  }
16729  }
16730 
16731  sdst.write();
16732  }
16733 
16735  InFmt_VOP3 *iFmt)
16736  : Inst_VOP3(iFmt, "v_cmp_eq_f32", true)
16737  {
16738  setFlag(ALU);
16739  setFlag(F32);
16740  } // Inst_VOP3__V_CMP_EQ_F32
16741 
16743  {
16744  } // ~Inst_VOP3__V_CMP_EQ_F32
16745 
16746  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
16747  void
16749  {
16750  Wavefront *wf = gpuDynInst->wavefront();
16751  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
16752  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
16753  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16754 
16755  src0.readSrc();
16756  src1.readSrc();
16757 
16758  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16759  if (wf->execMask(lane)) {
16760  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
16761  }
16762  }
16763 
16764  sdst.write();
16765  }
16766 
16768  InFmt_VOP3 *iFmt)
16769  : Inst_VOP3(iFmt, "v_cmp_le_f32", true)
16770  {
16771  setFlag(ALU);
16772  setFlag(F32);
16773  } // Inst_VOP3__V_CMP_LE_F32
16774 
16776  {
16777  } // ~Inst_VOP3__V_CMP_LE_F32
16778 
16779  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
16780  void
16782  {
16783  Wavefront *wf = gpuDynInst->wavefront();
16784  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
16785  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
16786  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16787 
16788  src0.readSrc();
16789  src1.readSrc();
16790 
16791  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16792  if (wf->execMask(lane)) {
16793  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
16794  }
16795  }
16796 
16797  sdst.write();
16798  }
16799 
16801  InFmt_VOP3 *iFmt)
16802  : Inst_VOP3(iFmt, "v_cmp_gt_f32", true)
16803  {
16804  setFlag(ALU);
16805  setFlag(F32);
16806  } // Inst_VOP3__V_CMP_GT_F32
16807 
16809  {
16810  } // ~Inst_VOP3__V_CMP_GT_F32
16811 
16812  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
16813  void
16815  {
16816  Wavefront *wf = gpuDynInst->wavefront();
16817  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
16818  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
16819  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16820 
16821  src0.readSrc();
16822  src1.readSrc();
16823 
16824  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16825  if (wf->execMask(lane)) {
16826  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
16827  }
16828  }
16829 
16830  sdst.write();
16831  }
16832 
16834  InFmt_VOP3 *iFmt)
16835  : Inst_VOP3(iFmt, "v_cmp_lg_f32", true)
16836  {
16837  setFlag(ALU);
16838  setFlag(F32);
16839  } // Inst_VOP3__V_CMP_LG_F32
16840 
16842  {
16843  } // ~Inst_VOP3__V_CMP_LG_F32
16844 
16845  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
16846  void
16848  {
16849  Wavefront *wf = gpuDynInst->wavefront();
16850  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
16851  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
16852  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16853 
16854  src0.readSrc();
16855  src1.readSrc();
16856 
16857  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16858  if (wf->execMask(lane)) {
16859  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
16860  }
16861  }
16862 
16863  sdst.write();
16864  }
16865 
16867  InFmt_VOP3 *iFmt)
16868  : Inst_VOP3(iFmt, "v_cmp_ge_f32", true)
16869  {
16870  setFlag(ALU);
16871  setFlag(F32);
16872  } // Inst_VOP3__V_CMP_GE_F32
16873 
16875  {
16876  } // ~Inst_VOP3__V_CMP_GE_F32
16877 
16878  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
16879  void
16881  {
16882  Wavefront *wf = gpuDynInst->wavefront();
16883  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
16884  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
16885  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16886 
16887  src0.readSrc();
16888  src1.readSrc();
16889 
16890  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16891  if (wf->execMask(lane)) {
16892  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
16893  }
16894  }
16895 
16896  sdst.write();
16897  }
16898 
16900  : Inst_VOP3(iFmt, "v_cmp_o_f32", true)
16901  {
16902  setFlag(ALU);
16903  setFlag(F32);
16904  } // Inst_VOP3__V_CMP_O_F32
16905 
16907  {
16908  } // ~Inst_VOP3__V_CMP_O_F32
16909 
16910  // D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC encoding.
16911  void
16913  {
16914  Wavefront *wf = gpuDynInst->wavefront();
16915  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
16916  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
16917  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16918 
16919  src0.readSrc();
16920  src1.readSrc();
16921 
16922  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16923  if (wf->execMask(lane)) {
16924  sdst.setBit(lane, (!std::isnan(src0[lane])
16925  && !std::isnan(src1[lane])) ? 1 : 0);
16926  }
16927  }
16928 
16929  sdst.write();
16930  }
16931 
16933  : Inst_VOP3(iFmt, "v_cmp_u_f32", true)
16934  {
16935  setFlag(ALU);
16936  setFlag(F32);
16937  } // Inst_VOP3__V_CMP_U_F32
16938 
16940  {
16941  } // ~Inst_VOP3__V_CMP_U_F32
16942 
16943  // D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC encoding.
16944  void
16946  {
16947  Wavefront *wf = gpuDynInst->wavefront();
16948  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
16949  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
16950  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16951 
16952  src0.readSrc();
16953  src1.readSrc();
16954 
16955  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16956  if (wf->execMask(lane)) {
16957  sdst.setBit(lane, (std::isnan(src0[lane])
16958  || std::isnan(src1[lane])) ? 1 : 0);
16959  }
16960  }
16961 
16962  sdst.write();
16963  }
16964 
16966  InFmt_VOP3 *iFmt)
16967  : Inst_VOP3(iFmt, "v_cmp_nge_f32", true)
16968  {
16969  setFlag(ALU);
16970  setFlag(F32);
16971  } // Inst_VOP3__V_CMP_NGE_F32
16972 
16974  {
16975  } // ~Inst_VOP3__V_CMP_NGE_F32
16976 
16977  // D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
16978  void
16980  {
16981  Wavefront *wf = gpuDynInst->wavefront();
16982  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
16983  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
16984  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
16985 
16986  src0.readSrc();
16987  src1.readSrc();
16988 
16989  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
16990  if (wf->execMask(lane)) {
16991  sdst.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
16992  }
16993  }
16994 
16995  sdst.write();
16996  }
16997 
16999  InFmt_VOP3 *iFmt)
17000  : Inst_VOP3(iFmt, "v_cmp_nlg_f32", true)
17001  {
17002  setFlag(ALU);
17003  setFlag(F32);
17004  } // Inst_VOP3__V_CMP_NLG_F32
17005 
17007  {
17008  } // ~Inst_VOP3__V_CMP_NLG_F32
17009 
17010  // D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
17011  void
17013  {
17014  Wavefront *wf = gpuDynInst->wavefront();
17015  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17016  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17017  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17018 
17019  src0.readSrc();
17020  src1.readSrc();
17021 
17022  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17023  if (wf->execMask(lane)) {
17024  sdst.setBit(lane, !(src0[lane] < src1[lane]
17025  || src0[lane] > src1[lane]) ? 1 : 0);
17026  }
17027  }
17028 
17029  sdst.write();
17030  }
17031 
17033  InFmt_VOP3 *iFmt)
17034  : Inst_VOP3(iFmt, "v_cmp_ngt_f32", true)
17035  {
17036  setFlag(ALU);
17037  setFlag(F32);
17038  } // Inst_VOP3__V_CMP_NGT_F32
17039 
17041  {
17042  } // ~Inst_VOP3__V_CMP_NGT_F32
17043 
17044  // D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
17045  void
17047  {
17048  Wavefront *wf = gpuDynInst->wavefront();
17049  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17050  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17051  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17052 
17053  src0.readSrc();
17054  src1.readSrc();
17055 
17056  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17057  if (wf->execMask(lane)) {
17058  sdst.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
17059  }
17060  }
17061 
17062  sdst.write();
17063  }
17064 
17066  InFmt_VOP3 *iFmt)
17067  : Inst_VOP3(iFmt, "v_cmp_nle_f32", true)
17068  {
17069  setFlag(ALU);
17070  setFlag(F32);
17071  } // Inst_VOP3__V_CMP_NLE_F32
17072 
17074  {
17075  } // ~Inst_VOP3__V_CMP_NLE_F32
17076 
17077  // D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
17078  void
17080  {
17081  Wavefront *wf = gpuDynInst->wavefront();
17082  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17083  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17084  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17085 
17086  src0.readSrc();
17087  src1.readSrc();
17088 
17089  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17090  if (wf->execMask(lane)) {
17091  sdst.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
17092  }
17093  }
17094 
17095  sdst.write();
17096  }
17097 
17099  InFmt_VOP3 *iFmt)
17100  : Inst_VOP3(iFmt, "v_cmp_neq_f32", true)
17101  {
17102  setFlag(ALU);
17103  setFlag(F32);
17104  } // Inst_VOP3__V_CMP_NEQ_F32
17105 
17107  {
17108  } // ~Inst_VOP3__V_CMP_NEQ_F32
17109 
17110  // D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
17111  void
17113  {
17114  Wavefront *wf = gpuDynInst->wavefront();
17115  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17116  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17117  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17118 
17119  src0.readSrc();
17120  src1.readSrc();
17121 
17122  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17123  if (wf->execMask(lane)) {
17124  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
17125  }
17126  }
17127 
17128  sdst.write();
17129  }
17130 
17132  InFmt_VOP3 *iFmt)
17133  : Inst_VOP3(iFmt, "v_cmp_nlt_f32", true)
17134  {
17135  setFlag(ALU);
17136  setFlag(F32);
17137  } // Inst_VOP3__V_CMP_NLT_F32
17138 
17140  {
17141  } // ~Inst_VOP3__V_CMP_NLT_F32
17142 
17143  // D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
17144  void
17146  {
17147  Wavefront *wf = gpuDynInst->wavefront();
17148  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17149  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17150  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17151 
17152  src0.readSrc();
17153  src1.readSrc();
17154 
17155  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17156  if (wf->execMask(lane)) {
17157  sdst.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
17158  }
17159  }
17160 
17161  sdst.write();
17162  }
17163 
17165  InFmt_VOP3 *iFmt)
17166  : Inst_VOP3(iFmt, "v_cmp_tru_f32", true)
17167  {
17168  setFlag(ALU);
17169  setFlag(F32);
17170  } // Inst_VOP3__V_CMP_TRU_F32
17171 
17173  {
17174  } // ~Inst_VOP3__V_CMP_TRU_F32
17175 
17176  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
17177  void
17179  {
17180  Wavefront *wf = gpuDynInst->wavefront();
17181  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17182 
17183  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17184  if (wf->execMask(lane)) {
17185  sdst.setBit(lane, 1);
17186  }
17187  }
17188 
17189  sdst.write();
17190  }
17191 
17193  InFmt_VOP3 *iFmt)
17194  : Inst_VOP3(iFmt, "v_cmpx_f_f32", true)
17195  {
17196  setFlag(ALU);
17197  setFlag(F32);
17198  } // Inst_VOP3__V_CMPX_F_F32
17199 
17201  {
17202  } // ~Inst_VOP3__V_CMPX_F_F32
17203 
17204  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
17205  void
17207  {
17208  Wavefront *wf = gpuDynInst->wavefront();
17209  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17210 
17211  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17212  if (wf->execMask(lane)) {
17213  sdst.setBit(lane, 0);
17214  }
17215  }
17216 
17217  wf->execMask() = sdst.rawData();
17218  sdst.write();
17219  }
17220 
17222  InFmt_VOP3 *iFmt)
17223  : Inst_VOP3(iFmt, "v_cmpx_lt_f32", true)
17224  {
17225  setFlag(ALU);
17226  setFlag(F32);
17227  } // Inst_VOP3__V_CMPX_LT_F32
17228 
17230  {
17231  } // ~Inst_VOP3__V_CMPX_LT_F32
17232 
17233  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
17234  void
17236  {
17237  Wavefront *wf = gpuDynInst->wavefront();
17238  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17239  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17240  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17241 
17242  src0.readSrc();
17243  src1.readSrc();
17244 
17245  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17246  if (wf->execMask(lane)) {
17247  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
17248  }
17249  }
17250 
17251  wf->execMask() = sdst.rawData();
17252  sdst.write();
17253  }
17254 
17256  InFmt_VOP3 *iFmt)
17257  : Inst_VOP3(iFmt, "v_cmpx_eq_f32", true)
17258  {
17259  setFlag(ALU);
17260  setFlag(F32);
17261  } // Inst_VOP3__V_CMPX_EQ_F32
17262 
17264  {
17265  } // ~Inst_VOP3__V_CMPX_EQ_F32
17266 
17267  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
17268  void
17270  {
17271  Wavefront *wf = gpuDynInst->wavefront();
17272  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17273  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17274  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17275 
17276  src0.readSrc();
17277  src1.readSrc();
17278 
17279  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17280  if (wf->execMask(lane)) {
17281  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
17282  }
17283  }
17284 
17285  wf->execMask() = sdst.rawData();
17286  sdst.write();
17287  }
17288 
17290  InFmt_VOP3 *iFmt)
17291  : Inst_VOP3(iFmt, "v_cmpx_le_f32", true)
17292  {
17293  setFlag(ALU);
17294  setFlag(F32);
17295  } // Inst_VOP3__V_CMPX_LE_F32
17296 
17298  {
17299  } // ~Inst_VOP3__V_CMPX_LE_F32
17300 
17301  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
17302  void
17304  {
17305  Wavefront *wf = gpuDynInst->wavefront();
17306  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17307  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17308  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17309 
17310  src0.readSrc();
17311  src1.readSrc();
17312 
17313  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17314  if (wf->execMask(lane)) {
17315  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
17316  }
17317  }
17318 
17319  wf->execMask() = sdst.rawData();
17320  sdst.write();
17321  }
17322 
17324  InFmt_VOP3 *iFmt)
17325  : Inst_VOP3(iFmt, "v_cmpx_gt_f32", true)
17326  {
17327  setFlag(ALU);
17328  setFlag(F32);
17329  } // Inst_VOP3__V_CMPX_GT_F32
17330 
17332  {
17333  } // ~Inst_VOP3__V_CMPX_GT_F32
17334 
17335  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
17336  void
17338  {
17339  Wavefront *wf = gpuDynInst->wavefront();
17340  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17341  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17342  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17343 
17344  src0.readSrc();
17345  src1.readSrc();
17346 
17347  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17348  if (wf->execMask(lane)) {
17349  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
17350  }
17351  }
17352 
17353  wf->execMask() = sdst.rawData();
17354  sdst.write();
17355  }
17356 
17358  InFmt_VOP3 *iFmt)
17359  : Inst_VOP3(iFmt, "v_cmpx_lg_f32", true)
17360  {
17361  setFlag(ALU);
17362  setFlag(F32);
17363  } // Inst_VOP3__V_CMPX_LG_F32
17364 
17366  {
17367  } // ~Inst_VOP3__V_CMPX_LG_F32
17368 
17369  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
17370  void
17372  {
17373  Wavefront *wf = gpuDynInst->wavefront();
17374  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17375  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17376  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17377 
17378  src0.readSrc();
17379  src1.readSrc();
17380 
17381  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17382  if (wf->execMask(lane)) {
17383  sdst.setBit(lane, (src0[lane] < src1[lane]
17384  || src0[lane] > src1[lane]) ? 1 : 0);
17385  }
17386  }
17387 
17388  wf->execMask() = sdst.rawData();
17389  sdst.write();
17390  }
17391 
17393  InFmt_VOP3 *iFmt)
17394  : Inst_VOP3(iFmt, "v_cmpx_ge_f32", true)
17395  {
17396  setFlag(ALU);
17397  setFlag(F32);
17398  } // Inst_VOP3__V_CMPX_GE_F32
17399 
17401  {
17402  } // ~Inst_VOP3__V_CMPX_GE_F32
17403 
17404  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
17405  void
17407  {
17408  Wavefront *wf = gpuDynInst->wavefront();
17409  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17410  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17411  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17412 
17413  src0.readSrc();
17414  src1.readSrc();
17415 
17416  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17417  if (wf->execMask(lane)) {
17418  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
17419  }
17420  }
17421 
17422  wf->execMask() = sdst.rawData();
17423  sdst.write();
17424  }
17425 
17427  InFmt_VOP3 *iFmt)
17428  : Inst_VOP3(iFmt, "v_cmpx_o_f32", true)
17429  {
17430  setFlag(ALU);
17431  setFlag(F32);
17432  } // Inst_VOP3__V_CMPX_O_F32
17433 
17435  {
17436  } // ~Inst_VOP3__V_CMPX_O_F32
17437 
17438  // EXEC,D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC
17439  // encoding.
17440  void
17442  {
17443  Wavefront *wf = gpuDynInst->wavefront();
17444  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17445  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17446  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17447 
17448  src0.readSrc();
17449  src1.readSrc();
17450 
17451  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17452  if (wf->execMask(lane)) {
17453  sdst.setBit(lane, (!std::isnan(src0[lane])
17454  && !std::isnan(src1[lane])) ? 1 : 0);
17455  }
17456  }
17457 
17458  wf->execMask() = sdst.rawData();
17459  sdst.write();
17460  }
17461 
17463  InFmt_VOP3 *iFmt)
17464  : Inst_VOP3(iFmt, "v_cmpx_u_f32", true)
17465  {
17466  setFlag(ALU);
17467  setFlag(F32);
17468  } // Inst_VOP3__V_CMPX_U_F32
17469 
17471  {
17472  } // ~Inst_VOP3__V_CMPX_U_F32
17473 
17474  // EXEC,D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC
17475  // encoding.
17476  void
17478  {
17479  Wavefront *wf = gpuDynInst->wavefront();
17480  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17481  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17482  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17483 
17484  src0.readSrc();
17485  src1.readSrc();
17486 
17487  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17488  if (wf->execMask(lane)) {
17489  sdst.setBit(lane, (std::isnan(src0[lane])
17490  || std::isnan(src1[lane])) ? 1 : 0);
17491  }
17492  }
17493 
17494  wf->execMask() = sdst.rawData();
17495  sdst.write();
17496  }
17497 
17499  InFmt_VOP3 *iFmt)
17500  : Inst_VOP3(iFmt, "v_cmpx_nge_f32", true)
17501  {
17502  setFlag(ALU);
17503  setFlag(F32);
17504  } // Inst_VOP3__V_CMPX_NGE_F32
17505 
17507  {
17508  } // ~Inst_VOP3__V_CMPX_NGE_F32
17509 
17510  // EXEC,D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
17511  void
17513  {
17514  Wavefront *wf = gpuDynInst->wavefront();
17515  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17516  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17517  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17518 
17519  src0.readSrc();
17520  src1.readSrc();
17521 
17522  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17523  if (wf->execMask(lane)) {
17524  sdst.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
17525  }
17526  }
17527 
17528  wf->execMask() = sdst.rawData();
17529  sdst.write();
17530  }
17531 
17533  InFmt_VOP3 *iFmt)
17534  : Inst_VOP3(iFmt, "v_cmpx_nlg_f32", true)
17535  {
17536  setFlag(ALU);
17537  setFlag(F32);
17538  } // Inst_VOP3__V_CMPX_NLG_F32
17539 
17541  {
17542  } // ~Inst_VOP3__V_CMPX_NLG_F32
17543 
17544  // EXEC,D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
17545  void
17547  {
17548  Wavefront *wf = gpuDynInst->wavefront();
17549  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17550  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17551  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17552 
17553  src0.readSrc();
17554  src1.readSrc();
17555 
17556  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17557  if (wf->execMask(lane)) {
17558  sdst.setBit(lane, !(src0[lane] < src1[lane]
17559  || src0[lane] > src1[lane]) ? 1 : 0);
17560  }
17561  }
17562 
17563  wf->execMask() = sdst.rawData();
17564  sdst.write();
17565  }
17566 
17568  InFmt_VOP3 *iFmt)
17569  : Inst_VOP3(iFmt, "v_cmpx_ngt_f32", true)
17570  {
17571  setFlag(ALU);
17572  setFlag(F32);
17573  } // Inst_VOP3__V_CMPX_NGT_F32
17574 
17576  {
17577  } // ~Inst_VOP3__V_CMPX_NGT_F32
17578 
17579  // EXEC,D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
17580  void
17582  {
17583  Wavefront *wf = gpuDynInst->wavefront();
17584  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17585  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17586  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17587 
17588  src0.readSrc();
17589  src1.readSrc();
17590 
17591  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17592  if (wf->execMask(lane)) {
17593  sdst.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
17594  }
17595  }
17596 
17597  wf->execMask() = sdst.rawData();
17598  sdst.write();
17599  }
17600 
17602  InFmt_VOP3 *iFmt)
17603  : Inst_VOP3(iFmt, "v_cmpx_nle_f32", true)
17604  {
17605  setFlag(ALU);
17606  setFlag(F32);
17607  } // Inst_VOP3__V_CMPX_NLE_F32
17608 
17610  {
17611  } // ~Inst_VOP3__V_CMPX_NLE_F32
17612 
17613  // EXEC,D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
17614  void
17616  {
17617  Wavefront *wf = gpuDynInst->wavefront();
17618  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17619  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17620  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17621 
17622  src0.readSrc();
17623  src1.readSrc();
17624 
17625  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17626  if (wf->execMask(lane)) {
17627  sdst.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
17628  }
17629  }
17630 
17631  wf->execMask() = sdst.rawData();
17632  sdst.write();
17633  }
17634 
17636  InFmt_VOP3 *iFmt)
17637  : Inst_VOP3(iFmt, "v_cmpx_neq_f32", true)
17638  {
17639  setFlag(ALU);
17640  setFlag(F32);
17641  } // Inst_VOP3__V_CMPX_NEQ_F32
17642 
17644  {
17645  } // ~Inst_VOP3__V_CMPX_NEQ_F32
17646 
17647  // EXEC,D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
17648  void
17650  {
17651  Wavefront *wf = gpuDynInst->wavefront();
17652  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17653  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17654  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17655 
17656  src0.readSrc();
17657  src1.readSrc();
17658 
17659  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17660  if (wf->execMask(lane)) {
17661  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
17662  }
17663  }
17664 
17665  wf->execMask() = sdst.rawData();
17666  sdst.write();
17667  }
17668 
17670  InFmt_VOP3 *iFmt)
17671  : Inst_VOP3(iFmt, "v_cmpx_nlt_f32", true)
17672  {
17673  setFlag(ALU);
17674  setFlag(F32);
17675  } // Inst_VOP3__V_CMPX_NLT_F32
17676 
17678  {
17679  } // ~Inst_VOP3__V_CMPX_NLT_F32
17680 
17681  // EXEC,D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
17682  void
17684  {
17685  Wavefront *wf = gpuDynInst->wavefront();
17686  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
17687  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
17688  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17689 
17690  src0.readSrc();
17691  src1.readSrc();
17692 
17693  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17694  if (wf->execMask(lane)) {
17695  sdst.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
17696  }
17697  }
17698 
17699  wf->execMask() = sdst.rawData();
17700  sdst.write();
17701  }
17702 
17704  InFmt_VOP3 *iFmt)
17705  : Inst_VOP3(iFmt, "v_cmpx_tru_f32", true)
17706  {
17707  setFlag(ALU);
17708  setFlag(F32);
17709  } // Inst_VOP3__V_CMPX_TRU_F32
17710 
17712  {
17713  } // ~Inst_VOP3__V_CMPX_TRU_F32
17714 
17715  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
17716  void
17718  {
17719  Wavefront *wf = gpuDynInst->wavefront();
17720  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17721 
17722  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17723  if (wf->execMask(lane)) {
17724  sdst.setBit(lane, 1);
17725  }
17726  }
17727 
17728  wf->execMask() = sdst.rawData();
17729  sdst.write();
17730  }
17731 
17733  : Inst_VOP3(iFmt, "v_cmp_f_f64", true)
17734  {
17735  setFlag(ALU);
17736  setFlag(F64);
17737  } // Inst_VOP3__V_CMP_F_F64
17738 
17740  {
17741  } // ~Inst_VOP3__V_CMP_F_F64
17742 
17743  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
17744  void
17746  {
17747  Wavefront *wf = gpuDynInst->wavefront();
17748  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17749 
17750  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17751  if (wf->execMask(lane)) {
17752  sdst.setBit(lane, 0);
17753  }
17754  }
17755 
17756  sdst.write();
17757  }
17758 
17760  InFmt_VOP3 *iFmt)
17761  : Inst_VOP3(iFmt, "v_cmp_lt_f64", true)
17762  {
17763  setFlag(ALU);
17764  setFlag(F64);
17765  } // Inst_VOP3__V_CMP_LT_F64
17766 
17768  {
17769  } // ~Inst_VOP3__V_CMP_LT_F64
17770 
17771  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
17772  void
17774  {
17775  Wavefront *wf = gpuDynInst->wavefront();
17776  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
17777  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
17778  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17779 
17780  src0.readSrc();
17781  src1.readSrc();
17782 
17783  if (instData.ABS & 0x1) {
17784  src0.absModifier();
17785  }
17786 
17787  if (instData.ABS & 0x2) {
17788  src1.absModifier();
17789  }
17790 
17791  if (extData.NEG & 0x1) {
17792  src0.negModifier();
17793  }
17794 
17795  if (extData.NEG & 0x2) {
17796  src1.negModifier();
17797  }
17798 
17802  assert(!(instData.ABS & 0x4));
17803  assert(!(extData.NEG & 0x4));
17804 
17805  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17806  if (wf->execMask(lane)) {
17807  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
17808  }
17809  }
17810 
17811  sdst.write();
17812  }
17813 
17815  InFmt_VOP3 *iFmt)
17816  : Inst_VOP3(iFmt, "v_cmp_eq_f64", true)
17817  {
17818  setFlag(ALU);
17819  setFlag(F64);
17820  } // Inst_VOP3__V_CMP_EQ_F64
17821 
17823  {
17824  } // ~Inst_VOP3__V_CMP_EQ_F64
17825 
17826  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
17827  void
17829  {
17830  Wavefront *wf = gpuDynInst->wavefront();
17831  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
17832  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
17833  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17834 
17835  src0.readSrc();
17836  src1.readSrc();
17837 
17838  if (instData.ABS & 0x1) {
17839  src0.absModifier();
17840  }
17841 
17842  if (instData.ABS & 0x2) {
17843  src1.absModifier();
17844  }
17845 
17846  if (extData.NEG & 0x1) {
17847  src0.negModifier();
17848  }
17849 
17850  if (extData.NEG & 0x2) {
17851  src1.negModifier();
17852  }
17853 
17857  assert(!(instData.ABS & 0x4));
17858  assert(!(extData.NEG & 0x4));
17859 
17860  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17861  if (wf->execMask(lane)) {
17862  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
17863  }
17864  }
17865 
17866  sdst.write();
17867  }
17868 
17870  InFmt_VOP3 *iFmt)
17871  : Inst_VOP3(iFmt, "v_cmp_le_f64", true)
17872  {
17873  setFlag(ALU);
17874  setFlag(F64);
17875  } // Inst_VOP3__V_CMP_LE_F64
17876 
17878  {
17879  } // ~Inst_VOP3__V_CMP_LE_F64
17880 
17881  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
17882  void
17884  {
17885  Wavefront *wf = gpuDynInst->wavefront();
17886  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
17887  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
17888  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17889 
17890  src0.readSrc();
17891  src1.readSrc();
17892 
17893  if (instData.ABS & 0x1) {
17894  src0.absModifier();
17895  }
17896 
17897  if (instData.ABS & 0x2) {
17898  src1.absModifier();
17899  }
17900 
17901  if (extData.NEG & 0x1) {
17902  src0.negModifier();
17903  }
17904 
17905  if (extData.NEG & 0x2) {
17906  src1.negModifier();
17907  }
17908 
17912  assert(!(instData.ABS & 0x4));
17913  assert(!(extData.NEG & 0x4));
17914 
17915  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17916  if (wf->execMask(lane)) {
17917  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
17918  }
17919  }
17920 
17921  sdst.write();
17922  }
17923 
17925  InFmt_VOP3 *iFmt)
17926  : Inst_VOP3(iFmt, "v_cmp_gt_f64", true)
17927  {
17928  setFlag(ALU);
17929  setFlag(F64);
17930  } // Inst_VOP3__V_CMP_GT_F64
17931 
17933  {
17934  } // ~Inst_VOP3__V_CMP_GT_F64
17935 
17936  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
17937  void
17939  {
17940  Wavefront *wf = gpuDynInst->wavefront();
17941  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
17942  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
17943  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17944 
17945  src0.readSrc();
17946  src1.readSrc();
17947 
17948  if (instData.ABS & 0x1) {
17949  src0.absModifier();
17950  }
17951 
17952  if (instData.ABS & 0x2) {
17953  src1.absModifier();
17954  }
17955 
17956  if (extData.NEG & 0x1) {
17957  src0.negModifier();
17958  }
17959 
17960  if (extData.NEG & 0x2) {
17961  src1.negModifier();
17962  }
17963 
17967  assert(!(instData.ABS & 0x4));
17968  assert(!(extData.NEG & 0x4));
17969 
17970  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
17971  if (wf->execMask(lane)) {
17972  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
17973  }
17974  }
17975 
17976  sdst.write();
17977  }
17978 
17980  InFmt_VOP3 *iFmt)
17981  : Inst_VOP3(iFmt, "v_cmp_lg_f64", true)
17982  {
17983  setFlag(ALU);
17984  setFlag(F64);
17985  } // Inst_VOP3__V_CMP_LG_F64
17986 
17988  {
17989  } // ~Inst_VOP3__V_CMP_LG_F64
17990 
17991  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
17992  void
17994  {
17995  Wavefront *wf = gpuDynInst->wavefront();
17996  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
17997  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
17998  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
17999 
18000  src0.readSrc();
18001  src1.readSrc();
18002 
18003  if (instData.ABS & 0x1) {
18004  src0.absModifier();
18005  }
18006 
18007  if (instData.ABS & 0x2) {
18008  src1.absModifier();
18009  }
18010 
18011  if (extData.NEG & 0x1) {
18012  src0.negModifier();
18013  }
18014 
18015  if (extData.NEG & 0x2) {
18016  src1.negModifier();
18017  }
18018 
18022  assert(!(instData.ABS & 0x4));
18023  assert(!(extData.NEG & 0x4));
18024 
18025  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18026  if (wf->execMask(lane)) {
18027  sdst.setBit(lane, (src0[lane] < src1[lane]
18028  || src0[lane] > src1[lane]) ? 1 : 0);
18029  }
18030  }
18031 
18032  sdst.write();
18033  }
18034 
18036  InFmt_VOP3 *iFmt)
18037  : Inst_VOP3(iFmt, "v_cmp_ge_f64", true)
18038  {
18039  setFlag(ALU);
18040  setFlag(F64);
18041  } // Inst_VOP3__V_CMP_GE_F64
18042 
18044  {
18045  } // ~Inst_VOP3__V_CMP_GE_F64
18046 
18047  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
18048  void
18050  {
18051  Wavefront *wf = gpuDynInst->wavefront();
18052  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18053  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18054  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18055 
18056  src0.readSrc();
18057  src1.readSrc();
18058 
18059  if (instData.ABS & 0x1) {
18060  src0.absModifier();
18061  }
18062 
18063  if (instData.ABS & 0x2) {
18064  src1.absModifier();
18065  }
18066 
18067  if (extData.NEG & 0x1) {
18068  src0.negModifier();
18069  }
18070 
18071  if (extData.NEG & 0x2) {
18072  src1.negModifier();
18073  }
18074 
18078  assert(!(instData.ABS & 0x4));
18079  assert(!(extData.NEG & 0x4));
18080 
18081  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18082  if (wf->execMask(lane)) {
18083  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
18084  }
18085  }
18086 
18087  sdst.write();
18088  }
18089 
18091  : Inst_VOP3(iFmt, "v_cmp_o_f64", true)
18092  {
18093  setFlag(ALU);
18094  setFlag(F64);
18095  } // Inst_VOP3__V_CMP_O_F64
18096 
18098  {
18099  } // ~Inst_VOP3__V_CMP_O_F64
18100 
18101  // D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC encoding.
18102  void
18104  {
18105  Wavefront *wf = gpuDynInst->wavefront();
18106  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18107  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18108  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18109 
18110  src0.readSrc();
18111  src1.readSrc();
18112 
18113  if (instData.ABS & 0x1) {
18114  src0.absModifier();
18115  }
18116 
18117  if (instData.ABS & 0x2) {
18118  src1.absModifier();
18119  }
18120 
18121  if (extData.NEG & 0x1) {
18122  src0.negModifier();
18123  }
18124 
18125  if (extData.NEG & 0x2) {
18126  src1.negModifier();
18127  }
18128 
18132  assert(!(instData.ABS & 0x4));
18133  assert(!(extData.NEG & 0x4));
18134 
18135  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18136  if (wf->execMask(lane)) {
18137  sdst.setBit(lane, (!std::isnan(src0[lane])
18138  && !std::isnan(src1[lane])) ? 1 : 0);
18139  }
18140  }
18141 
18142  sdst.write();
18143  }
18144 
18146  : Inst_VOP3(iFmt, "v_cmp_u_f64", true)
18147  {
18148  setFlag(ALU);
18149  setFlag(F64);
18150  } // Inst_VOP3__V_CMP_U_F64
18151 
18153  {
18154  } // ~Inst_VOP3__V_CMP_U_F64
18155 
18156  // D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC encoding.
18157  void
18159  {
18160  Wavefront *wf = gpuDynInst->wavefront();
18161  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18162  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18163  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18164 
18165  src0.readSrc();
18166  src1.readSrc();
18167 
18168  if (instData.ABS & 0x1) {
18169  src0.absModifier();
18170  }
18171 
18172  if (instData.ABS & 0x2) {
18173  src1.absModifier();
18174  }
18175 
18176  if (extData.NEG & 0x1) {
18177  src0.negModifier();
18178  }
18179 
18180  if (extData.NEG & 0x2) {
18181  src1.negModifier();
18182  }
18183 
18187  assert(!(instData.ABS & 0x4));
18188  assert(!(extData.NEG & 0x4));
18189 
18190  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18191  if (wf->execMask(lane)) {
18192  sdst.setBit(lane, (std::isnan(src0[lane])
18193  || std::isnan(src1[lane])) ? 1 : 0);
18194  }
18195  }
18196 
18197  sdst.write();
18198  }
18199 
18201  InFmt_VOP3 *iFmt)
18202  : Inst_VOP3(iFmt, "v_cmp_nge_f64", true)
18203  {
18204  setFlag(ALU);
18205  setFlag(F64);
18206  } // Inst_VOP3__V_CMP_NGE_F64
18207 
18209  {
18210  } // ~Inst_VOP3__V_CMP_NGE_F64
18211 
18212  // D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
18213  void
18215  {
18216  Wavefront *wf = gpuDynInst->wavefront();
18217  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18218  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18219  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18220 
18221  src0.readSrc();
18222  src1.readSrc();
18223 
18224  if (instData.ABS & 0x1) {
18225  src0.absModifier();
18226  }
18227 
18228  if (instData.ABS & 0x2) {
18229  src1.absModifier();
18230  }
18231 
18232  if (extData.NEG & 0x1) {
18233  src0.negModifier();
18234  }
18235 
18236  if (extData.NEG & 0x2) {
18237  src1.negModifier();
18238  }
18239 
18243  assert(!(instData.ABS & 0x4));
18244  assert(!(extData.NEG & 0x4));
18245 
18246  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18247  if (wf->execMask(lane)) {
18248  sdst.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
18249  }
18250  }
18251 
18252  sdst.write();
18253  }
18254 
18256  InFmt_VOP3 *iFmt)
18257  : Inst_VOP3(iFmt, "v_cmp_nlg_f64", true)
18258  {
18259  setFlag(ALU);
18260  setFlag(F64);
18261  } // Inst_VOP3__V_CMP_NLG_F64
18262 
18264  {
18265  } // ~Inst_VOP3__V_CMP_NLG_F64
18266 
18267  // D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
18268  void
18270  {
18271  Wavefront *wf = gpuDynInst->wavefront();
18272  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18273  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18274  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18275 
18276  src0.readSrc();
18277  src1.readSrc();
18278 
18279  if (instData.ABS & 0x1) {
18280  src0.absModifier();
18281  }
18282 
18283  if (instData.ABS & 0x2) {
18284  src1.absModifier();
18285  }
18286 
18287  if (extData.NEG & 0x1) {
18288  src0.negModifier();
18289  }
18290 
18291  if (extData.NEG & 0x2) {
18292  src1.negModifier();
18293  }
18294 
18298  assert(!(instData.ABS & 0x4));
18299  assert(!(extData.NEG & 0x4));
18300 
18301  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18302  if (wf->execMask(lane)) {
18303  sdst.setBit(lane, !(src0[lane] < src1[lane]
18304  || src0[lane] > src1[lane]) ? 1 : 0);
18305  }
18306  }
18307 
18308  sdst.write();
18309  }
18310 
18312  InFmt_VOP3 *iFmt)
18313  : Inst_VOP3(iFmt, "v_cmp_ngt_f64", true)
18314  {
18315  setFlag(ALU);
18316  setFlag(F64);
18317  } // Inst_VOP3__V_CMP_NGT_F64
18318 
18320  {
18321  } // ~Inst_VOP3__V_CMP_NGT_F64
18322 
18323  // D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
18324  void
18326  {
18327  Wavefront *wf = gpuDynInst->wavefront();
18328  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18329  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18330  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18331 
18332  src0.readSrc();
18333  src1.readSrc();
18334 
18335  if (instData.ABS & 0x1) {
18336  src0.absModifier();
18337  }
18338 
18339  if (instData.ABS & 0x2) {
18340  src1.absModifier();
18341  }
18342 
18343  if (extData.NEG & 0x1) {
18344  src0.negModifier();
18345  }
18346 
18347  if (extData.NEG & 0x2) {
18348  src1.negModifier();
18349  }
18350 
18354  assert(!(instData.ABS & 0x4));
18355  assert(!(extData.NEG & 0x4));
18356 
18357  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18358  if (wf->execMask(lane)) {
18359  sdst.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
18360  }
18361  }
18362 
18363  sdst.write();
18364  }
18365 
18367  InFmt_VOP3 *iFmt)
18368  : Inst_VOP3(iFmt, "v_cmp_nle_f64", true)
18369  {
18370  setFlag(ALU);
18371  setFlag(F64);
18372  } // Inst_VOP3__V_CMP_NLE_F64
18373 
18375  {
18376  } // ~Inst_VOP3__V_CMP_NLE_F64
18377 
18378  // D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
18379  void
18381  {
18382  Wavefront *wf = gpuDynInst->wavefront();
18383  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18384  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18385  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18386 
18387  src0.readSrc();
18388  src1.readSrc();
18389 
18390  if (instData.ABS & 0x1) {
18391  src0.absModifier();
18392  }
18393 
18394  if (instData.ABS & 0x2) {
18395  src1.absModifier();
18396  }
18397 
18398  if (extData.NEG & 0x1) {
18399  src0.negModifier();
18400  }
18401 
18402  if (extData.NEG & 0x2) {
18403  src1.negModifier();
18404  }
18405 
18409  assert(!(instData.ABS & 0x4));
18410  assert(!(extData.NEG & 0x4));
18411 
18412  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18413  if (wf->execMask(lane)) {
18414  sdst.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
18415  }
18416  }
18417 
18418  sdst.write();
18419  }
18420 
18422  InFmt_VOP3 *iFmt)
18423  : Inst_VOP3(iFmt, "v_cmp_neq_f64", true)
18424  {
18425  setFlag(ALU);
18426  setFlag(F64);
18427  } // Inst_VOP3__V_CMP_NEQ_F64
18428 
18430  {
18431  } // ~Inst_VOP3__V_CMP_NEQ_F64
18432 
18433  // D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
18434  void
18436  {
18437  Wavefront *wf = gpuDynInst->wavefront();
18438  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18439  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18440  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18441 
18442  src0.readSrc();
18443  src1.readSrc();
18444 
18445  if (instData.ABS & 0x1) {
18446  src0.absModifier();
18447  }
18448 
18449  if (instData.ABS & 0x2) {
18450  src1.absModifier();
18451  }
18452 
18453  if (extData.NEG & 0x1) {
18454  src0.negModifier();
18455  }
18456 
18457  if (extData.NEG & 0x2) {
18458  src1.negModifier();
18459  }
18460 
18464  assert(!(instData.ABS & 0x4));
18465  assert(!(extData.NEG & 0x4));
18466 
18467  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18468  if (wf->execMask(lane)) {
18469  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
18470  }
18471  }
18472 
18473  sdst.write();
18474  }
18475 
18477  InFmt_VOP3 *iFmt)
18478  : Inst_VOP3(iFmt, "v_cmp_nlt_f64", true)
18479  {
18480  setFlag(ALU);
18481  setFlag(F64);
18482  } // Inst_VOP3__V_CMP_NLT_F64
18483 
18485  {
18486  } // ~Inst_VOP3__V_CMP_NLT_F64
18487 
18488  // D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
18489  void
18491  {
18492  Wavefront *wf = gpuDynInst->wavefront();
18493  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18494  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18495  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18496 
18497  src0.readSrc();
18498  src1.readSrc();
18499 
18500  if (instData.ABS & 0x1) {
18501  src0.absModifier();
18502  }
18503 
18504  if (instData.ABS & 0x2) {
18505  src1.absModifier();
18506  }
18507 
18508  if (extData.NEG & 0x1) {
18509  src0.negModifier();
18510  }
18511 
18512  if (extData.NEG & 0x2) {
18513  src1.negModifier();
18514  }
18515 
18519  assert(!(instData.ABS & 0x4));
18520  assert(!(extData.NEG & 0x4));
18521 
18522  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18523  if (wf->execMask(lane)) {
18524  sdst.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
18525  }
18526  }
18527 
18528  sdst.write();
18529  }
18530 
18532  InFmt_VOP3 *iFmt)
18533  : Inst_VOP3(iFmt, "v_cmp_tru_f64", true)
18534  {
18535  setFlag(ALU);
18536  setFlag(F64);
18537  } // Inst_VOP3__V_CMP_TRU_F64
18538 
18540  {
18541  } // ~Inst_VOP3__V_CMP_TRU_F64
18542 
18543  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
18544  void
18546  {
18547  Wavefront *wf = gpuDynInst->wavefront();
18548  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18549 
18550  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18551  if (wf->execMask(lane)) {
18552  sdst.setBit(lane, 1);
18553  }
18554  }
18555 
18556  sdst.write();
18557  }
18558 
18560  InFmt_VOP3 *iFmt)
18561  : Inst_VOP3(iFmt, "v_cmpx_f_f64", true)
18562  {
18563  setFlag(ALU);
18564  setFlag(F64);
18565  } // Inst_VOP3__V_CMPX_F_F64
18566 
18568  {
18569  } // ~Inst_VOP3__V_CMPX_F_F64
18570 
18571  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
18572  void
18574  {
18575  Wavefront *wf = gpuDynInst->wavefront();
18576  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18577 
18578  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18579  if (wf->execMask(lane)) {
18580  sdst.setBit(lane, 0);
18581  }
18582  }
18583 
18584  wf->execMask() = sdst.rawData();
18585  sdst.write();
18586  }
18587 
18589  InFmt_VOP3 *iFmt)
18590  : Inst_VOP3(iFmt, "v_cmpx_lt_f64", true)
18591  {
18592  setFlag(ALU);
18593  setFlag(F64);
18594  } // Inst_VOP3__V_CMPX_LT_F64
18595 
18597  {
18598  } // ~Inst_VOP3__V_CMPX_LT_F64
18599 
18600  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
18601  void
18603  {
18604  Wavefront *wf = gpuDynInst->wavefront();
18605  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18606  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18607  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18608 
18609  src0.readSrc();
18610  src1.readSrc();
18611 
18612  if (instData.ABS & 0x1) {
18613  src0.absModifier();
18614  }
18615 
18616  if (instData.ABS & 0x2) {
18617  src1.absModifier();
18618  }
18619 
18620  if (extData.NEG & 0x1) {
18621  src0.negModifier();
18622  }
18623 
18624  if (extData.NEG & 0x2) {
18625  src1.negModifier();
18626  }
18627 
18631  assert(!(instData.ABS & 0x4));
18632  assert(!(extData.NEG & 0x4));
18633 
18634  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18635  if (wf->execMask(lane)) {
18636  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
18637  }
18638  }
18639 
18640  wf->execMask() = sdst.rawData();
18641  sdst.write();
18642  }
18643 
18645  InFmt_VOP3 *iFmt)
18646  : Inst_VOP3(iFmt, "v_cmpx_eq_f64", true)
18647  {
18648  setFlag(ALU);
18649  setFlag(F64);
18650  } // Inst_VOP3__V_CMPX_EQ_F64
18651 
18653  {
18654  } // ~Inst_VOP3__V_CMPX_EQ_F64
18655 
18656  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
18657  void
18659  {
18660  Wavefront *wf = gpuDynInst->wavefront();
18661  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18662  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18663  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18664 
18665  src0.readSrc();
18666  src1.readSrc();
18667 
18668  if (instData.ABS & 0x1) {
18669  src0.absModifier();
18670  }
18671 
18672  if (instData.ABS & 0x2) {
18673  src1.absModifier();
18674  }
18675 
18676  if (extData.NEG & 0x1) {
18677  src0.negModifier();
18678  }
18679 
18680  if (extData.NEG & 0x2) {
18681  src1.negModifier();
18682  }
18683 
18687  assert(!(instData.ABS & 0x4));
18688  assert(!(extData.NEG & 0x4));
18689 
18690  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18691  if (wf->execMask(lane)) {
18692  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
18693  }
18694  }
18695 
18696  wf->execMask() = sdst.rawData();
18697  sdst.write();
18698  }
18699 
18701  InFmt_VOP3 *iFmt)
18702  : Inst_VOP3(iFmt, "v_cmpx_le_f64", true)
18703  {
18704  setFlag(ALU);
18705  setFlag(F64);
18706  } // Inst_VOP3__V_CMPX_LE_F64
18707 
18709  {
18710  } // ~Inst_VOP3__V_CMPX_LE_F64
18711 
18712  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
18713  void
18715  {
18716  Wavefront *wf = gpuDynInst->wavefront();
18717  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18718  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18719  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18720 
18721  src0.readSrc();
18722  src1.readSrc();
18723 
18724  if (instData.ABS & 0x1) {
18725  src0.absModifier();
18726  }
18727 
18728  if (instData.ABS & 0x2) {
18729  src1.absModifier();
18730  }
18731 
18732  if (extData.NEG & 0x1) {
18733  src0.negModifier();
18734  }
18735 
18736  if (extData.NEG & 0x2) {
18737  src1.negModifier();
18738  }
18739 
18743  assert(!(instData.ABS & 0x4));
18744  assert(!(extData.NEG & 0x4));
18745 
18746  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18747  if (wf->execMask(lane)) {
18748  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
18749  }
18750  }
18751 
18752  wf->execMask() = sdst.rawData();
18753  sdst.write();
18754  }
18755 
18757  InFmt_VOP3 *iFmt)
18758  : Inst_VOP3(iFmt, "v_cmpx_gt_f64", true)
18759  {
18760  setFlag(ALU);
18761  setFlag(F64);
18762  } // Inst_VOP3__V_CMPX_GT_F64
18763 
18765  {
18766  } // ~Inst_VOP3__V_CMPX_GT_F64
18767 
18768  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
18769  void
18771  {
18772  Wavefront *wf = gpuDynInst->wavefront();
18773  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18774  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18775  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18776 
18777  src0.readSrc();
18778  src1.readSrc();
18779 
18780  if (instData.ABS & 0x1) {
18781  src0.absModifier();
18782  }
18783 
18784  if (instData.ABS & 0x2) {
18785  src1.absModifier();
18786  }
18787 
18788  if (extData.NEG & 0x1) {
18789  src0.negModifier();
18790  }
18791 
18792  if (extData.NEG & 0x2) {
18793  src1.negModifier();
18794  }
18795 
18799  assert(!(instData.ABS & 0x4));
18800  assert(!(extData.NEG & 0x4));
18801 
18802  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18803  if (wf->execMask(lane)) {
18804  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
18805  }
18806  }
18807 
18808  wf->execMask() = sdst.rawData();
18809  sdst.write();
18810  }
18811 
18813  InFmt_VOP3 *iFmt)
18814  : Inst_VOP3(iFmt, "v_cmpx_lg_f64", true)
18815  {
18816  setFlag(ALU);
18817  setFlag(F64);
18818  } // Inst_VOP3__V_CMPX_LG_F64
18819 
18821  {
18822  } // ~Inst_VOP3__V_CMPX_LG_F64
18823 
18824  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
18825  void
18827  {
18828  Wavefront *wf = gpuDynInst->wavefront();
18829  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18830  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18831  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18832 
18833  src0.readSrc();
18834  src1.readSrc();
18835 
18836  if (instData.ABS & 0x1) {
18837  src0.absModifier();
18838  }
18839 
18840  if (instData.ABS & 0x2) {
18841  src1.absModifier();
18842  }
18843 
18844  if (extData.NEG & 0x1) {
18845  src0.negModifier();
18846  }
18847 
18848  if (extData.NEG & 0x2) {
18849  src1.negModifier();
18850  }
18851 
18855  assert(!(instData.ABS & 0x4));
18856  assert(!(extData.NEG & 0x4));
18857 
18858  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18859  if (wf->execMask(lane)) {
18860  sdst.setBit(lane, (src0[lane] < src1[lane]
18861  || src0[lane] > src1[lane]) ? 1 : 0);
18862  }
18863  }
18864 
18865  wf->execMask() = sdst.rawData();
18866  sdst.write();
18867  }
18868 
18870  InFmt_VOP3 *iFmt)
18871  : Inst_VOP3(iFmt, "v_cmpx_ge_f64", true)
18872  {
18873  setFlag(ALU);
18874  setFlag(F64);
18875  } // Inst_VOP3__V_CMPX_GE_F64
18876 
18878  {
18879  } // ~Inst_VOP3__V_CMPX_GE_F64
18880 
18881  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
18882  void
18884  {
18885  Wavefront *wf = gpuDynInst->wavefront();
18886  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18887  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18888  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18889 
18890  src0.readSrc();
18891  src1.readSrc();
18892 
18893  if (instData.ABS & 0x1) {
18894  src0.absModifier();
18895  }
18896 
18897  if (instData.ABS & 0x2) {
18898  src1.absModifier();
18899  }
18900 
18901  if (extData.NEG & 0x1) {
18902  src0.negModifier();
18903  }
18904 
18905  if (extData.NEG & 0x2) {
18906  src1.negModifier();
18907  }
18908 
18912  assert(!(instData.ABS & 0x4));
18913  assert(!(extData.NEG & 0x4));
18914 
18915  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18916  if (wf->execMask(lane)) {
18917  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
18918  }
18919  }
18920 
18921  wf->execMask() = sdst.rawData();
18922  sdst.write();
18923  }
18924 
18926  InFmt_VOP3 *iFmt)
18927  : Inst_VOP3(iFmt, "v_cmpx_o_f64", true)
18928  {
18929  setFlag(ALU);
18930  setFlag(F64);
18931  } // Inst_VOP3__V_CMPX_O_F64
18932 
18934  {
18935  } // ~Inst_VOP3__V_CMPX_O_F64
18936 
18937  // EXEC,D.u64[threadID] = (!isNan(S0) && !isNan(S1)); D = VCC in VOPC
18938  // encoding.
18939  void
18941  {
18942  Wavefront *wf = gpuDynInst->wavefront();
18943  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
18944  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
18945  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
18946 
18947  src0.readSrc();
18948  src1.readSrc();
18949 
18950  if (instData.ABS & 0x1) {
18951  src0.absModifier();
18952  }
18953 
18954  if (instData.ABS & 0x2) {
18955  src1.absModifier();
18956  }
18957 
18958  if (extData.NEG & 0x1) {
18959  src0.negModifier();
18960  }
18961 
18962  if (extData.NEG & 0x2) {
18963  src1.negModifier();
18964  }
18965 
18969  assert(!(instData.ABS & 0x4));
18970  assert(!(extData.NEG & 0x4));
18971 
18972  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
18973  if (wf->execMask(lane)) {
18974  sdst.setBit(lane, (!std::isnan(src0[lane])
18975  && !std::isnan(src1[lane])) ? 1 : 0);
18976  }
18977  }
18978 
18979  wf->execMask() = sdst.rawData();
18980  sdst.write();
18981  }
18982 
18984  InFmt_VOP3 *iFmt)
18985  : Inst_VOP3(iFmt, "v_cmpx_u_f64", true)
18986  {
18987  setFlag(ALU);
18988  setFlag(F64);
18989  } // Inst_VOP3__V_CMPX_U_F64
18990 
18992  {
18993  } // ~Inst_VOP3__V_CMPX_U_F64
18994 
18995  // EXEC,D.u64[threadID] = (isNan(S0) || isNan(S1)); D = VCC in VOPC
18996  // encoding.
18997  void
18999  {
19000  Wavefront *wf = gpuDynInst->wavefront();
19001  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19002  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19003  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19004 
19005  src0.readSrc();
19006  src1.readSrc();
19007 
19008  if (instData.ABS & 0x1) {
19009  src0.absModifier();
19010  }
19011 
19012  if (instData.ABS & 0x2) {
19013  src1.absModifier();
19014  }
19015 
19016  if (extData.NEG & 0x1) {
19017  src0.negModifier();
19018  }
19019 
19020  if (extData.NEG & 0x2) {
19021  src1.negModifier();
19022  }
19023 
19027  assert(!(instData.ABS & 0x4));
19028  assert(!(extData.NEG & 0x4));
19029 
19030  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19031  if (wf->execMask(lane)) {
19032  sdst.setBit(lane, (std::isnan(src0[lane])
19033  || std::isnan(src1[lane])) ? 1 : 0);
19034  }
19035  }
19036 
19037  wf->execMask() = sdst.rawData();
19038  sdst.write();
19039  }
19040 
19042  InFmt_VOP3 *iFmt)
19043  : Inst_VOP3(iFmt, "v_cmpx_nge_f64", true)
19044  {
19045  setFlag(ALU);
19046  setFlag(F64);
19047  } // Inst_VOP3__V_CMPX_NGE_F64
19048 
19050  {
19051  } // ~Inst_VOP3__V_CMPX_NGE_F64
19052 
19053  // EXEC,D.u64[threadID] = !(S0 >= S1); D = VCC in VOPC encoding.
19054  void
19056  {
19057  Wavefront *wf = gpuDynInst->wavefront();
19058  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19059  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19060  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19061 
19062  src0.readSrc();
19063  src1.readSrc();
19064 
19065  if (instData.ABS & 0x1) {
19066  src0.absModifier();
19067  }
19068 
19069  if (instData.ABS & 0x2) {
19070  src1.absModifier();
19071  }
19072 
19073  if (extData.NEG & 0x1) {
19074  src0.negModifier();
19075  }
19076 
19077  if (extData.NEG & 0x2) {
19078  src1.negModifier();
19079  }
19080 
19084  assert(!(instData.ABS & 0x4));
19085  assert(!(extData.NEG & 0x4));
19086 
19087  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19088  if (wf->execMask(lane)) {
19089  sdst.setBit(lane, !(src0[lane] >= src1[lane]) ? 1 : 0);
19090  }
19091  }
19092 
19093  wf->execMask() = sdst.rawData();
19094  sdst.write();
19095  }
19096 
19098  InFmt_VOP3 *iFmt)
19099  : Inst_VOP3(iFmt, "v_cmpx_nlg_f64", true)
19100  {
19101  setFlag(ALU);
19102  setFlag(F64);
19103  } // Inst_VOP3__V_CMPX_NLG_F64
19104 
19106  {
19107  } // ~Inst_VOP3__V_CMPX_NLG_F64
19108 
19109  // EXEC,D.u64[threadID] = !(S0 <> S1); D = VCC in VOPC encoding.
19110  void
19112  {
19113  Wavefront *wf = gpuDynInst->wavefront();
19114  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19115  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19116  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19117 
19118  src0.readSrc();
19119  src1.readSrc();
19120 
19121  if (instData.ABS & 0x1) {
19122  src0.absModifier();
19123  }
19124 
19125  if (instData.ABS & 0x2) {
19126  src1.absModifier();
19127  }
19128 
19129  if (extData.NEG & 0x1) {
19130  src0.negModifier();
19131  }
19132 
19133  if (extData.NEG & 0x2) {
19134  src1.negModifier();
19135  }
19136 
19140  assert(!(instData.ABS & 0x4));
19141  assert(!(extData.NEG & 0x4));
19142 
19143  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19144  if (wf->execMask(lane)) {
19145  sdst.setBit(lane, !(src0[lane] < src1[lane]
19146  || src0[lane] > src1[lane]) ? 1 : 0);
19147  }
19148  }
19149 
19150  wf->execMask() = sdst.rawData();
19151  sdst.write();
19152  }
19153 
19155  InFmt_VOP3 *iFmt)
19156  : Inst_VOP3(iFmt, "v_cmpx_ngt_f64", true)
19157  {
19158  setFlag(ALU);
19159  setFlag(F64);
19160  } // Inst_VOP3__V_CMPX_NGT_F64
19161 
19163  {
19164  } // ~Inst_VOP3__V_CMPX_NGT_F64
19165 
19166  // EXEC,D.u64[threadID] = !(S0 > S1); D = VCC in VOPC encoding.
19167  void
19169  {
19170  Wavefront *wf = gpuDynInst->wavefront();
19171  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19172  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19173  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19174 
19175  src0.readSrc();
19176  src1.readSrc();
19177 
19178  if (instData.ABS & 0x1) {
19179  src0.absModifier();
19180  }
19181 
19182  if (instData.ABS & 0x2) {
19183  src1.absModifier();
19184  }
19185 
19186  if (extData.NEG & 0x1) {
19187  src0.negModifier();
19188  }
19189 
19190  if (extData.NEG & 0x2) {
19191  src1.negModifier();
19192  }
19193 
19197  assert(!(instData.ABS & 0x4));
19198  assert(!(extData.NEG & 0x4));
19199 
19200  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19201  if (wf->execMask(lane)) {
19202  sdst.setBit(lane, !(src0[lane] > src1[lane]) ? 1 : 0);
19203  }
19204  }
19205 
19206  wf->execMask() = sdst.rawData();
19207  sdst.write();
19208  }
19209 
19211  InFmt_VOP3 *iFmt)
19212  : Inst_VOP3(iFmt, "v_cmpx_nle_f64", true)
19213  {
19214  setFlag(ALU);
19215  setFlag(F64);
19216  } // Inst_VOP3__V_CMPX_NLE_F64
19217 
19219  {
19220  } // ~Inst_VOP3__V_CMPX_NLE_F64
19221 
19222  // EXEC,D.u64[threadID] = !(S0 <= S1); D = VCC in VOPC encoding.
19223  void
19225  {
19226  Wavefront *wf = gpuDynInst->wavefront();
19227  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19228  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19229  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19230 
19231  src0.readSrc();
19232  src1.readSrc();
19233 
19234  if (instData.ABS & 0x1) {
19235  src0.absModifier();
19236  }
19237 
19238  if (instData.ABS & 0x2) {
19239  src1.absModifier();
19240  }
19241 
19242  if (extData.NEG & 0x1) {
19243  src0.negModifier();
19244  }
19245 
19246  if (extData.NEG & 0x2) {
19247  src1.negModifier();
19248  }
19249 
19253  assert(!(instData.ABS & 0x4));
19254  assert(!(extData.NEG & 0x4));
19255 
19256  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19257  if (wf->execMask(lane)) {
19258  sdst.setBit(lane, !(src0[lane] <= src1[lane]) ? 1 : 0);
19259  }
19260  }
19261 
19262  wf->execMask() = sdst.rawData();
19263  sdst.write();
19264  }
19265 
19267  InFmt_VOP3 *iFmt)
19268  : Inst_VOP3(iFmt, "v_cmpx_neq_f64", true)
19269  {
19270  setFlag(ALU);
19271  setFlag(F64);
19272  } // Inst_VOP3__V_CMPX_NEQ_F64
19273 
19275  {
19276  } // ~Inst_VOP3__V_CMPX_NEQ_F64
19277 
19278  // EXEC,D.u64[threadID] = !(S0 == S1); D = VCC in VOPC encoding.
19279  void
19281  {
19282  Wavefront *wf = gpuDynInst->wavefront();
19283  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19284  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19285  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19286 
19287  src0.readSrc();
19288  src1.readSrc();
19289 
19290  if (instData.ABS & 0x1) {
19291  src0.absModifier();
19292  }
19293 
19294  if (instData.ABS & 0x2) {
19295  src1.absModifier();
19296  }
19297 
19298  if (extData.NEG & 0x1) {
19299  src0.negModifier();
19300  }
19301 
19302  if (extData.NEG & 0x2) {
19303  src1.negModifier();
19304  }
19305 
19309  assert(!(instData.ABS & 0x4));
19310  assert(!(extData.NEG & 0x4));
19311 
19312  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19313  if (wf->execMask(lane)) {
19314  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
19315  }
19316  }
19317 
19318  wf->execMask() = sdst.rawData();
19319  sdst.write();
19320  }
19321 
19323  InFmt_VOP3 *iFmt)
19324  : Inst_VOP3(iFmt, "v_cmpx_nlt_f64", true)
19325  {
19326  setFlag(ALU);
19327  setFlag(F64);
19328  } // Inst_VOP3__V_CMPX_NLT_F64
19329 
19331  {
19332  } // ~Inst_VOP3__V_CMPX_NLT_F64
19333 
19334  // EXEC,D.u64[threadID] = !(S0 < S1); D = VCC in VOPC encoding.
19335  void
19337  {
19338  Wavefront *wf = gpuDynInst->wavefront();
19339  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
19340  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
19341  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19342 
19343  src0.readSrc();
19344  src1.readSrc();
19345 
19346  if (instData.ABS & 0x1) {
19347  src0.absModifier();
19348  }
19349 
19350  if (instData.ABS & 0x2) {
19351  src1.absModifier();
19352  }
19353 
19354  if (extData.NEG & 0x1) {
19355  src0.negModifier();
19356  }
19357 
19358  if (extData.NEG & 0x2) {
19359  src1.negModifier();
19360  }
19361 
19365  assert(!(instData.ABS & 0x4));
19366  assert(!(extData.NEG & 0x4));
19367 
19368  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19369  if (wf->execMask(lane)) {
19370  sdst.setBit(lane, !(src0[lane] < src1[lane]) ? 1 : 0);
19371  }
19372  }
19373 
19374  wf->execMask() = sdst.rawData();
19375  sdst.write();
19376  }
19377 
19379  InFmt_VOP3 *iFmt)
19380  : Inst_VOP3(iFmt, "v_cmpx_tru_f64", true)
19381  {
19382  setFlag(ALU);
19383  setFlag(F64);
19384  } // Inst_VOP3__V_CMPX_TRU_F64
19385 
19387  {
19388  } // ~Inst_VOP3__V_CMPX_TRU_F64
19389 
19390  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
19391  void
19393  {
19394  Wavefront *wf = gpuDynInst->wavefront();
19395  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19396 
19397  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19398  if (wf->execMask(lane)) {
19399  sdst.setBit(lane, 1);
19400  }
19401  }
19402 
19403  wf->execMask() = sdst.rawData();
19404  sdst.write();
19405  }
19406 
19408  : Inst_VOP3(iFmt, "v_cmp_f_i16", true)
19409  {
19410  setFlag(ALU);
19411  } // Inst_VOP3__V_CMP_F_I16
19412 
19414  {
19415  } // ~Inst_VOP3__V_CMP_F_I16
19416 
19417  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
19418  void
19420  {
19421  Wavefront *wf = gpuDynInst->wavefront();
19422  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19423 
19424  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19425  if (wf->execMask(lane)) {
19426  sdst.setBit(lane, 0);
19427  }
19428  }
19429 
19430  sdst.write();
19431  }
19432 
19434  InFmt_VOP3 *iFmt)
19435  : Inst_VOP3(iFmt, "v_cmp_lt_i16", true)
19436  {
19437  setFlag(ALU);
19438  } // Inst_VOP3__V_CMP_LT_I16
19439 
19441  {
19442  } // ~Inst_VOP3__V_CMP_LT_I16
19443 
19444  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
19445  void
19447  {
19448  Wavefront *wf = gpuDynInst->wavefront();
19449  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
19450  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
19451  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19452 
19453  src0.readSrc();
19454  src1.readSrc();
19455 
19459  assert(!(instData.ABS & 0x1));
19460  assert(!(instData.ABS & 0x2));
19461  assert(!(instData.ABS & 0x4));
19462  assert(!(extData.NEG & 0x1));
19463  assert(!(extData.NEG & 0x2));
19464  assert(!(extData.NEG & 0x4));
19465 
19466  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19467  if (wf->execMask(lane)) {
19468  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
19469  }
19470  }
19471 
19472  sdst.write();
19473  }
19474 
19476  InFmt_VOP3 *iFmt)
19477  : Inst_VOP3(iFmt, "v_cmp_eq_i16", true)
19478  {
19479  setFlag(ALU);
19480  } // Inst_VOP3__V_CMP_EQ_I16
19481 
19483  {
19484  } // ~Inst_VOP3__V_CMP_EQ_I16
19485 
19486  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
19487  void
19489  {
19490  Wavefront *wf = gpuDynInst->wavefront();
19491  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
19492  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
19493  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19494 
19495  src0.readSrc();
19496  src1.readSrc();
19497 
19501  assert(!(instData.ABS & 0x1));
19502  assert(!(instData.ABS & 0x2));
19503  assert(!(instData.ABS & 0x4));
19504  assert(!(extData.NEG & 0x1));
19505  assert(!(extData.NEG & 0x2));
19506  assert(!(extData.NEG & 0x4));
19507 
19508  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19509  if (wf->execMask(lane)) {
19510  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
19511  }
19512  }
19513 
19514  sdst.write();
19515  }
19516 
19518  InFmt_VOP3 *iFmt)
19519  : Inst_VOP3(iFmt, "v_cmp_le_i16", true)
19520  {
19521  setFlag(ALU);
19522  } // Inst_VOP3__V_CMP_LE_I16
19523 
19525  {
19526  } // ~Inst_VOP3__V_CMP_LE_I16
19527 
19528  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
19529  void
19531  {
19532  Wavefront *wf = gpuDynInst->wavefront();
19533  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
19534  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
19535  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19536 
19537  src0.readSrc();
19538  src1.readSrc();
19539 
19543  assert(!(instData.ABS & 0x1));
19544  assert(!(instData.ABS & 0x2));
19545  assert(!(instData.ABS & 0x4));
19546  assert(!(extData.NEG & 0x1));
19547  assert(!(extData.NEG & 0x2));
19548  assert(!(extData.NEG & 0x4));
19549 
19550  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19551  if (wf->execMask(lane)) {
19552  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
19553  }
19554  }
19555 
19556  sdst.write();
19557  }
19558 
19560  InFmt_VOP3 *iFmt)
19561  : Inst_VOP3(iFmt, "v_cmp_gt_i16", true)
19562  {
19563  setFlag(ALU);
19564  } // Inst_VOP3__V_CMP_GT_I16
19565 
19567  {
19568  } // ~Inst_VOP3__V_CMP_GT_I16
19569 
19570  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
19571  void
19573  {
19574  Wavefront *wf = gpuDynInst->wavefront();
19575  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
19576  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
19577  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19578 
19579  src0.readSrc();
19580  src1.readSrc();
19581 
19585  assert(!(instData.ABS & 0x1));
19586  assert(!(instData.ABS & 0x2));
19587  assert(!(instData.ABS & 0x4));
19588  assert(!(extData.NEG & 0x1));
19589  assert(!(extData.NEG & 0x2));
19590  assert(!(extData.NEG & 0x4));
19591 
19592  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19593  if (wf->execMask(lane)) {
19594  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
19595  }
19596  }
19597 
19598  sdst.write();
19599  }
19600 
19602  InFmt_VOP3 *iFmt)
19603  : Inst_VOP3(iFmt, "v_cmp_ne_i16", true)
19604  {
19605  setFlag(ALU);
19606  } // Inst_VOP3__V_CMP_NE_I16
19607 
19609  {
19610  } // ~Inst_VOP3__V_CMP_NE_I16
19611 
19612  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
19613  void
19615  {
19616  Wavefront *wf = gpuDynInst->wavefront();
19617  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
19618  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
19619  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19620 
19621  src0.readSrc();
19622  src1.readSrc();
19623 
19627  assert(!(instData.ABS & 0x1));
19628  assert(!(instData.ABS & 0x2));
19629  assert(!(instData.ABS & 0x4));
19630  assert(!(extData.NEG & 0x1));
19631  assert(!(extData.NEG & 0x2));
19632  assert(!(extData.NEG & 0x4));
19633 
19634  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19635  if (wf->execMask(lane)) {
19636  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
19637  }
19638  }
19639 
19640  sdst.write();
19641  }
19642 
19644  InFmt_VOP3 *iFmt)
19645  : Inst_VOP3(iFmt, "v_cmp_ge_i16", true)
19646  {
19647  setFlag(ALU);
19648  } // Inst_VOP3__V_CMP_GE_I16
19649 
19651  {
19652  } // ~Inst_VOP3__V_CMP_GE_I16
19653 
19654  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
19655  void
19657  {
19658  Wavefront *wf = gpuDynInst->wavefront();
19659  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
19660  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
19661  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19662 
19663  src0.readSrc();
19664  src1.readSrc();
19665 
19669  assert(!(instData.ABS & 0x1));
19670  assert(!(instData.ABS & 0x2));
19671  assert(!(instData.ABS & 0x4));
19672  assert(!(extData.NEG & 0x1));
19673  assert(!(extData.NEG & 0x2));
19674  assert(!(extData.NEG & 0x4));
19675 
19676  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19677  if (wf->execMask(lane)) {
19678  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
19679  }
19680  }
19681 
19682  sdst.write();
19683  }
19684 
19686  : Inst_VOP3(iFmt, "v_cmp_t_i16", true)
19687  {
19688  setFlag(ALU);
19689  } // Inst_VOP3__V_CMP_T_I16
19690 
19692  {
19693  } // ~Inst_VOP3__V_CMP_T_I16
19694 
19695  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
19696  void
19698  {
19699  Wavefront *wf = gpuDynInst->wavefront();
19700  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19701 
19702  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19703  if (wf->execMask(lane)) {
19704  sdst.setBit(lane, 1);
19705  }
19706  }
19707 
19708  sdst.write();
19709  }
19710 
19712  : Inst_VOP3(iFmt, "v_cmp_f_u16", true)
19713  {
19714  setFlag(ALU);
19715  } // Inst_VOP3__V_CMP_F_U16
19716 
19718  {
19719  } // ~Inst_VOP3__V_CMP_F_U16
19720 
19721  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
19722  void
19724  {
19725  Wavefront *wf = gpuDynInst->wavefront();
19726  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19727 
19728  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19729  if (wf->execMask(lane)) {
19730  sdst.setBit(lane, 0);
19731  }
19732  }
19733 
19734  sdst.write();
19735  }
19736 
19738  InFmt_VOP3 *iFmt)
19739  : Inst_VOP3(iFmt, "v_cmp_lt_u16", true)
19740  {
19741  setFlag(ALU);
19742  } // Inst_VOP3__V_CMP_LT_U16
19743 
19745  {
19746  } // ~Inst_VOP3__V_CMP_LT_U16
19747 
19748  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
19749  void
19751  {
19752  Wavefront *wf = gpuDynInst->wavefront();
19753  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
19754  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
19755  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19756 
19757  src0.readSrc();
19758  src1.readSrc();
19759 
19763  assert(!(instData.ABS & 0x1));
19764  assert(!(instData.ABS & 0x2));
19765  assert(!(instData.ABS & 0x4));
19766  assert(!(extData.NEG & 0x1));
19767  assert(!(extData.NEG & 0x2));
19768  assert(!(extData.NEG & 0x4));
19769 
19770  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19771  if (wf->execMask(lane)) {
19772  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
19773  }
19774  }
19775 
19776  sdst.write();
19777  }
19778 
19780  InFmt_VOP3 *iFmt)
19781  : Inst_VOP3(iFmt, "v_cmp_eq_u16", true)
19782  {
19783  setFlag(ALU);
19784  } // Inst_VOP3__V_CMP_EQ_U16
19785 
19787  {
19788  } // ~Inst_VOP3__V_CMP_EQ_U16
19789 
19790  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
19791  void
19793  {
19794  Wavefront *wf = gpuDynInst->wavefront();
19795  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
19796  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
19797  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19798 
19799  src0.readSrc();
19800  src1.readSrc();
19801 
19805  assert(!(instData.ABS & 0x1));
19806  assert(!(instData.ABS & 0x2));
19807  assert(!(instData.ABS & 0x4));
19808  assert(!(extData.NEG & 0x1));
19809  assert(!(extData.NEG & 0x2));
19810  assert(!(extData.NEG & 0x4));
19811 
19812  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19813  if (wf->execMask(lane)) {
19814  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
19815  }
19816  }
19817 
19818  sdst.write();
19819  }
19820 
19822  InFmt_VOP3 *iFmt)
19823  : Inst_VOP3(iFmt, "v_cmp_le_u16", true)
19824  {
19825  setFlag(ALU);
19826  } // Inst_VOP3__V_CMP_LE_U16
19827 
19829  {
19830  } // ~Inst_VOP3__V_CMP_LE_U16
19831 
19832  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
19833  void
19835  {
19836  Wavefront *wf = gpuDynInst->wavefront();
19837  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
19838  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
19839  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19840 
19841  src0.readSrc();
19842  src1.readSrc();
19843 
19847  assert(!(instData.ABS & 0x1));
19848  assert(!(instData.ABS & 0x2));
19849  assert(!(instData.ABS & 0x4));
19850  assert(!(extData.NEG & 0x1));
19851  assert(!(extData.NEG & 0x2));
19852  assert(!(extData.NEG & 0x4));
19853 
19854  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19855  if (wf->execMask(lane)) {
19856  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
19857  }
19858  }
19859 
19860  sdst.write();
19861  }
19862 
19864  InFmt_VOP3 *iFmt)
19865  : Inst_VOP3(iFmt, "v_cmp_gt_u16", true)
19866  {
19867  setFlag(ALU);
19868  } // Inst_VOP3__V_CMP_GT_U16
19869 
19871  {
19872  } // ~Inst_VOP3__V_CMP_GT_U16
19873 
19874  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
19875  void
19877  {
19878  Wavefront *wf = gpuDynInst->wavefront();
19879  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
19880  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
19881  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19882 
19883  src0.readSrc();
19884  src1.readSrc();
19885 
19889  assert(!(instData.ABS & 0x1));
19890  assert(!(instData.ABS & 0x2));
19891  assert(!(instData.ABS & 0x4));
19892  assert(!(extData.NEG & 0x1));
19893  assert(!(extData.NEG & 0x2));
19894  assert(!(extData.NEG & 0x4));
19895 
19896  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19897  if (wf->execMask(lane)) {
19898  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
19899  }
19900  }
19901 
19902  sdst.write();
19903  }
19904 
19906  InFmt_VOP3 *iFmt)
19907  : Inst_VOP3(iFmt, "v_cmp_ne_u16", true)
19908  {
19909  setFlag(ALU);
19910  } // Inst_VOP3__V_CMP_NE_U16
19911 
19913  {
19914  } // ~Inst_VOP3__V_CMP_NE_U16
19915 
19916  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
19917  void
19919  {
19920  Wavefront *wf = gpuDynInst->wavefront();
19921  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
19922  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
19923  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19924 
19925  src0.readSrc();
19926  src1.readSrc();
19927 
19931  assert(!(instData.ABS & 0x1));
19932  assert(!(instData.ABS & 0x2));
19933  assert(!(instData.ABS & 0x4));
19934  assert(!(extData.NEG & 0x1));
19935  assert(!(extData.NEG & 0x2));
19936  assert(!(extData.NEG & 0x4));
19937 
19938  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19939  if (wf->execMask(lane)) {
19940  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
19941  }
19942  }
19943 
19944  sdst.write();
19945  }
19946 
19948  InFmt_VOP3 *iFmt)
19949  : Inst_VOP3(iFmt, "v_cmp_ge_u16", true)
19950  {
19951  setFlag(ALU);
19952  } // Inst_VOP3__V_CMP_GE_U16
19953 
19955  {
19956  } // ~Inst_VOP3__V_CMP_GE_U16
19957 
19958  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
19959  void
19961  {
19962  Wavefront *wf = gpuDynInst->wavefront();
19963  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
19964  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
19965  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
19966 
19967  src0.readSrc();
19968  src1.readSrc();
19969 
19973  assert(!(instData.ABS & 0x1));
19974  assert(!(instData.ABS & 0x2));
19975  assert(!(instData.ABS & 0x4));
19976  assert(!(extData.NEG & 0x1));
19977  assert(!(extData.NEG & 0x2));
19978  assert(!(extData.NEG & 0x4));
19979 
19980  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
19981  if (wf->execMask(lane)) {
19982  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
19983  }
19984  }
19985 
19986  sdst.write();
19987  }
19988 
19990  : Inst_VOP3(iFmt, "v_cmp_t_u16", true)
19991  {
19992  setFlag(ALU);
19993  } // Inst_VOP3__V_CMP_T_U16
19994 
19996  {
19997  } // ~Inst_VOP3__V_CMP_T_U16
19998 
19999  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
20000  void
20002  {
20003  Wavefront *wf = gpuDynInst->wavefront();
20004  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20005 
20006  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20007  if (wf->execMask(lane)) {
20008  sdst.setBit(lane, 1);
20009  }
20010  }
20011 
20012  sdst.write();
20013  }
20014 
20016  InFmt_VOP3 *iFmt)
20017  : Inst_VOP3(iFmt, "v_cmpx_f_i16", true)
20018  {
20019  setFlag(ALU);
20020  } // Inst_VOP3__V_CMPX_F_I16
20021 
20023  {
20024  } // ~Inst_VOP3__V_CMPX_F_I16
20025 
20026  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
20027  void
20029  {
20030  Wavefront *wf = gpuDynInst->wavefront();
20031  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20032 
20033  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20034  if (wf->execMask(lane)) {
20035  sdst.setBit(lane, 0);
20036  }
20037  }
20038 
20039  wf->execMask() = sdst.rawData();
20040  sdst.write();
20041  }
20042 
20044  InFmt_VOP3 *iFmt)
20045  : Inst_VOP3(iFmt, "v_cmpx_lt_i16", true)
20046  {
20047  setFlag(ALU);
20048  } // Inst_VOP3__V_CMPX_LT_I16
20049 
20051  {
20052  } // ~Inst_VOP3__V_CMPX_LT_I16
20053 
20054  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
20055  void
20057  {
20058  Wavefront *wf = gpuDynInst->wavefront();
20059  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20060  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20061  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20062 
20063  src0.readSrc();
20064  src1.readSrc();
20065 
20069  assert(!(instData.ABS & 0x1));
20070  assert(!(instData.ABS & 0x2));
20071  assert(!(instData.ABS & 0x4));
20072  assert(!(extData.NEG & 0x1));
20073  assert(!(extData.NEG & 0x2));
20074  assert(!(extData.NEG & 0x4));
20075 
20076  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20077  if (wf->execMask(lane)) {
20078  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
20079  }
20080  }
20081 
20082  wf->execMask() = sdst.rawData();
20083  sdst.write();
20084  }
20085 
20087  InFmt_VOP3 *iFmt)
20088  : Inst_VOP3(iFmt, "v_cmpx_eq_i16", true)
20089  {
20090  setFlag(ALU);
20091  } // Inst_VOP3__V_CMPX_EQ_I16
20092 
20094  {
20095  } // ~Inst_VOP3__V_CMPX_EQ_I16
20096 
20097  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
20098  void
20100  {
20101  Wavefront *wf = gpuDynInst->wavefront();
20102  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20103  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20104  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20105 
20106  src0.readSrc();
20107  src1.readSrc();
20108 
20112  assert(!(instData.ABS & 0x1));
20113  assert(!(instData.ABS & 0x2));
20114  assert(!(instData.ABS & 0x4));
20115  assert(!(extData.NEG & 0x1));
20116  assert(!(extData.NEG & 0x2));
20117  assert(!(extData.NEG & 0x4));
20118 
20119  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20120  if (wf->execMask(lane)) {
20121  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
20122  }
20123  }
20124 
20125  wf->execMask() = sdst.rawData();
20126  sdst.write();
20127  }
20128 
20130  InFmt_VOP3 *iFmt)
20131  : Inst_VOP3(iFmt, "v_cmpx_le_i16", true)
20132  {
20133  setFlag(ALU);
20134  } // Inst_VOP3__V_CMPX_LE_I16
20135 
20137  {
20138  } // ~Inst_VOP3__V_CMPX_LE_I16
20139 
20140  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
20141  void
20143  {
20144  Wavefront *wf = gpuDynInst->wavefront();
20145  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20146  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20147  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20148 
20149  src0.readSrc();
20150  src1.readSrc();
20151 
20155  assert(!(instData.ABS & 0x1));
20156  assert(!(instData.ABS & 0x2));
20157  assert(!(instData.ABS & 0x4));
20158  assert(!(extData.NEG & 0x1));
20159  assert(!(extData.NEG & 0x2));
20160  assert(!(extData.NEG & 0x4));
20161 
20162  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20163  if (wf->execMask(lane)) {
20164  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
20165  }
20166  }
20167 
20168  wf->execMask() = sdst.rawData();
20169  sdst.write();
20170  }
20171 
20173  InFmt_VOP3 *iFmt)
20174  : Inst_VOP3(iFmt, "v_cmpx_gt_i16", true)
20175  {
20176  setFlag(ALU);
20177  } // Inst_VOP3__V_CMPX_GT_I16
20178 
20180  {
20181  } // ~Inst_VOP3__V_CMPX_GT_I16
20182 
20183  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
20184  void
20186  {
20187  Wavefront *wf = gpuDynInst->wavefront();
20188  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20189  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20190  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20191 
20192  src0.readSrc();
20193  src1.readSrc();
20194 
20198  assert(!(instData.ABS & 0x1));
20199  assert(!(instData.ABS & 0x2));
20200  assert(!(instData.ABS & 0x4));
20201  assert(!(extData.NEG & 0x1));
20202  assert(!(extData.NEG & 0x2));
20203  assert(!(extData.NEG & 0x4));
20204 
20205  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20206  if (wf->execMask(lane)) {
20207  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
20208  }
20209  }
20210 
20211  wf->execMask() = sdst.rawData();
20212  sdst.write();
20213  }
20214 
20216  InFmt_VOP3 *iFmt)
20217  : Inst_VOP3(iFmt, "v_cmpx_ne_i16", true)
20218  {
20219  setFlag(ALU);
20220  } // Inst_VOP3__V_CMPX_NE_I16
20221 
20223  {
20224  } // ~Inst_VOP3__V_CMPX_NE_I16
20225 
20226  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
20227  void
20229  {
20230  Wavefront *wf = gpuDynInst->wavefront();
20231  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20232  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20233  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20234 
20235  src0.readSrc();
20236  src1.readSrc();
20237 
20241  assert(!(instData.ABS & 0x1));
20242  assert(!(instData.ABS & 0x2));
20243  assert(!(instData.ABS & 0x4));
20244  assert(!(extData.NEG & 0x1));
20245  assert(!(extData.NEG & 0x2));
20246  assert(!(extData.NEG & 0x4));
20247 
20248  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20249  if (wf->execMask(lane)) {
20250  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
20251  }
20252  }
20253 
20254  wf->execMask() = sdst.rawData();
20255  sdst.write();
20256  }
20257 
20259  InFmt_VOP3 *iFmt)
20260  : Inst_VOP3(iFmt, "v_cmpx_ge_i16", true)
20261  {
20262  setFlag(ALU);
20263  } // Inst_VOP3__V_CMPX_GE_I16
20264 
20266  {
20267  } // ~Inst_VOP3__V_CMPX_GE_I16
20268 
20269  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
20270  void
20272  {
20273  Wavefront *wf = gpuDynInst->wavefront();
20274  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20275  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20276  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20277 
20278  src0.readSrc();
20279  src1.readSrc();
20280 
20284  assert(!(instData.ABS & 0x1));
20285  assert(!(instData.ABS & 0x2));
20286  assert(!(instData.ABS & 0x4));
20287  assert(!(extData.NEG & 0x1));
20288  assert(!(extData.NEG & 0x2));
20289  assert(!(extData.NEG & 0x4));
20290 
20291  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20292  if (wf->execMask(lane)) {
20293  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
20294  }
20295  }
20296 
20297  wf->execMask() = sdst.rawData();
20298  sdst.write();
20299  }
20300 
20302  InFmt_VOP3 *iFmt)
20303  : Inst_VOP3(iFmt, "v_cmpx_t_i16", true)
20304  {
20305  setFlag(ALU);
20306  } // Inst_VOP3__V_CMPX_T_I16
20307 
20309  {
20310  } // ~Inst_VOP3__V_CMPX_T_I16
20311 
20312  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
20313  void
20315  {
20316  Wavefront *wf = gpuDynInst->wavefront();
20317  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20318 
20319  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20320  if (wf->execMask(lane)) {
20321  sdst.setBit(lane, 1);
20322  }
20323  }
20324 
20325  wf->execMask() = sdst.rawData();
20326  sdst.write();
20327  }
20328 
20330  InFmt_VOP3 *iFmt)
20331  : Inst_VOP3(iFmt, "v_cmpx_f_u16", true)
20332  {
20333  setFlag(ALU);
20334  } // Inst_VOP3__V_CMPX_F_U16
20335 
20337  {
20338  } // ~Inst_VOP3__V_CMPX_F_U16
20339 
20340  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
20341  void
20343  {
20344  Wavefront *wf = gpuDynInst->wavefront();
20345  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20346 
20347  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20348  if (wf->execMask(lane)) {
20349  sdst.setBit(lane, 0);
20350  }
20351  }
20352 
20353  wf->execMask() = sdst.rawData();
20354  sdst.write();
20355  }
20356 
20358  InFmt_VOP3 *iFmt)
20359  : Inst_VOP3(iFmt, "v_cmpx_lt_u16", true)
20360  {
20361  setFlag(ALU);
20362  } // Inst_VOP3__V_CMPX_LT_U16
20363 
20365  {
20366  } // ~Inst_VOP3__V_CMPX_LT_U16
20367 
20368  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
20369  void
20371  {
20372  Wavefront *wf = gpuDynInst->wavefront();
20373  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
20374  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
20375  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20376 
20377  src0.readSrc();
20378  src1.readSrc();
20379 
20383  assert(!(instData.ABS & 0x1));
20384  assert(!(instData.ABS & 0x2));
20385  assert(!(instData.ABS & 0x4));
20386  assert(!(extData.NEG & 0x1));
20387  assert(!(extData.NEG & 0x2));
20388  assert(!(extData.NEG & 0x4));
20389 
20390  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20391  if (wf->execMask(lane)) {
20392  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
20393  }
20394  }
20395 
20396  wf->execMask() = sdst.rawData();
20397  sdst.write();
20398  }
20399 
20401  InFmt_VOP3 *iFmt)
20402  : Inst_VOP3(iFmt, "v_cmpx_eq_u16", true)
20403  {
20404  setFlag(ALU);
20405  } // Inst_VOP3__V_CMPX_EQ_U16
20406 
20408  {
20409  } // ~Inst_VOP3__V_CMPX_EQ_U16
20410 
20411  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
20412  void
20414  {
20415  Wavefront *wf = gpuDynInst->wavefront();
20416  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20417  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20418  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20419 
20420  src0.readSrc();
20421  src1.readSrc();
20422 
20426  assert(!(instData.ABS & 0x1));
20427  assert(!(instData.ABS & 0x2));
20428  assert(!(instData.ABS & 0x4));
20429  assert(!(extData.NEG & 0x1));
20430  assert(!(extData.NEG & 0x2));
20431  assert(!(extData.NEG & 0x4));
20432 
20433  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20434  if (wf->execMask(lane)) {
20435  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
20436  }
20437  }
20438 
20439  wf->execMask() = sdst.rawData();
20440  sdst.write();
20441  }
20442 
20444  InFmt_VOP3 *iFmt)
20445  : Inst_VOP3(iFmt, "v_cmpx_le_u16", true)
20446  {
20447  setFlag(ALU);
20448  } // Inst_VOP3__V_CMPX_LE_U16
20449 
20451  {
20452  } // ~Inst_VOP3__V_CMPX_LE_U16
20453 
20454  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
20455  void
20457  {
20458  Wavefront *wf = gpuDynInst->wavefront();
20459  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20460  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20461  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20462 
20463  src0.readSrc();
20464  src1.readSrc();
20465 
20469  assert(!(instData.ABS & 0x1));
20470  assert(!(instData.ABS & 0x2));
20471  assert(!(instData.ABS & 0x4));
20472  assert(!(extData.NEG & 0x1));
20473  assert(!(extData.NEG & 0x2));
20474  assert(!(extData.NEG & 0x4));
20475 
20476  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20477  if (wf->execMask(lane)) {
20478  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
20479  }
20480  }
20481 
20482  wf->execMask() = sdst.rawData();
20483  sdst.write();
20484  }
20485 
20487  InFmt_VOP3 *iFmt)
20488  : Inst_VOP3(iFmt, "v_cmpx_gt_u16", true)
20489  {
20490  setFlag(ALU);
20491  } // Inst_VOP3__V_CMPX_GT_U16
20492 
20494  {
20495  } // ~Inst_VOP3__V_CMPX_GT_U16
20496 
20497  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
20498  void
20500  {
20501  Wavefront *wf = gpuDynInst->wavefront();
20502  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20503  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20504  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20505 
20506  src0.readSrc();
20507  src1.readSrc();
20508 
20512  assert(!(instData.ABS & 0x1));
20513  assert(!(instData.ABS & 0x2));
20514  assert(!(instData.ABS & 0x4));
20515  assert(!(extData.NEG & 0x1));
20516  assert(!(extData.NEG & 0x2));
20517  assert(!(extData.NEG & 0x4));
20518 
20519  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20520  if (wf->execMask(lane)) {
20521  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
20522  }
20523  }
20524 
20525  wf->execMask() = sdst.rawData();
20526  sdst.write();
20527  }
20528 
20530  InFmt_VOP3 *iFmt)
20531  : Inst_VOP3(iFmt, "v_cmpx_ne_u16", true)
20532  {
20533  setFlag(ALU);
20534  } // Inst_VOP3__V_CMPX_NE_U16
20535 
20537  {
20538  } // ~Inst_VOP3__V_CMPX_NE_U16
20539 
20540  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
20541  void
20543  {
20544  Wavefront *wf = gpuDynInst->wavefront();
20545  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20546  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20547  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20548 
20549  src0.readSrc();
20550  src1.readSrc();
20551 
20555  assert(!(instData.ABS & 0x1));
20556  assert(!(instData.ABS & 0x2));
20557  assert(!(instData.ABS & 0x4));
20558  assert(!(extData.NEG & 0x1));
20559  assert(!(extData.NEG & 0x2));
20560  assert(!(extData.NEG & 0x4));
20561 
20562  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20563  if (wf->execMask(lane)) {
20564  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
20565  }
20566  }
20567 
20568  wf->execMask() = sdst.rawData();
20569  sdst.write();
20570  }
20571 
20573  InFmt_VOP3 *iFmt)
20574  : Inst_VOP3(iFmt, "v_cmpx_ge_u16", true)
20575  {
20576  setFlag(ALU);
20577  } // Inst_VOP3__V_CMPX_GE_U16
20578 
20580  {
20581  } // ~Inst_VOP3__V_CMPX_GE_U16
20582 
20583  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
20584  void
20586  {
20587  Wavefront *wf = gpuDynInst->wavefront();
20588  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
20589  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
20590  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20591 
20592  src0.readSrc();
20593  src1.readSrc();
20594 
20598  assert(!(instData.ABS & 0x1));
20599  assert(!(instData.ABS & 0x2));
20600  assert(!(instData.ABS & 0x4));
20601  assert(!(extData.NEG & 0x1));
20602  assert(!(extData.NEG & 0x2));
20603  assert(!(extData.NEG & 0x4));
20604 
20605  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20606  if (wf->execMask(lane)) {
20607  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
20608  }
20609  }
20610 
20611  wf->execMask() = sdst.rawData();
20612  sdst.write();
20613  }
20614 
20616  InFmt_VOP3 *iFmt)
20617  : Inst_VOP3(iFmt, "v_cmpx_t_u16", true)
20618  {
20619  setFlag(ALU);
20620  } // Inst_VOP3__V_CMPX_T_U16
20621 
20623  {
20624  } // ~Inst_VOP3__V_CMPX_T_U16
20625 
20626  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
20627  void
20629  {
20630  Wavefront *wf = gpuDynInst->wavefront();
20631  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20632 
20633  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20634  if (wf->execMask(lane)) {
20635  sdst.setBit(lane, 1);
20636  }
20637  }
20638 
20639  wf->execMask() = sdst.rawData();
20640  sdst.write();
20641  }
20642 
20644  : Inst_VOP3(iFmt, "v_cmp_f_i32", true)
20645  {
20646  setFlag(ALU);
20647  } // Inst_VOP3__V_CMP_F_I32
20648 
20650  {
20651  } // ~Inst_VOP3__V_CMP_F_I32
20652 
20653  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
20654  void
20656  {
20657  Wavefront *wf = gpuDynInst->wavefront();
20658  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20659 
20660  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20661  if (wf->execMask(lane)) {
20662  sdst.setBit(lane, 0);
20663  }
20664  }
20665 
20666  wf->execMask() = sdst.rawData();
20667  sdst.write();
20668  }
20669 
20671  InFmt_VOP3 *iFmt)
20672  : Inst_VOP3(iFmt, "v_cmp_lt_i32", true)
20673  {
20674  setFlag(ALU);
20675  } // Inst_VOP3__V_CMP_LT_I32
20676 
20678  {
20679  } // ~Inst_VOP3__V_CMP_LT_I32
20680 
20681  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
20682  void
20684  {
20685  Wavefront *wf = gpuDynInst->wavefront();
20686  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
20687  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
20688  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20689 
20690  src0.readSrc();
20691  src1.readSrc();
20692 
20696  assert(!(instData.ABS & 0x1));
20697  assert(!(instData.ABS & 0x2));
20698  assert(!(instData.ABS & 0x4));
20699  assert(!(extData.NEG & 0x1));
20700  assert(!(extData.NEG & 0x2));
20701  assert(!(extData.NEG & 0x4));
20702 
20703  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20704  if (wf->execMask(lane)) {
20705  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
20706  }
20707  }
20708 
20709  sdst.write();
20710  }
20711 
20713  InFmt_VOP3 *iFmt)
20714  : Inst_VOP3(iFmt, "v_cmp_eq_i32", true)
20715  {
20716  setFlag(ALU);
20717  } // Inst_VOP3__V_CMP_EQ_I32
20718 
20720  {
20721  } // ~Inst_VOP3__V_CMP_EQ_I32
20722 
20723  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
20724  void
20726  {
20727  Wavefront *wf = gpuDynInst->wavefront();
20728  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
20729  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
20730  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20731 
20732  src0.readSrc();
20733  src1.readSrc();
20734 
20738  assert(!(instData.ABS & 0x1));
20739  assert(!(instData.ABS & 0x2));
20740  assert(!(instData.ABS & 0x4));
20741  assert(!(extData.NEG & 0x1));
20742  assert(!(extData.NEG & 0x2));
20743  assert(!(extData.NEG & 0x4));
20744 
20745  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20746  if (wf->execMask(lane)) {
20747  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
20748  }
20749  }
20750 
20751  sdst.write();
20752  }
20753 
20755  InFmt_VOP3 *iFmt)
20756  : Inst_VOP3(iFmt, "v_cmp_le_i32", true)
20757  {
20758  setFlag(ALU);
20759  } // Inst_VOP3__V_CMP_LE_I32
20760 
20762  {
20763  } // ~Inst_VOP3__V_CMP_LE_I32
20764 
20765  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
20766  void
20768  {
20769  Wavefront *wf = gpuDynInst->wavefront();
20770  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
20771  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
20772  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20773 
20774  src0.readSrc();
20775  src1.readSrc();
20776 
20780  assert(!(instData.ABS & 0x1));
20781  assert(!(instData.ABS & 0x2));
20782  assert(!(instData.ABS & 0x4));
20783  assert(!(extData.NEG & 0x1));
20784  assert(!(extData.NEG & 0x2));
20785  assert(!(extData.NEG & 0x4));
20786 
20787  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20788  if (wf->execMask(lane)) {
20789  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
20790  }
20791  }
20792 
20793  sdst.write();
20794  }
20795 
20797  InFmt_VOP3 *iFmt)
20798  : Inst_VOP3(iFmt, "v_cmp_gt_i32", true)
20799  {
20800  setFlag(ALU);
20801  } // Inst_VOP3__V_CMP_GT_I32
20802 
20804  {
20805  } // ~Inst_VOP3__V_CMP_GT_I32
20806 
20807  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
20808  void
20810  {
20811  Wavefront *wf = gpuDynInst->wavefront();
20812  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
20813  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
20814  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20815 
20816  src0.readSrc();
20817  src1.readSrc();
20818 
20822  assert(!(instData.ABS & 0x1));
20823  assert(!(instData.ABS & 0x2));
20824  assert(!(instData.ABS & 0x4));
20825  assert(!(extData.NEG & 0x1));
20826  assert(!(extData.NEG & 0x2));
20827  assert(!(extData.NEG & 0x4));
20828 
20829  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20830  if (wf->execMask(lane)) {
20831  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
20832  }
20833  }
20834 
20835  sdst.write();
20836  }
20837 
20839  InFmt_VOP3 *iFmt)
20840  : Inst_VOP3(iFmt, "v_cmp_ne_i32", true)
20841  {
20842  setFlag(ALU);
20843  } // Inst_VOP3__V_CMP_NE_I32
20844 
20846  {
20847  } // ~Inst_VOP3__V_CMP_NE_I32
20848 
20849  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
20850  void
20852  {
20853  Wavefront *wf = gpuDynInst->wavefront();
20854  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
20855  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
20856  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20857 
20858  src0.readSrc();
20859  src1.readSrc();
20860 
20864  assert(!(instData.ABS & 0x1));
20865  assert(!(instData.ABS & 0x2));
20866  assert(!(instData.ABS & 0x4));
20867  assert(!(extData.NEG & 0x1));
20868  assert(!(extData.NEG & 0x2));
20869  assert(!(extData.NEG & 0x4));
20870 
20871  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20872  if (wf->execMask(lane)) {
20873  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
20874  }
20875  }
20876 
20877  sdst.write();
20878  }
20879 
20881  InFmt_VOP3 *iFmt)
20882  : Inst_VOP3(iFmt, "v_cmp_ge_i32", true)
20883  {
20884  setFlag(ALU);
20885  } // Inst_VOP3__V_CMP_GE_I32
20886 
20888  {
20889  } // ~Inst_VOP3__V_CMP_GE_I32
20890 
20891  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
20892  void
20894  {
20895  Wavefront *wf = gpuDynInst->wavefront();
20896  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
20897  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
20898  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20899 
20900  src0.readSrc();
20901  src1.readSrc();
20902 
20906  assert(!(instData.ABS & 0x1));
20907  assert(!(instData.ABS & 0x2));
20908  assert(!(instData.ABS & 0x4));
20909  assert(!(extData.NEG & 0x1));
20910  assert(!(extData.NEG & 0x2));
20911  assert(!(extData.NEG & 0x4));
20912 
20913  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20914  if (wf->execMask(lane)) {
20915  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
20916  }
20917  }
20918 
20919  sdst.write();
20920  }
20921 
20923  : Inst_VOP3(iFmt, "v_cmp_t_i32", true)
20924  {
20925  setFlag(ALU);
20926  } // Inst_VOP3__V_CMP_T_I32
20927 
20929  {
20930  } // ~Inst_VOP3__V_CMP_T_I32
20931 
20932  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
20933  void
20935  {
20936  Wavefront *wf = gpuDynInst->wavefront();
20937  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20938 
20939  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20940  if (wf->execMask(lane)) {
20941  sdst.setBit(lane, 1);
20942  }
20943  }
20944 
20945  sdst.write();
20946  }
20947 
20949  : Inst_VOP3(iFmt, "v_cmp_f_u32", true)
20950  {
20951  setFlag(ALU);
20952  } // Inst_VOP3__V_CMP_F_U32
20953 
20955  {
20956  } // ~Inst_VOP3__V_CMP_F_U32
20957 
20958  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
20959  void
20961  {
20962  Wavefront *wf = gpuDynInst->wavefront();
20963  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20964 
20965  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
20966  if (wf->execMask(lane)) {
20967  sdst.setBit(lane, 0);
20968  }
20969  }
20970 
20971  sdst.write();
20972  }
20973 
20975  InFmt_VOP3 *iFmt)
20976  : Inst_VOP3(iFmt, "v_cmp_lt_u32", true)
20977  {
20978  setFlag(ALU);
20979  } // Inst_VOP3__V_CMP_LT_U32
20980 
20982  {
20983  } // ~Inst_VOP3__V_CMP_LT_U32
20984 
20985  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
20986  void
20988  {
20989  Wavefront *wf = gpuDynInst->wavefront();
20990  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
20991  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
20992  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
20993 
20994  src0.readSrc();
20995  src1.readSrc();
20996 
21000  assert(!(instData.ABS & 0x1));
21001  assert(!(instData.ABS & 0x2));
21002  assert(!(instData.ABS & 0x4));
21003  assert(!(extData.NEG & 0x1));
21004  assert(!(extData.NEG & 0x2));
21005  assert(!(extData.NEG & 0x4));
21006 
21007  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21008  if (wf->execMask(lane)) {
21009  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
21010  }
21011  }
21012 
21013  sdst.write();
21014  }
21015 
21017  InFmt_VOP3 *iFmt)
21018  : Inst_VOP3(iFmt, "v_cmp_eq_u32", true)
21019  {
21020  setFlag(ALU);
21021  } // Inst_VOP3__V_CMP_EQ_U32
21022 
21024  {
21025  } // ~Inst_VOP3__V_CMP_EQ_U32
21026 
21027  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
21028  void
21030  {
21031  Wavefront *wf = gpuDynInst->wavefront();
21032  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21033  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21034  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21035 
21036  src0.readSrc();
21037  src1.readSrc();
21038 
21042  assert(!(instData.ABS & 0x1));
21043  assert(!(instData.ABS & 0x2));
21044  assert(!(instData.ABS & 0x4));
21045  assert(!(extData.NEG & 0x1));
21046  assert(!(extData.NEG & 0x2));
21047  assert(!(extData.NEG & 0x4));
21048 
21049  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21050  if (wf->execMask(lane)) {
21051  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
21052  }
21053  }
21054 
21055  sdst.write();
21056  }
21057 
21059  InFmt_VOP3 *iFmt)
21060  : Inst_VOP3(iFmt, "v_cmp_le_u32", true)
21061  {
21062  setFlag(ALU);
21063  } // Inst_VOP3__V_CMP_LE_U32
21064 
21066  {
21067  } // ~Inst_VOP3__V_CMP_LE_U32
21068 
21069  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
21070  void
21072  {
21073  Wavefront *wf = gpuDynInst->wavefront();
21074  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21075  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21076  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21077 
21078  src0.readSrc();
21079  src1.readSrc();
21080 
21084  assert(!(instData.ABS & 0x1));
21085  assert(!(instData.ABS & 0x2));
21086  assert(!(instData.ABS & 0x4));
21087  assert(!(extData.NEG & 0x1));
21088  assert(!(extData.NEG & 0x2));
21089  assert(!(extData.NEG & 0x4));
21090 
21091  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21092  if (wf->execMask(lane)) {
21093  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
21094  }
21095  }
21096 
21097  sdst.write();
21098  }
21099 
21101  InFmt_VOP3 *iFmt)
21102  : Inst_VOP3(iFmt, "v_cmp_gt_u32", true)
21103  {
21104  setFlag(ALU);
21105  } // Inst_VOP3__V_CMP_GT_U32
21106 
21108  {
21109  } // ~Inst_VOP3__V_CMP_GT_U32
21110 
21111  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
21112  void
21114  {
21115  Wavefront *wf = gpuDynInst->wavefront();
21116  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21117  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21118  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21119 
21120  src0.readSrc();
21121  src1.readSrc();
21122 
21126  assert(!(instData.ABS & 0x1));
21127  assert(!(instData.ABS & 0x2));
21128  assert(!(instData.ABS & 0x4));
21129  assert(!(extData.NEG & 0x1));
21130  assert(!(extData.NEG & 0x2));
21131  assert(!(extData.NEG & 0x4));
21132 
21133  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21134  if (wf->execMask(lane)) {
21135  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
21136  }
21137  }
21138 
21139  sdst.write();
21140  }
21141 
21143  InFmt_VOP3 *iFmt)
21144  : Inst_VOP3(iFmt, "v_cmp_ne_u32", true)
21145  {
21146  setFlag(ALU);
21147  } // Inst_VOP3__V_CMP_NE_U32
21148 
21150  {
21151  } // ~Inst_VOP3__V_CMP_NE_U32
21152 
21153  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
21154  void
21156  {
21157  Wavefront *wf = gpuDynInst->wavefront();
21158  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21159  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21160  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21161 
21162  src0.readSrc();
21163  src1.readSrc();
21164 
21168  assert(!(instData.ABS & 0x1));
21169  assert(!(instData.ABS & 0x2));
21170  assert(!(instData.ABS & 0x4));
21171  assert(!(extData.NEG & 0x1));
21172  assert(!(extData.NEG & 0x2));
21173  assert(!(extData.NEG & 0x4));
21174 
21175  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21176  if (wf->execMask(lane)) {
21177  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
21178  }
21179  }
21180 
21181  sdst.write();
21182  }
21183 
21185  InFmt_VOP3 *iFmt)
21186  : Inst_VOP3(iFmt, "v_cmp_ge_u32", true)
21187  {
21188  setFlag(ALU);
21189  } // Inst_VOP3__V_CMP_GE_U32
21190 
21192  {
21193  } // ~Inst_VOP3__V_CMP_GE_U32
21194 
21195  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
21196  void
21198  {
21199  Wavefront *wf = gpuDynInst->wavefront();
21200  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21201  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21202  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21203 
21204  src0.readSrc();
21205  src1.readSrc();
21206 
21210  assert(!(instData.ABS & 0x1));
21211  assert(!(instData.ABS & 0x2));
21212  assert(!(instData.ABS & 0x4));
21213  assert(!(extData.NEG & 0x1));
21214  assert(!(extData.NEG & 0x2));
21215  assert(!(extData.NEG & 0x4));
21216 
21217  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21218  if (wf->execMask(lane)) {
21219  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
21220  }
21221  }
21222 
21223  sdst.write();
21224  }
21225 
21227  : Inst_VOP3(iFmt, "v_cmp_t_u32", true)
21228  {
21229  setFlag(ALU);
21230  } // Inst_VOP3__V_CMP_T_U32
21231 
21233  {
21234  } // ~Inst_VOP3__V_CMP_T_U32
21235 
21236  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
21237  void
21239  {
21240  Wavefront *wf = gpuDynInst->wavefront();
21241  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21242 
21243  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21244  if (wf->execMask(lane)) {
21245  sdst.setBit(lane, 1);
21246  }
21247  }
21248 
21249  sdst.write();
21250  }
21251 
21253  InFmt_VOP3 *iFmt)
21254  : Inst_VOP3(iFmt, "v_cmpx_f_i32", true)
21255  {
21256  setFlag(ALU);
21257  } // Inst_VOP3__V_CMPX_F_I32
21258 
21260  {
21261  } // ~Inst_VOP3__V_CMPX_F_I32
21262 
21263  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
21264  void
21266  {
21267  Wavefront *wf = gpuDynInst->wavefront();
21268  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21269 
21270  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21271  if (wf->execMask(lane)) {
21272  sdst.setBit(lane, 0);
21273  }
21274  }
21275 
21276  wf->execMask() = sdst.rawData();
21277  sdst.write();
21278  }
21279 
21281  InFmt_VOP3 *iFmt)
21282  : Inst_VOP3(iFmt, "v_cmpx_lt_i32", true)
21283  {
21284  setFlag(ALU);
21285  } // Inst_VOP3__V_CMPX_LT_I32
21286 
21288  {
21289  } // ~Inst_VOP3__V_CMPX_LT_I32
21290 
21291  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
21292  void
21294  {
21295  Wavefront *wf = gpuDynInst->wavefront();
21296  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
21297  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
21298  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21299 
21300  src0.readSrc();
21301  src1.readSrc();
21302 
21306  assert(!(instData.ABS & 0x1));
21307  assert(!(instData.ABS & 0x2));
21308  assert(!(instData.ABS & 0x4));
21309  assert(!(extData.NEG & 0x1));
21310  assert(!(extData.NEG & 0x2));
21311  assert(!(extData.NEG & 0x4));
21312 
21313  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21314  if (wf->execMask(lane)) {
21315  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
21316  }
21317  }
21318 
21319  wf->execMask() = sdst.rawData();
21320  sdst.write();
21321  }
21322 
21324  InFmt_VOP3 *iFmt)
21325  : Inst_VOP3(iFmt, "v_cmpx_eq_i32", true)
21326  {
21327  setFlag(ALU);
21328  } // Inst_VOP3__V_CMPX_EQ_I32
21329 
21331  {
21332  } // ~Inst_VOP3__V_CMPX_EQ_I32
21333 
21334  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
21335  void
21337  {
21338  Wavefront *wf = gpuDynInst->wavefront();
21339  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
21340  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
21341  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21342 
21343  src0.readSrc();
21344  src1.readSrc();
21345 
21349  assert(!(instData.ABS & 0x1));
21350  assert(!(instData.ABS & 0x2));
21351  assert(!(instData.ABS & 0x4));
21352  assert(!(extData.NEG & 0x1));
21353  assert(!(extData.NEG & 0x2));
21354  assert(!(extData.NEG & 0x4));
21355 
21356  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21357  if (wf->execMask(lane)) {
21358  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
21359  }
21360  }
21361 
21362  wf->execMask() = sdst.rawData();
21363  sdst.write();
21364  }
21365 
21367  InFmt_VOP3 *iFmt)
21368  : Inst_VOP3(iFmt, "v_cmpx_le_i32", true)
21369  {
21370  setFlag(ALU);
21371  } // Inst_VOP3__V_CMPX_LE_I32
21372 
21374  {
21375  } // ~Inst_VOP3__V_CMPX_LE_I32
21376 
21377  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
21378  void
21380  {
21381  Wavefront *wf = gpuDynInst->wavefront();
21382  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
21383  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
21384  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21385 
21386  src0.readSrc();
21387  src1.readSrc();
21388 
21392  assert(!(instData.ABS & 0x1));
21393  assert(!(instData.ABS & 0x2));
21394  assert(!(instData.ABS & 0x4));
21395  assert(!(extData.NEG & 0x1));
21396  assert(!(extData.NEG & 0x2));
21397  assert(!(extData.NEG & 0x4));
21398 
21399  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21400  if (wf->execMask(lane)) {
21401  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
21402  }
21403  }
21404 
21405  wf->execMask() = sdst.rawData();
21406  sdst.write();
21407  }
21408 
21410  InFmt_VOP3 *iFmt)
21411  : Inst_VOP3(iFmt, "v_cmpx_gt_i32", true)
21412  {
21413  setFlag(ALU);
21414  } // Inst_VOP3__V_CMPX_GT_I32
21415 
21417  {
21418  } // ~Inst_VOP3__V_CMPX_GT_I32
21419 
21420  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
21421  void
21423  {
21424  Wavefront *wf = gpuDynInst->wavefront();
21425  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
21426  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
21427  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21428 
21429  src0.readSrc();
21430  src1.readSrc();
21431 
21435  assert(!(instData.ABS & 0x1));
21436  assert(!(instData.ABS & 0x2));
21437  assert(!(instData.ABS & 0x4));
21438  assert(!(extData.NEG & 0x1));
21439  assert(!(extData.NEG & 0x2));
21440  assert(!(extData.NEG & 0x4));
21441 
21442  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21443  if (wf->execMask(lane)) {
21444  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
21445  }
21446  }
21447 
21448  wf->execMask() = sdst.rawData();
21449  sdst.write();
21450  }
21451 
21453  InFmt_VOP3 *iFmt)
21454  : Inst_VOP3(iFmt, "v_cmpx_ne_i32", true)
21455  {
21456  setFlag(ALU);
21457  } // Inst_VOP3__V_CMPX_NE_I32
21458 
21460  {
21461  } // ~Inst_VOP3__V_CMPX_NE_I32
21462 
21463  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
21464  void
21466  {
21467  Wavefront *wf = gpuDynInst->wavefront();
21468  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
21469  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
21470  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21471 
21472  src0.readSrc();
21473  src1.readSrc();
21474 
21478  assert(!(instData.ABS & 0x1));
21479  assert(!(instData.ABS & 0x2));
21480  assert(!(instData.ABS & 0x4));
21481  assert(!(extData.NEG & 0x1));
21482  assert(!(extData.NEG & 0x2));
21483  assert(!(extData.NEG & 0x4));
21484 
21485  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21486  if (wf->execMask(lane)) {
21487  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
21488  }
21489  }
21490 
21491  wf->execMask() = sdst.rawData();
21492  sdst.write();
21493  }
21494 
21496  InFmt_VOP3 *iFmt)
21497  : Inst_VOP3(iFmt, "v_cmpx_ge_i32", true)
21498  {
21499  setFlag(ALU);
21500  } // Inst_VOP3__V_CMPX_GE_I32
21501 
21503  {
21504  } // ~Inst_VOP3__V_CMPX_GE_I32
21505 
21506  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
21507  void
21509  {
21510  Wavefront *wf = gpuDynInst->wavefront();
21511  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
21512  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
21513  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21514 
21515  src0.readSrc();
21516  src1.readSrc();
21517 
21521  assert(!(instData.ABS & 0x1));
21522  assert(!(instData.ABS & 0x2));
21523  assert(!(instData.ABS & 0x4));
21524  assert(!(extData.NEG & 0x1));
21525  assert(!(extData.NEG & 0x2));
21526  assert(!(extData.NEG & 0x4));
21527 
21528  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21529  if (wf->execMask(lane)) {
21530  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
21531  }
21532  }
21533 
21534  wf->execMask() = sdst.rawData();
21535  sdst.write();
21536  }
21537 
21539  InFmt_VOP3 *iFmt)
21540  : Inst_VOP3(iFmt, "v_cmpx_t_i32", true)
21541  {
21542  setFlag(ALU);
21543  } // Inst_VOP3__V_CMPX_T_I32
21544 
21546  {
21547  } // ~Inst_VOP3__V_CMPX_T_I32
21548 
21549  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
21550  void
21552  {
21553  Wavefront *wf = gpuDynInst->wavefront();
21554  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21555 
21556  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21557  if (wf->execMask(lane)) {
21558  sdst.setBit(lane, 1);
21559  }
21560  }
21561 
21562  wf->execMask() = sdst.rawData();
21563  sdst.write();
21564  }
21565 
21567  InFmt_VOP3 *iFmt)
21568  : Inst_VOP3(iFmt, "v_cmpx_f_u32", true)
21569  {
21570  setFlag(ALU);
21571  } // Inst_VOP3__V_CMPX_F_U32
21572 
21574  {
21575  } // ~Inst_VOP3__V_CMPX_F_U32
21576 
21577  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
21578  void
21580  {
21581  Wavefront *wf = gpuDynInst->wavefront();
21582  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21583 
21584  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21585  if (wf->execMask(lane)) {
21586  sdst.setBit(lane, 0);
21587  }
21588  }
21589 
21590  wf->execMask() = sdst.rawData();
21591  sdst.write();
21592  }
21593 
21595  InFmt_VOP3 *iFmt)
21596  : Inst_VOP3(iFmt, "v_cmpx_lt_u32", true)
21597  {
21598  setFlag(ALU);
21599  } // Inst_VOP3__V_CMPX_LT_U32
21600 
21602  {
21603  } // ~Inst_VOP3__V_CMPX_LT_U32
21604 
21605  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
21606  void
21608  {
21609  Wavefront *wf = gpuDynInst->wavefront();
21610  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21611  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21612  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21613 
21614  src0.readSrc();
21615  src1.readSrc();
21616 
21620  assert(!(instData.ABS & 0x1));
21621  assert(!(instData.ABS & 0x2));
21622  assert(!(instData.ABS & 0x4));
21623  assert(!(extData.NEG & 0x1));
21624  assert(!(extData.NEG & 0x2));
21625  assert(!(extData.NEG & 0x4));
21626 
21627  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21628  if (wf->execMask(lane)) {
21629  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
21630  }
21631  }
21632 
21633  wf->execMask() = sdst.rawData();
21634  sdst.write();
21635  }
21636 
21638  InFmt_VOP3 *iFmt)
21639  : Inst_VOP3(iFmt, "v_cmpx_eq_u32", true)
21640  {
21641  setFlag(ALU);
21642  } // Inst_VOP3__V_CMPX_EQ_U32
21643 
21645  {
21646  } // ~Inst_VOP3__V_CMPX_EQ_U32
21647 
21648  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
21649  void
21651  {
21652  Wavefront *wf = gpuDynInst->wavefront();
21653  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21654  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21655  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21656 
21657  src0.readSrc();
21658  src1.readSrc();
21659 
21663  assert(!(instData.ABS & 0x1));
21664  assert(!(instData.ABS & 0x2));
21665  assert(!(instData.ABS & 0x4));
21666  assert(!(extData.NEG & 0x1));
21667  assert(!(extData.NEG & 0x2));
21668  assert(!(extData.NEG & 0x4));
21669 
21670  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21671  if (wf->execMask(lane)) {
21672  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
21673  }
21674  }
21675 
21676  wf->execMask() = sdst.rawData();
21677  sdst.write();
21678  }
21679 
21681  InFmt_VOP3 *iFmt)
21682  : Inst_VOP3(iFmt, "v_cmpx_le_u32", true)
21683  {
21684  setFlag(ALU);
21685  } // Inst_VOP3__V_CMPX_LE_U32
21686 
21688  {
21689  } // ~Inst_VOP3__V_CMPX_LE_U32
21690 
21691  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
21692  void
21694  {
21695  Wavefront *wf = gpuDynInst->wavefront();
21696  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21697  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21698  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21699 
21700  src0.readSrc();
21701  src1.readSrc();
21702 
21706  assert(!(instData.ABS & 0x1));
21707  assert(!(instData.ABS & 0x2));
21708  assert(!(instData.ABS & 0x4));
21709  assert(!(extData.NEG & 0x1));
21710  assert(!(extData.NEG & 0x2));
21711  assert(!(extData.NEG & 0x4));
21712 
21713  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21714  if (wf->execMask(lane)) {
21715  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
21716  }
21717  }
21718 
21719  wf->execMask() = sdst.rawData();
21720  sdst.write();
21721  }
21722 
21724  InFmt_VOP3 *iFmt)
21725  : Inst_VOP3(iFmt, "v_cmpx_gt_u32", true)
21726  {
21727  setFlag(ALU);
21728  } // Inst_VOP3__V_CMPX_GT_U32
21729 
21731  {
21732  } // ~Inst_VOP3__V_CMPX_GT_U32
21733 
21734  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
21735  void
21737  {
21738  Wavefront *wf = gpuDynInst->wavefront();
21739  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21740  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21741  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21742 
21743  src0.readSrc();
21744  src1.readSrc();
21745 
21749  assert(!(instData.ABS & 0x1));
21750  assert(!(instData.ABS & 0x2));
21751  assert(!(instData.ABS & 0x4));
21752  assert(!(extData.NEG & 0x1));
21753  assert(!(extData.NEG & 0x2));
21754  assert(!(extData.NEG & 0x4));
21755 
21756  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21757  if (wf->execMask(lane)) {
21758  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
21759  }
21760  }
21761 
21762  wf->execMask() = sdst.rawData();
21763  sdst.write();
21764  }
21765 
21767  InFmt_VOP3 *iFmt)
21768  : Inst_VOP3(iFmt, "v_cmpx_ne_u32", true)
21769  {
21770  setFlag(ALU);
21771  } // Inst_VOP3__V_CMPX_NE_U32
21772 
21774  {
21775  } // ~Inst_VOP3__V_CMPX_NE_U32
21776 
21777  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
21778  void
21780  {
21781  Wavefront *wf = gpuDynInst->wavefront();
21782  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21783  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21784  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21785 
21786  src0.readSrc();
21787  src1.readSrc();
21788 
21792  assert(!(instData.ABS & 0x1));
21793  assert(!(instData.ABS & 0x2));
21794  assert(!(instData.ABS & 0x4));
21795  assert(!(extData.NEG & 0x1));
21796  assert(!(extData.NEG & 0x2));
21797  assert(!(extData.NEG & 0x4));
21798 
21799  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21800  if (wf->execMask(lane)) {
21801  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
21802  }
21803  }
21804 
21805  wf->execMask() = sdst.rawData();
21806  sdst.write();
21807  }
21808 
21810  InFmt_VOP3 *iFmt)
21811  : Inst_VOP3(iFmt, "v_cmpx_ge_u32", true)
21812  {
21813  setFlag(ALU);
21814  } // Inst_VOP3__V_CMPX_GE_U32
21815 
21817  {
21818  } // ~Inst_VOP3__V_CMPX_GE_U32
21819 
21820  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
21821  void
21823  {
21824  Wavefront *wf = gpuDynInst->wavefront();
21825  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
21826  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
21827  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21828 
21829  src0.readSrc();
21830  src1.readSrc();
21831 
21835  assert(!(instData.ABS & 0x1));
21836  assert(!(instData.ABS & 0x2));
21837  assert(!(instData.ABS & 0x4));
21838  assert(!(extData.NEG & 0x1));
21839  assert(!(extData.NEG & 0x2));
21840  assert(!(extData.NEG & 0x4));
21841 
21842  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21843  if (wf->execMask(lane)) {
21844  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
21845  }
21846  }
21847 
21848  wf->execMask() = sdst.rawData();
21849  sdst.write();
21850  }
21851 
21853  InFmt_VOP3 *iFmt)
21854  : Inst_VOP3(iFmt, "v_cmpx_t_u32", true)
21855  {
21856  setFlag(ALU);
21857  } // Inst_VOP3__V_CMPX_T_U32
21858 
21860  {
21861  } // ~Inst_VOP3__V_CMPX_T_U32
21862 
21863  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
21864  void
21866  {
21867  Wavefront *wf = gpuDynInst->wavefront();
21868  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21869 
21870  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21871  if (wf->execMask(lane)) {
21872  sdst.setBit(lane, 1);
21873  }
21874  }
21875 
21876  wf->execMask() = sdst.rawData();
21877  sdst.write();
21878  }
21879 
21881  : Inst_VOP3(iFmt, "v_cmp_f_i64", true)
21882  {
21883  setFlag(ALU);
21884  } // Inst_VOP3__V_CMP_F_I64
21885 
21887  {
21888  } // ~Inst_VOP3__V_CMP_F_I64
21889 
21890  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
21891  void
21893  {
21894  Wavefront *wf = gpuDynInst->wavefront();
21895  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21896 
21897  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21898  if (wf->execMask(lane)) {
21899  sdst.setBit(lane, 0);
21900  }
21901  }
21902 
21903  sdst.write();
21904  }
21905 
21907  InFmt_VOP3 *iFmt)
21908  : Inst_VOP3(iFmt, "v_cmp_lt_i64", true)
21909  {
21910  setFlag(ALU);
21911  } // Inst_VOP3__V_CMP_LT_I64
21912 
21914  {
21915  } // ~Inst_VOP3__V_CMP_LT_I64
21916 
21917  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
21918  void
21920  {
21921  Wavefront *wf = gpuDynInst->wavefront();
21922  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
21923  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
21924  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21925 
21926  src0.readSrc();
21927  src1.readSrc();
21928 
21932  assert(!(instData.ABS & 0x1));
21933  assert(!(instData.ABS & 0x2));
21934  assert(!(instData.ABS & 0x4));
21935  assert(!(extData.NEG & 0x1));
21936  assert(!(extData.NEG & 0x2));
21937  assert(!(extData.NEG & 0x4));
21938 
21939  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21940  if (wf->execMask(lane)) {
21941  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
21942  }
21943  }
21944 
21945  sdst.write();
21946  }
21947 
21949  InFmt_VOP3 *iFmt)
21950  : Inst_VOP3(iFmt, "v_cmp_eq_i64", true)
21951  {
21952  setFlag(ALU);
21953  } // Inst_VOP3__V_CMP_EQ_I64
21954 
21956  {
21957  } // ~Inst_VOP3__V_CMP_EQ_I64
21958 
21959  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
21960  void
21962  {
21963  Wavefront *wf = gpuDynInst->wavefront();
21964  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
21965  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
21966  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
21967 
21968  src0.readSrc();
21969  src1.readSrc();
21970 
21974  assert(!(instData.ABS & 0x1));
21975  assert(!(instData.ABS & 0x2));
21976  assert(!(instData.ABS & 0x4));
21977  assert(!(extData.NEG & 0x1));
21978  assert(!(extData.NEG & 0x2));
21979  assert(!(extData.NEG & 0x4));
21980 
21981  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
21982  if (wf->execMask(lane)) {
21983  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
21984  }
21985  }
21986 
21987  sdst.write();
21988  }
21989 
21991  InFmt_VOP3 *iFmt)
21992  : Inst_VOP3(iFmt, "v_cmp_le_i64", true)
21993  {
21994  setFlag(ALU);
21995  } // Inst_VOP3__V_CMP_LE_I64
21996 
21998  {
21999  } // ~Inst_VOP3__V_CMP_LE_I64
22000 
22001  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
22002  void
22004  {
22005  Wavefront *wf = gpuDynInst->wavefront();
22006  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
22007  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
22008  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22009 
22010  src0.readSrc();
22011  src1.readSrc();
22012 
22016  assert(!(instData.ABS & 0x1));
22017  assert(!(instData.ABS & 0x2));
22018  assert(!(instData.ABS & 0x4));
22019  assert(!(extData.NEG & 0x1));
22020  assert(!(extData.NEG & 0x2));
22021  assert(!(extData.NEG & 0x4));
22022 
22023  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22024  if (wf->execMask(lane)) {
22025  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
22026  }
22027  }
22028 
22029  sdst.write();
22030  }
22031 
22033  InFmt_VOP3 *iFmt)
22034  : Inst_VOP3(iFmt, "v_cmp_gt_i64", true)
22035  {
22036  setFlag(ALU);
22037  } // Inst_VOP3__V_CMP_GT_I64
22038 
22040  {
22041  } // ~Inst_VOP3__V_CMP_GT_I64
22042 
22043  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
22044  void
22046  {
22047  Wavefront *wf = gpuDynInst->wavefront();
22048  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
22049  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
22050  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22051 
22052  src0.readSrc();
22053  src1.readSrc();
22054 
22058  assert(!(instData.ABS & 0x1));
22059  assert(!(instData.ABS & 0x2));
22060  assert(!(instData.ABS & 0x4));
22061  assert(!(extData.NEG & 0x1));
22062  assert(!(extData.NEG & 0x2));
22063  assert(!(extData.NEG & 0x4));
22064 
22065  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22066  if (wf->execMask(lane)) {
22067  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
22068  }
22069  }
22070 
22071  sdst.write();
22072  }
22073 
22075  InFmt_VOP3 *iFmt)
22076  : Inst_VOP3(iFmt, "v_cmp_ne_i64", true)
22077  {
22078  setFlag(ALU);
22079  } // Inst_VOP3__V_CMP_NE_I64
22080 
22082  {
22083  } // ~Inst_VOP3__V_CMP_NE_I64
22084 
22085  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
22086  void
22088  {
22089  Wavefront *wf = gpuDynInst->wavefront();
22090  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
22091  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
22092  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22093 
22094  src0.readSrc();
22095  src1.readSrc();
22096 
22100  assert(!(instData.ABS & 0x1));
22101  assert(!(instData.ABS & 0x2));
22102  assert(!(instData.ABS & 0x4));
22103  assert(!(extData.NEG & 0x1));
22104  assert(!(extData.NEG & 0x2));
22105  assert(!(extData.NEG & 0x4));
22106 
22107  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22108  if (wf->execMask(lane)) {
22109  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
22110  }
22111  }
22112 
22113  sdst.write();
22114  }
22115 
22117  InFmt_VOP3 *iFmt)
22118  : Inst_VOP3(iFmt, "v_cmp_ge_i64", true)
22119  {
22120  setFlag(ALU);
22121  } // Inst_VOP3__V_CMP_GE_I64
22122 
22124  {
22125  } // ~Inst_VOP3__V_CMP_GE_I64
22126 
22127  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
22128  void
22130  {
22131  Wavefront *wf = gpuDynInst->wavefront();
22132  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
22133  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
22134  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22135 
22136  src0.readSrc();
22137  src1.readSrc();
22138 
22142  assert(!(instData.ABS & 0x1));
22143  assert(!(instData.ABS & 0x2));
22144  assert(!(instData.ABS & 0x4));
22145  assert(!(extData.NEG & 0x1));
22146  assert(!(extData.NEG & 0x2));
22147  assert(!(extData.NEG & 0x4));
22148 
22149  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22150  if (wf->execMask(lane)) {
22151  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
22152  }
22153  }
22154 
22155  sdst.write();
22156  }
22157 
22159  : Inst_VOP3(iFmt, "v_cmp_t_i64", true)
22160  {
22161  setFlag(ALU);
22162  } // Inst_VOP3__V_CMP_T_I64
22163 
22165  {
22166  } // ~Inst_VOP3__V_CMP_T_I64
22167 
22168  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
22169  void
22171  {
22172  Wavefront *wf = gpuDynInst->wavefront();
22173  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22174 
22175  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22176  if (wf->execMask(lane)) {
22177  sdst.setBit(lane, 1);
22178  }
22179  }
22180 
22181  sdst.write();
22182  }
22183 
22185  : Inst_VOP3(iFmt, "v_cmp_f_u64", true)
22186  {
22187  setFlag(ALU);
22188  } // Inst_VOP3__V_CMP_F_U64
22189 
22191  {
22192  } // ~Inst_VOP3__V_CMP_F_U64
22193 
22194  // D.u64[threadID] = 0; D = VCC in VOPC encoding.
22195  void
22197  {
22198  Wavefront *wf = gpuDynInst->wavefront();
22199  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22200 
22201  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22202  if (wf->execMask(lane)) {
22203  sdst.setBit(lane, 0);
22204  }
22205  }
22206 
22207  sdst.write();
22208  }
22209 
22211  InFmt_VOP3 *iFmt)
22212  : Inst_VOP3(iFmt, "v_cmp_lt_u64", true)
22213  {
22214  setFlag(ALU);
22215  } // Inst_VOP3__V_CMP_LT_U64
22216 
22218  {
22219  } // ~Inst_VOP3__V_CMP_LT_U64
22220 
22221  // D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
22222  void
22224  {
22225  Wavefront *wf = gpuDynInst->wavefront();
22226  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22227  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
22228  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22229 
22230  src0.readSrc();
22231  src1.readSrc();
22232 
22236  assert(!(instData.ABS & 0x1));
22237  assert(!(instData.ABS & 0x2));
22238  assert(!(instData.ABS & 0x4));
22239  assert(!(extData.NEG & 0x1));
22240  assert(!(extData.NEG & 0x2));
22241  assert(!(extData.NEG & 0x4));
22242 
22243  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22244  if (wf->execMask(lane)) {
22245  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
22246  }
22247  }
22248 
22249  sdst.write();
22250  }
22251 
22253  InFmt_VOP3 *iFmt)
22254  : Inst_VOP3(iFmt, "v_cmp_eq_u64", true)
22255  {
22256  setFlag(ALU);
22257  } // Inst_VOP3__V_CMP_EQ_U64
22258 
22260  {
22261  } // ~Inst_VOP3__V_CMP_EQ_U64
22262 
22263  // D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
22264  void
22266  {
22267  Wavefront *wf = gpuDynInst->wavefront();
22268  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22269  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
22270  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22271 
22272  src0.readSrc();
22273  src1.readSrc();
22274 
22278  assert(!(instData.ABS & 0x1));
22279  assert(!(instData.ABS & 0x2));
22280  assert(!(instData.ABS & 0x4));
22281  assert(!(extData.NEG & 0x1));
22282  assert(!(extData.NEG & 0x2));
22283  assert(!(extData.NEG & 0x4));
22284 
22285  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22286  if (wf->execMask(lane)) {
22287  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
22288  }
22289  }
22290 
22291  sdst.write();
22292  }
22293 
22295  InFmt_VOP3 *iFmt)
22296  : Inst_VOP3(iFmt, "v_cmp_le_u64", true)
22297  {
22298  setFlag(ALU);
22299  } // Inst_VOP3__V_CMP_LE_U64
22300 
22302  {
22303  } // ~Inst_VOP3__V_CMP_LE_U64
22304 
22305  // D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
22306  void
22308  {
22309  Wavefront *wf = gpuDynInst->wavefront();
22310  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22311  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
22312  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22313 
22314  src0.readSrc();
22315  src1.readSrc();
22316 
22320  assert(!(instData.ABS & 0x1));
22321  assert(!(instData.ABS & 0x2));
22322  assert(!(instData.ABS & 0x4));
22323  assert(!(extData.NEG & 0x1));
22324  assert(!(extData.NEG & 0x2));
22325  assert(!(extData.NEG & 0x4));
22326 
22327  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22328  if (wf->execMask(lane)) {
22329  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
22330  }
22331  }
22332 
22333  sdst.write();
22334  }
22335 
22337  InFmt_VOP3 *iFmt)
22338  : Inst_VOP3(iFmt, "v_cmp_gt_u64", true)
22339  {
22340  setFlag(ALU);
22341  } // Inst_VOP3__V_CMP_GT_U64
22342 
22344  {
22345  } // ~Inst_VOP3__V_CMP_GT_U64
22346 
22347  // D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
22348  void
22350  {
22351  Wavefront *wf = gpuDynInst->wavefront();
22352  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22353  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
22354  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22355 
22356  src0.readSrc();
22357  src1.readSrc();
22358 
22362  assert(!(instData.ABS & 0x1));
22363  assert(!(instData.ABS & 0x2));
22364  assert(!(instData.ABS & 0x4));
22365  assert(!(extData.NEG & 0x1));
22366  assert(!(extData.NEG & 0x2));
22367  assert(!(extData.NEG & 0x4));
22368 
22369  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22370  if (wf->execMask(lane)) {
22371  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
22372  }
22373  }
22374 
22375  sdst.write();
22376  }
22377 
22379  InFmt_VOP3 *iFmt)
22380  : Inst_VOP3(iFmt, "v_cmp_ne_u64", true)
22381  {
22382  setFlag(ALU);
22383  } // Inst_VOP3__V_CMP_NE_U64
22384 
22386  {
22387  } // ~Inst_VOP3__V_CMP_NE_U64
22388 
22389  // D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
22390  void
22392  {
22393  Wavefront *wf = gpuDynInst->wavefront();
22394  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22395  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
22396  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22397 
22398  src0.readSrc();
22399  src1.readSrc();
22400 
22404  assert(!(instData.ABS & 0x1));
22405  assert(!(instData.ABS & 0x2));
22406  assert(!(instData.ABS & 0x4));
22407  assert(!(extData.NEG & 0x1));
22408  assert(!(extData.NEG & 0x2));
22409  assert(!(extData.NEG & 0x4));
22410 
22411  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22412  if (wf->execMask(lane)) {
22413  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
22414  }
22415  }
22416 
22417  sdst.write();
22418  }
22419 
22421  InFmt_VOP3 *iFmt)
22422  : Inst_VOP3(iFmt, "v_cmp_ge_u64", true)
22423  {
22424  setFlag(ALU);
22425  } // Inst_VOP3__V_CMP_GE_U64
22426 
22428  {
22429  } // ~Inst_VOP3__V_CMP_GE_U64
22430 
22431  // D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
22432  void
22434  {
22435  Wavefront *wf = gpuDynInst->wavefront();
22436  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22437  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
22438  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22439 
22440  src0.readSrc();
22441  src1.readSrc();
22442 
22446  assert(!(instData.ABS & 0x1));
22447  assert(!(instData.ABS & 0x2));
22448  assert(!(instData.ABS & 0x4));
22449  assert(!(extData.NEG & 0x1));
22450  assert(!(extData.NEG & 0x2));
22451  assert(!(extData.NEG & 0x4));
22452 
22453  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22454  if (wf->execMask(lane)) {
22455  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
22456  }
22457  }
22458 
22459  sdst.write();
22460  }
22461 
22463  : Inst_VOP3(iFmt, "v_cmp_t_u64", true)
22464  {
22465  setFlag(ALU);
22466  } // Inst_VOP3__V_CMP_T_U64
22467 
22469  {
22470  } // ~Inst_VOP3__V_CMP_T_U64
22471 
22472  // D.u64[threadID] = 1; D = VCC in VOPC encoding.
22473  void
22475  {
22476  Wavefront *wf = gpuDynInst->wavefront();
22477  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22478 
22479  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22480  if (wf->execMask(lane)) {
22481  sdst.setBit(lane, 1);
22482  }
22483  }
22484 
22485  sdst.write();
22486  }
22487 
22489  InFmt_VOP3 *iFmt)
22490  : Inst_VOP3(iFmt, "v_cmpx_f_i64", true)
22491  {
22492  setFlag(ALU);
22493  } // Inst_VOP3__V_CMPX_F_I64
22494 
22496  {
22497  } // ~Inst_VOP3__V_CMPX_F_I64
22498 
22499  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
22500  void
22502  {
22503  Wavefront *wf = gpuDynInst->wavefront();
22504  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22505 
22506  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22507  if (wf->execMask(lane)) {
22508  sdst.setBit(lane, 0);
22509  }
22510  }
22511 
22512  wf->execMask() = sdst.rawData();
22513  sdst.write();
22514  }
22515 
22517  InFmt_VOP3 *iFmt)
22518  : Inst_VOP3(iFmt, "v_cmpx_lt_i64", true)
22519  {
22520  setFlag(ALU);
22521  } // Inst_VOP3__V_CMPX_LT_I64
22522 
22524  {
22525  } // ~Inst_VOP3__V_CMPX_LT_I64
22526 
22527  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
22528  void
22530  {
22531  Wavefront *wf = gpuDynInst->wavefront();
22532  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
22533  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
22534  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22535 
22536  src0.readSrc();
22537  src1.readSrc();
22538 
22542  assert(!(instData.ABS & 0x1));
22543  assert(!(instData.ABS & 0x2));
22544  assert(!(instData.ABS & 0x4));
22545  assert(!(extData.NEG & 0x1));
22546  assert(!(extData.NEG & 0x2));
22547  assert(!(extData.NEG & 0x4));
22548 
22549  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22550  if (wf->execMask(lane)) {
22551  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
22552  }
22553  }
22554 
22555  wf->execMask() = sdst.rawData();
22556  sdst.write();
22557  }
22558 
22560  InFmt_VOP3 *iFmt)
22561  : Inst_VOP3(iFmt, "v_cmpx_eq_i64", true)
22562  {
22563  setFlag(ALU);
22564  } // Inst_VOP3__V_CMPX_EQ_I64
22565 
22567  {
22568  } // ~Inst_VOP3__V_CMPX_EQ_I64
22569 
22570  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
22571  void
22573  {
22574  Wavefront *wf = gpuDynInst->wavefront();
22575  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
22576  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
22577  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22578 
22579  src0.readSrc();
22580  src1.readSrc();
22581 
22585  assert(!(instData.ABS & 0x1));
22586  assert(!(instData.ABS & 0x2));
22587  assert(!(instData.ABS & 0x4));
22588  assert(!(extData.NEG & 0x1));
22589  assert(!(extData.NEG & 0x2));
22590  assert(!(extData.NEG & 0x4));
22591 
22592  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22593  if (wf->execMask(lane)) {
22594  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
22595  }
22596  }
22597 
22598  wf->execMask() = sdst.rawData();
22599  sdst.write();
22600  }
22601 
22603  InFmt_VOP3 *iFmt)
22604  : Inst_VOP3(iFmt, "v_cmpx_le_i64", true)
22605  {
22606  setFlag(ALU);
22607  } // Inst_VOP3__V_CMPX_LE_I64
22608 
22610  {
22611  } // ~Inst_VOP3__V_CMPX_LE_I64
22612 
22613  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
22614  void
22616  {
22617  Wavefront *wf = gpuDynInst->wavefront();
22618  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
22619  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
22620  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22621 
22622  src0.readSrc();
22623  src1.readSrc();
22624 
22628  assert(!(instData.ABS & 0x1));
22629  assert(!(instData.ABS & 0x2));
22630  assert(!(instData.ABS & 0x4));
22631  assert(!(extData.NEG & 0x1));
22632  assert(!(extData.NEG & 0x2));
22633  assert(!(extData.NEG & 0x4));
22634 
22635  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22636  if (wf->execMask(lane)) {
22637  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
22638  }
22639  }
22640 
22641  wf->execMask() = sdst.rawData();
22642  sdst.write();
22643  }
22644 
22646  InFmt_VOP3 *iFmt)
22647  : Inst_VOP3(iFmt, "v_cmpx_gt_i64", true)
22648  {
22649  setFlag(ALU);
22650  } // Inst_VOP3__V_CMPX_GT_I64
22651 
22653  {
22654  } // ~Inst_VOP3__V_CMPX_GT_I64
22655 
22656  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
22657  void
22659  {
22660  Wavefront *wf = gpuDynInst->wavefront();
22661  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
22662  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
22663  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22664 
22665  src0.readSrc();
22666  src1.readSrc();
22667 
22671  assert(!(instData.ABS & 0x1));
22672  assert(!(instData.ABS & 0x2));
22673  assert(!(instData.ABS & 0x4));
22674  assert(!(extData.NEG & 0x1));
22675  assert(!(extData.NEG & 0x2));
22676  assert(!(extData.NEG & 0x4));
22677 
22678  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22679  if (wf->execMask(lane)) {
22680  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
22681  }
22682  }
22683 
22684  wf->execMask() = sdst.rawData();
22685  sdst.write();
22686  }
22687 
22689  InFmt_VOP3 *iFmt)
22690  : Inst_VOP3(iFmt, "v_cmpx_ne_i64", true)
22691  {
22692  setFlag(ALU);
22693  } // Inst_VOP3__V_CMPX_NE_I64
22694 
22696  {
22697  } // ~Inst_VOP3__V_CMPX_NE_I64
22698 
22699  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
22700  void
22702  {
22703  Wavefront *wf = gpuDynInst->wavefront();
22704  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
22705  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
22706  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22707 
22708  src0.readSrc();
22709  src1.readSrc();
22710 
22714  assert(!(instData.ABS & 0x1));
22715  assert(!(instData.ABS & 0x2));
22716  assert(!(instData.ABS & 0x4));
22717  assert(!(extData.NEG & 0x1));
22718  assert(!(extData.NEG & 0x2));
22719  assert(!(extData.NEG & 0x4));
22720 
22721  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22722  if (wf->execMask(lane)) {
22723  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
22724  }
22725  }
22726 
22727  wf->execMask() = sdst.rawData();
22728  sdst.write();
22729  }
22730 
22732  InFmt_VOP3 *iFmt)
22733  : Inst_VOP3(iFmt, "v_cmpx_ge_i64", true)
22734  {
22735  setFlag(ALU);
22736  } // Inst_VOP3__V_CMPX_GE_I64
22737 
22739  {
22740  } // ~Inst_VOP3__V_CMPX_GE_I64
22741 
22742  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
22743  void
22745  {
22746  Wavefront *wf = gpuDynInst->wavefront();
22747  ConstVecOperandI64 src0(gpuDynInst, extData.SRC0);
22748  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
22749  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22750 
22751  src0.readSrc();
22752  src1.readSrc();
22753 
22757  assert(!(instData.ABS & 0x1));
22758  assert(!(instData.ABS & 0x2));
22759  assert(!(instData.ABS & 0x4));
22760  assert(!(extData.NEG & 0x1));
22761  assert(!(extData.NEG & 0x2));
22762  assert(!(extData.NEG & 0x4));
22763 
22764  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22765  if (wf->execMask(lane)) {
22766  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
22767  }
22768  }
22769 
22770  wf->execMask() = sdst.rawData();
22771  sdst.write();
22772  }
22773 
22775  InFmt_VOP3 *iFmt)
22776  : Inst_VOP3(iFmt, "v_cmpx_t_i64", true)
22777  {
22778  setFlag(ALU);
22779  } // Inst_VOP3__V_CMPX_T_I64
22780 
22782  {
22783  } // ~Inst_VOP3__V_CMPX_T_I64
22784 
22785  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
22786  void
22788  {
22789  Wavefront *wf = gpuDynInst->wavefront();
22790  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22791 
22792  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22793  if (wf->execMask(lane)) {
22794  sdst.setBit(lane, 1);
22795  }
22796  }
22797 
22798  wf->execMask() = sdst.rawData();
22799  sdst.write();
22800  }
22801 
22803  InFmt_VOP3 *iFmt)
22804  : Inst_VOP3(iFmt, "v_cmpx_f_u64", true)
22805  {
22806  setFlag(ALU);
22807  } // Inst_VOP3__V_CMPX_F_U64
22808 
22810  {
22811  } // ~Inst_VOP3__V_CMPX_F_U64
22812 
22813  // EXEC,D.u64[threadID] = 0; D = VCC in VOPC encoding.
22814  void
22816  {
22817  Wavefront *wf = gpuDynInst->wavefront();
22818  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22819 
22820  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22821  if (wf->execMask(lane)) {
22822  sdst.setBit(lane, 0);
22823  }
22824  }
22825 
22826  wf->execMask() = sdst.rawData();
22827  sdst.write();
22828  }
22829 
22831  InFmt_VOP3 *iFmt)
22832  : Inst_VOP3(iFmt, "v_cmpx_lt_u64", true)
22833  {
22834  setFlag(ALU);
22835  } // Inst_VOP3__V_CMPX_LT_U64
22836 
22838  {
22839  } // ~Inst_VOP3__V_CMPX_LT_U64
22840 
22841  // EXEC,D.u64[threadID] = (S0 < S1); D = VCC in VOPC encoding.
22842  void
22844  {
22845  Wavefront *wf = gpuDynInst->wavefront();
22846  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22847  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
22848  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22849 
22850  src0.readSrc();
22851  src1.readSrc();
22852 
22856  assert(!(instData.ABS & 0x1));
22857  assert(!(instData.ABS & 0x2));
22858  assert(!(instData.ABS & 0x4));
22859  assert(!(extData.NEG & 0x1));
22860  assert(!(extData.NEG & 0x2));
22861  assert(!(extData.NEG & 0x4));
22862 
22863  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22864  if (wf->execMask(lane)) {
22865  sdst.setBit(lane, src0[lane] < src1[lane] ? 1 : 0);
22866  }
22867  }
22868 
22869  wf->execMask() = sdst.rawData();
22870  sdst.write();
22871  }
22872 
22874  InFmt_VOP3 *iFmt)
22875  : Inst_VOP3(iFmt, "v_cmpx_eq_u64", true)
22876  {
22877  setFlag(ALU);
22878  } // Inst_VOP3__V_CMPX_EQ_U64
22879 
22881  {
22882  } // ~Inst_VOP3__V_CMPX_EQ_U64
22883 
22884  // EXEC,D.u64[threadID] = (S0 == S1); D = VCC in VOPC encoding.
22885  void
22887  {
22888  Wavefront *wf = gpuDynInst->wavefront();
22889  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22890  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
22891  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22892 
22893  src0.readSrc();
22894  src1.readSrc();
22895 
22899  assert(!(instData.ABS & 0x1));
22900  assert(!(instData.ABS & 0x2));
22901  assert(!(instData.ABS & 0x4));
22902  assert(!(extData.NEG & 0x1));
22903  assert(!(extData.NEG & 0x2));
22904  assert(!(extData.NEG & 0x4));
22905 
22906  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22907  if (wf->execMask(lane)) {
22908  sdst.setBit(lane, src0[lane] == src1[lane] ? 1 : 0);
22909  }
22910  }
22911 
22912  wf->execMask() = sdst.rawData();
22913  sdst.write();
22914  }
22915 
22917  InFmt_VOP3 *iFmt)
22918  : Inst_VOP3(iFmt, "v_cmpx_le_u64", true)
22919  {
22920  setFlag(ALU);
22921  } // Inst_VOP3__V_CMPX_LE_U64
22922 
22924  {
22925  } // ~Inst_VOP3__V_CMPX_LE_U64
22926 
22927  // EXEC,D.u64[threadID] = (S0 <= S1); D = VCC in VOPC encoding.
22928  void
22930  {
22931  Wavefront *wf = gpuDynInst->wavefront();
22932  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22933  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
22934  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22935 
22936  src0.readSrc();
22937  src1.readSrc();
22938 
22942  assert(!(instData.ABS & 0x1));
22943  assert(!(instData.ABS & 0x2));
22944  assert(!(instData.ABS & 0x4));
22945  assert(!(extData.NEG & 0x1));
22946  assert(!(extData.NEG & 0x2));
22947  assert(!(extData.NEG & 0x4));
22948 
22949  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22950  if (wf->execMask(lane)) {
22951  sdst.setBit(lane, src0[lane] <= src1[lane] ? 1 : 0);
22952  }
22953  }
22954 
22955  wf->execMask() = sdst.rawData();
22956  sdst.write();
22957  }
22958 
22960  InFmt_VOP3 *iFmt)
22961  : Inst_VOP3(iFmt, "v_cmpx_gt_u64", true)
22962  {
22963  setFlag(ALU);
22964  } // Inst_VOP3__V_CMPX_GT_U64
22965 
22967  {
22968  } // ~Inst_VOP3__V_CMPX_GT_U64
22969 
22970  // EXEC,D.u64[threadID] = (S0 > S1); D = VCC in VOPC encoding.
22971  void
22973  {
22974  Wavefront *wf = gpuDynInst->wavefront();
22975  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
22976  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
22977  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
22978 
22979  src0.readSrc();
22980  src1.readSrc();
22981 
22985  assert(!(instData.ABS & 0x1));
22986  assert(!(instData.ABS & 0x2));
22987  assert(!(instData.ABS & 0x4));
22988  assert(!(extData.NEG & 0x1));
22989  assert(!(extData.NEG & 0x2));
22990  assert(!(extData.NEG & 0x4));
22991 
22992  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
22993  if (wf->execMask(lane)) {
22994  sdst.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
22995  }
22996  }
22997 
22998  wf->execMask() = sdst.rawData();
22999  sdst.write();
23000  }
23001 
23003  InFmt_VOP3 *iFmt)
23004  : Inst_VOP3(iFmt, "v_cmpx_ne_u64", true)
23005  {
23006  setFlag(ALU);
23007  } // Inst_VOP3__V_CMPX_NE_U64
23008 
23010  {
23011  } // ~Inst_VOP3__V_CMPX_NE_U64
23012 
23013  // EXEC,D.u64[threadID] = (S0 <> S1); D = VCC in VOPC encoding.
23014  void
23016  {
23017  Wavefront *wf = gpuDynInst->wavefront();
23018  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
23019  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
23020  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23021 
23022  src0.readSrc();
23023  src1.readSrc();
23024 
23028  assert(!(instData.ABS & 0x1));
23029  assert(!(instData.ABS & 0x2));
23030  assert(!(instData.ABS & 0x4));
23031  assert(!(extData.NEG & 0x1));
23032  assert(!(extData.NEG & 0x2));
23033  assert(!(extData.NEG & 0x4));
23034 
23035  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23036  if (wf->execMask(lane)) {
23037  sdst.setBit(lane, src0[lane] != src1[lane] ? 1 : 0);
23038  }
23039  }
23040 
23041  wf->execMask() = sdst.rawData();
23042  sdst.write();
23043  }
23044 
23046  InFmt_VOP3 *iFmt)
23047  : Inst_VOP3(iFmt, "v_cmpx_ge_u64", true)
23048  {
23049  setFlag(ALU);
23050  } // Inst_VOP3__V_CMPX_GE_U64
23051 
23053  {
23054  } // ~Inst_VOP3__V_CMPX_GE_U64
23055 
23056  // EXEC,D.u64[threadID] = (S0 >= S1); D = VCC in VOPC encoding.
23057  void
23059  {
23060  Wavefront *wf = gpuDynInst->wavefront();
23061  ConstVecOperandU64 src0(gpuDynInst, extData.SRC0);
23062  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
23063  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23064 
23065  src0.readSrc();
23066  src1.readSrc();
23067 
23071  assert(!(instData.ABS & 0x1));
23072  assert(!(instData.ABS & 0x2));
23073  assert(!(instData.ABS & 0x4));
23074  assert(!(extData.NEG & 0x1));
23075  assert(!(extData.NEG & 0x2));
23076  assert(!(extData.NEG & 0x4));
23077 
23078  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23079  if (wf->execMask(lane)) {
23080  sdst.setBit(lane, src0[lane] >= src1[lane] ? 1 : 0);
23081  }
23082  }
23083 
23084  wf->execMask() = sdst.rawData();
23085  sdst.write();
23086  }
23087 
23089  InFmt_VOP3 *iFmt)
23090  : Inst_VOP3(iFmt, "v_cmpx_t_u64", true)
23091  {
23092  setFlag(ALU);
23093  } // Inst_VOP3__V_CMPX_T_U64
23094 
23096  {
23097  } // ~Inst_VOP3__V_CMPX_T_U64
23098 
23099  // EXEC,D.u64[threadID] = 1; D = VCC in VOPC encoding.
23100  void
23102  {
23103  Wavefront *wf = gpuDynInst->wavefront();
23104  ScalarOperandU64 sdst(gpuDynInst, instData.VDST);
23105 
23109  assert(!(instData.ABS & 0x1));
23110  assert(!(instData.ABS & 0x2));
23111  assert(!(instData.ABS & 0x4));
23112  assert(!(extData.NEG & 0x1));
23113  assert(!(extData.NEG & 0x2));
23114  assert(!(extData.NEG & 0x4));
23115 
23116  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23117  if (wf->execMask(lane)) {
23118  sdst.setBit(lane, 1);
23119  }
23120  }
23121 
23122  wf->execMask() = sdst.rawData();
23123  sdst.write();
23124  }
23125 
23127  : Inst_VOP3(iFmt, "v_cndmask_b32", false)
23128  {
23129  setFlag(ALU);
23130  setFlag(ReadsVCC);
23131  } // Inst_VOP3__V_CNDMASK_B32
23132 
23134  {
23135  } // ~Inst_VOP3__V_CNDMASK_B32
23136 
23137  // D.u = (VCC[i] ? S1.u : S0.u) (i = threadID in wave); VOP3: specify VCC
23138  // as a scalar GPR in S2.
23139  void
23141  {
23142  Wavefront *wf = gpuDynInst->wavefront();
23143  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23144  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23145  ConstScalarOperandU64 vcc(gpuDynInst, extData.SRC2);
23146  VecOperandU32 vdst(gpuDynInst, instData.VDST);
23147 
23148  src0.readSrc();
23149  src1.readSrc();
23150  vcc.read();
23151 
23155  assert(!(instData.ABS & 0x1));
23156  assert(!(instData.ABS & 0x2));
23157  assert(!(instData.ABS & 0x4));
23158  assert(!(extData.NEG & 0x1));
23159  assert(!(extData.NEG & 0x2));
23160  assert(!(extData.NEG & 0x4));
23161 
23162  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23163  if (wf->execMask(lane)) {
23164  vdst[lane] = bits(vcc.rawData(), lane)
23165  ? src1[lane] : src0[lane];
23166  }
23167  }
23168 
23169  vdst.write();
23170  }
23171 
23173  : Inst_VOP3(iFmt, "v_add_f32", false)
23174  {
23175  setFlag(ALU);
23176  setFlag(F32);
23177  } // Inst_VOP3__V_ADD_F32
23178 
23180  {
23181  } // ~Inst_VOP3__V_ADD_F32
23182 
23183  // D.f = S0.f + S1.f.
23184  void
23186  {
23187  Wavefront *wf = gpuDynInst->wavefront();
23188  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
23189  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
23190  VecOperandF32 vdst(gpuDynInst, instData.VDST);
23191 
23192  src0.readSrc();
23193  src1.readSrc();
23194 
23195  if (instData.ABS & 0x1) {
23196  src0.absModifier();
23197  }
23198 
23199  if (instData.ABS & 0x2) {
23200  src1.absModifier();
23201  }
23202 
23203  if (extData.NEG & 0x1) {
23204  src0.negModifier();
23205  }
23206 
23207  if (extData.NEG & 0x2) {
23208  src1.negModifier();
23209  }
23210 
23214  assert(!(instData.ABS & 0x4));
23215  assert(!(extData.NEG & 0x4));
23216 
23217  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23218  if (wf->execMask(lane)) {
23219  vdst[lane] = src0[lane] + src1[lane];
23220  }
23221  }
23222 
23223  vdst.write();
23224  }
23225 
23227  : Inst_VOP3(iFmt, "v_sub_f32", false)
23228  {
23229  setFlag(ALU);
23230  setFlag(F32);
23231  } // Inst_VOP3__V_SUB_F32
23232 
23234  {
23235  } // ~Inst_VOP3__V_SUB_F32
23236 
23237  // D.f = S0.f - S1.f.
23238  void
23240  {
23241  Wavefront *wf = gpuDynInst->wavefront();
23242  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
23243  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
23244  VecOperandF32 vdst(gpuDynInst, instData.VDST);
23245 
23246  src0.readSrc();
23247  src1.readSrc();
23248 
23249  if (instData.ABS & 0x1) {
23250  src0.absModifier();
23251  }
23252 
23253  if (instData.ABS & 0x2) {
23254  src1.absModifier();
23255  }
23256 
23257  if (extData.NEG & 0x1) {
23258  src0.negModifier();
23259  }
23260 
23261  if (extData.NEG & 0x2) {
23262  src1.negModifier();
23263  }
23264 
23268  assert(!(instData.ABS & 0x4));
23269  assert(!(extData.NEG & 0x4));
23270 
23271  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23272  if (wf->execMask(lane)) {
23273  vdst[lane] = src0[lane] - src1[lane];
23274  }
23275  }
23276 
23277  vdst.write();
23278  }
23279 
23281  : Inst_VOP3(iFmt, "v_subrev_f32", false)
23282  {
23283  setFlag(ALU);
23284  setFlag(F32);
23285  } // Inst_VOP3__V_SUBREV_F32
23286 
23288  {
23289  } // ~Inst_VOP3__V_SUBREV_F32
23290 
23291  // D.f = S1.f - S0.f.
23292  void
23294  {
23295  Wavefront *wf = gpuDynInst->wavefront();
23296  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
23297  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
23298  VecOperandF32 vdst(gpuDynInst, instData.VDST);
23299 
23300  src0.readSrc();
23301  src1.readSrc();
23302 
23303  if (instData.ABS & 0x1) {
23304  src0.absModifier();
23305  }
23306 
23307  if (instData.ABS & 0x2) {
23308  src1.absModifier();
23309  }
23310 
23311  if (extData.NEG & 0x1) {
23312  src0.negModifier();
23313  }
23314 
23315  if (extData.NEG & 0x2) {
23316  src1.negModifier();
23317  }
23318 
23322  assert(!(instData.ABS & 0x4));
23323  assert(!(extData.NEG & 0x4));
23324 
23325  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23326  if (wf->execMask(lane)) {
23327  vdst[lane] = src1[lane] - src0[lane];
23328  }
23329  }
23330 
23331  vdst.write();
23332  }
23333 
23335  : Inst_VOP3(iFmt, "v_mul_legacy_f32", false)
23336  {
23337  setFlag(ALU);
23338  setFlag(F32);
23339  } // Inst_VOP3__V_MUL_LEGACY_F32
23340 
23342  {
23343  } // ~Inst_VOP3__V_MUL_LEGACY_F32
23344 
23345  // D.f = S0.f * S1.f
23346  void
23348  {
23349  Wavefront *wf = gpuDynInst->wavefront();
23350  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
23351  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
23352  VecOperandF32 vdst(gpuDynInst, instData.VDST);
23353 
23354  src0.readSrc();
23355  src1.readSrc();
23356 
23357  if (instData.ABS & 0x1) {
23358  src0.absModifier();
23359  }
23360 
23361  if (instData.ABS & 0x2) {
23362  src1.absModifier();
23363  }
23364 
23365  if (extData.NEG & 0x1) {
23366  src0.negModifier();
23367  }
23368 
23369  if (extData.NEG & 0x2) {
23370  src1.negModifier();
23371  }
23372 
23376  assert(!(instData.ABS & 0x4));
23377  assert(!(extData.NEG & 0x4));
23378 
23379  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23380  if (wf->execMask(lane)) {
23381  if (std::isnan(src0[lane]) ||
23382  std::isnan(src1[lane])) {
23383  vdst[lane] = NAN;
23384  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
23385  std::fpclassify(src0[lane]) == FP_ZERO) &&
23386  !std::signbit(src0[lane])) {
23387  if (std::isinf(src1[lane])) {
23388  vdst[lane] = NAN;
23389  } else if (!std::signbit(src1[lane])) {
23390  vdst[lane] = +0.0;
23391  } else {
23392  vdst[lane] = -0.0;
23393  }
23394  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
23395  std::fpclassify(src0[lane]) == FP_ZERO) &&
23396  std::signbit(src0[lane])) {
23397  if (std::isinf(src1[lane])) {
23398  vdst[lane] = NAN;
23399  } else if (std::signbit(src1[lane])) {
23400  vdst[lane] = +0.0;
23401  } else {
23402  vdst[lane] = -0.0;
23403  }
23404  } else if (std::isinf(src0[lane]) &&
23405  !std::signbit(src0[lane])) {
23406  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
23407  std::fpclassify(src1[lane]) == FP_ZERO) {
23408  vdst[lane] = NAN;
23409  } else if (!std::signbit(src1[lane])) {
23410  vdst[lane] = +INFINITY;
23411  } else {
23412  vdst[lane] = -INFINITY;
23413  }
23414  } else if (std::isinf(src0[lane]) &&
23415  std::signbit(src0[lane])) {
23416  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
23417  std::fpclassify(src1[lane]) == FP_ZERO) {
23418  vdst[lane] = NAN;
23419  } else if (std::signbit(src1[lane])) {
23420  vdst[lane] = +INFINITY;
23421  } else {
23422  vdst[lane] = -INFINITY;
23423  }
23424  } else {
23425  vdst[lane] = src0[lane] * src1[lane];
23426  }
23427  }
23428  }
23429 
23430  vdst.write();
23431  }
23432 
23434  : Inst_VOP3(iFmt, "v_mul_f32", false)
23435  {
23436  setFlag(ALU);
23437  setFlag(F32);
23438  } // Inst_VOP3__V_MUL_F32
23439 
23441  {
23442  } // ~Inst_VOP3__V_MUL_F32
23443 
23444  // D.f = S0.f * S1.f.
23445  void
23447  {
23448  Wavefront *wf = gpuDynInst->wavefront();
23449  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
23450  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
23451  VecOperandF32 vdst(gpuDynInst, instData.VDST);
23452 
23453  src0.readSrc();
23454  src1.readSrc();
23455 
23456  if (instData.ABS & 0x1) {
23457  src0.absModifier();
23458  }
23459 
23460  if (instData.ABS & 0x2) {
23461  src1.absModifier();
23462  }
23463 
23464  if (extData.NEG & 0x1) {
23465  src0.negModifier();
23466  }
23467 
23468  if (extData.NEG & 0x2) {
23469  src1.negModifier();
23470  }
23471 
23475  assert(!(instData.ABS & 0x4));
23476  assert(!(extData.NEG & 0x4));
23477 
23478  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23479  if (wf->execMask(lane)) {
23480  if (std::isnan(src0[lane]) ||
23481  std::isnan(src1[lane])) {
23482  vdst[lane] = NAN;
23483  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
23484  std::fpclassify(src0[lane]) == FP_ZERO) &&
23485  !std::signbit(src0[lane])) {
23486  if (std::isinf(src1[lane])) {
23487  vdst[lane] = NAN;
23488  } else if (!std::signbit(src1[lane])) {
23489  vdst[lane] = +0.0;
23490  } else {
23491  vdst[lane] = -0.0;
23492  }
23493  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
23494  std::fpclassify(src0[lane]) == FP_ZERO) &&
23495  std::signbit(src0[lane])) {
23496  if (std::isinf(src1[lane])) {
23497  vdst[lane] = NAN;
23498  } else if (std::signbit(src1[lane])) {
23499  vdst[lane] = +0.0;
23500  } else {
23501  vdst[lane] = -0.0;
23502  }
23503  } else if (std::isinf(src0[lane]) &&
23504  !std::signbit(src0[lane])) {
23505  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
23506  std::fpclassify(src1[lane]) == FP_ZERO) {
23507  vdst[lane] = NAN;
23508  } else if (!std::signbit(src1[lane])) {
23509  vdst[lane] = +INFINITY;
23510  } else {
23511  vdst[lane] = -INFINITY;
23512  }
23513  } else if (std::isinf(src0[lane]) &&
23514  std::signbit(src0[lane])) {
23515  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
23516  std::fpclassify(src1[lane]) == FP_ZERO) {
23517  vdst[lane] = NAN;
23518  } else if (std::signbit(src1[lane])) {
23519  vdst[lane] = +INFINITY;
23520  } else {
23521  vdst[lane] = -INFINITY;
23522  }
23523  } else {
23524  vdst[lane] = src0[lane] * src1[lane];
23525  }
23526  }
23527  }
23528 
23529  vdst.write();
23530  }
23531 
23533  : Inst_VOP3(iFmt, "v_mul_i32_i24", false)
23534  {
23535  setFlag(ALU);
23536  } // Inst_VOP3__V_MUL_I32_I24
23537 
23539  {
23540  } // ~Inst_VOP3__V_MUL_I32_I24
23541 
23542  // D.i = S0.i[23:0] * S1.i[23:0].
23543  void
23545  {
23546  Wavefront *wf = gpuDynInst->wavefront();
23547  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
23548  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
23549  VecOperandI32 vdst(gpuDynInst, instData.VDST);
23550 
23551  src0.readSrc();
23552  src1.read();
23553 
23557  assert(!(instData.ABS & 0x1));
23558  assert(!(instData.ABS & 0x2));
23559  assert(!(instData.ABS & 0x4));
23560  assert(!(extData.NEG & 0x1));
23561  assert(!(extData.NEG & 0x2));
23562  assert(!(extData.NEG & 0x4));
23563 
23564  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23565  if (wf->execMask(lane)) {
23566  vdst[lane] = sext<24>(bits(src0[lane], 23, 0))
23567  * sext<24>(bits(src1[lane], 23, 0));
23568  }
23569  }
23570 
23571  vdst.write();
23572  }
23573 
23575  : Inst_VOP3(iFmt, "v_mul_hi_i32_i24", false)
23576  {
23577  setFlag(ALU);
23578  } // Inst_VOP3__V_MUL_HI_I32_I24
23579 
23581  {
23582  } // ~Inst_VOP3__V_MUL_HI_I32_I24
23583 
23584  // D.i = (S0.i[23:0] * S1.i[23:0]) >> 32.
23585  void
23587  {
23588  Wavefront *wf = gpuDynInst->wavefront();
23589  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
23590  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
23591  VecOperandI32 vdst(gpuDynInst, instData.VDST);
23592 
23593  src0.readSrc();
23594  src1.readSrc();
23595 
23599  assert(!(instData.ABS & 0x1));
23600  assert(!(instData.ABS & 0x2));
23601  assert(!(instData.ABS & 0x4));
23602  assert(!(extData.NEG & 0x1));
23603  assert(!(extData.NEG & 0x2));
23604  assert(!(extData.NEG & 0x4));
23605 
23606  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23607  if (wf->execMask(lane)) {
23608  VecElemI64 tmp_src0
23609  = (VecElemI64)sext<24>(bits(src0[lane], 23, 0));
23610  VecElemI64 tmp_src1
23611  = (VecElemI64)sext<24>(bits(src1[lane], 23, 0));
23612 
23613  vdst[lane] = (VecElemI32)((tmp_src0 * tmp_src1) >> 32);
23614  }
23615  }
23616 
23617  vdst.write();
23618  }
23619 
23621  : Inst_VOP3(iFmt, "v_mul_u32_u24", false)
23622  {
23623  setFlag(ALU);
23624  } // Inst_VOP3__V_MUL_U32_U24
23625 
23627  {
23628  } // ~Inst_VOP3__V_MUL_U32_U24
23629 
23630  // D.u = S0.u[23:0] * S1.u[23:0].
23631  void
23633  {
23634  Wavefront *wf = gpuDynInst->wavefront();
23635  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23636  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23637  VecOperandU32 vdst(gpuDynInst, instData.VDST);
23638 
23639  src0.readSrc();
23640  src1.readSrc();
23641 
23645  assert(!(instData.ABS & 0x1));
23646  assert(!(instData.ABS & 0x2));
23647  assert(!(instData.ABS & 0x4));
23648  assert(!(extData.NEG & 0x1));
23649  assert(!(extData.NEG & 0x2));
23650  assert(!(extData.NEG & 0x4));
23651 
23652  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23653  if (wf->execMask(lane)) {
23654  vdst[lane] = bits(src0[lane], 23, 0) * bits(src1[lane], 23, 0);
23655  }
23656  }
23657 
23658  vdst.write();
23659  }
23660 
23662  : Inst_VOP3(iFmt, "v_mul_hi_u32_u24", false)
23663  {
23664  setFlag(ALU);
23665  } // Inst_VOP3__V_MUL_HI_U32_U24
23666 
23668  {
23669  } // ~Inst_VOP3__V_MUL_HI_U32_U24
23670 
23671  // D.i = (S0.u[23:0] * S1.u[23:0]) >> 32.
23672  void
23674  {
23675  Wavefront *wf = gpuDynInst->wavefront();
23676  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23677  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23678  VecOperandU32 vdst(gpuDynInst, instData.VDST);
23679 
23680  src0.readSrc();
23681  src1.readSrc();
23682 
23686  assert(!(instData.ABS & 0x1));
23687  assert(!(instData.ABS & 0x2));
23688  assert(!(instData.ABS & 0x4));
23689  assert(!(extData.NEG & 0x1));
23690  assert(!(extData.NEG & 0x2));
23691  assert(!(extData.NEG & 0x4));
23692 
23693  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23694  if (wf->execMask(lane)) {
23695  VecElemU64 tmp_src0 = (VecElemU64)bits(src0[lane], 23, 0);
23696  VecElemU64 tmp_src1 = (VecElemU64)bits(src1[lane], 23, 0);
23697  vdst[lane] = (VecElemU32)((tmp_src0 * tmp_src1) >> 32);
23698  }
23699  }
23700 
23701  vdst.write();
23702  }
23703 
23705  : Inst_VOP3(iFmt, "v_min_f32", false)
23706  {
23707  setFlag(ALU);
23708  setFlag(F32);
23709  } // Inst_VOP3__V_MIN_F32
23710 
23712  {
23713  } // ~Inst_VOP3__V_MIN_F32
23714 
23715  // D.f = (S0.f < S1.f ? S0.f : S1.f).
23716  void
23718  {
23719  Wavefront *wf = gpuDynInst->wavefront();
23720  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
23721  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
23722  VecOperandF32 vdst(gpuDynInst, instData.VDST);
23723 
23724  src0.readSrc();
23725  src1.readSrc();
23726 
23727  if (instData.ABS & 0x1) {
23728  src0.absModifier();
23729  }
23730 
23731  if (instData.ABS & 0x2) {
23732  src1.absModifier();
23733  }
23734 
23735  if (extData.NEG & 0x1) {
23736  src0.negModifier();
23737  }
23738 
23739  if (extData.NEG & 0x2) {
23740  src1.negModifier();
23741  }
23742 
23746  assert(!(instData.ABS & 0x4));
23747  assert(!(extData.NEG & 0x4));
23748 
23749  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23750  if (wf->execMask(lane)) {
23751  vdst[lane] = std::fmin(src0[lane], src1[lane]);
23752  }
23753  }
23754 
23755  vdst.write();
23756  }
23757 
23759  : Inst_VOP3(iFmt, "v_max_f32", false)
23760  {
23761  setFlag(ALU);
23762  setFlag(F32);
23763  } // Inst_VOP3__V_MAX_F32
23764 
23766  {
23767  } // ~Inst_VOP3__V_MAX_F32
23768 
23769  // D.f = (S0.f >= S1.f ? S0.f : S1.f).
23770  void
23772  {
23773  Wavefront *wf = gpuDynInst->wavefront();
23774  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
23775  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
23776  VecOperandF32 vdst(gpuDynInst, instData.VDST);
23777 
23778  src0.readSrc();
23779  src1.readSrc();
23780 
23781  if (instData.ABS & 0x1) {
23782  src0.absModifier();
23783  }
23784 
23785  if (instData.ABS & 0x2) {
23786  src1.absModifier();
23787  }
23788 
23789  if (extData.NEG & 0x1) {
23790  src0.negModifier();
23791  }
23792 
23793  if (extData.NEG & 0x2) {
23794  src1.negModifier();
23795  }
23796 
23800  assert(!(instData.ABS & 0x4));
23801  assert(!(extData.NEG & 0x4));
23802 
23803  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23804  if (wf->execMask(lane)) {
23805  vdst[lane] = std::fmax(src0[lane], src1[lane]);
23806  }
23807  }
23808 
23809  vdst.write();
23810  }
23811 
23813  : Inst_VOP3(iFmt, "v_min_i32", false)
23814  {
23815  setFlag(ALU);
23816  } // Inst_VOP3__V_MIN_I32
23817 
23819  {
23820  } // ~Inst_VOP3__V_MIN_I32
23821 
23822  // D.i = min(S0.i, S1.i).
23823  void
23825  {
23826  Wavefront *wf = gpuDynInst->wavefront();
23827  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
23828  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
23829  VecOperandI32 vdst(gpuDynInst, instData.VDST);
23830 
23831  src0.readSrc();
23832  src1.readSrc();
23833 
23837  assert(!(instData.ABS & 0x1));
23838  assert(!(instData.ABS & 0x2));
23839  assert(!(instData.ABS & 0x4));
23840  assert(!(extData.NEG & 0x1));
23841  assert(!(extData.NEG & 0x2));
23842  assert(!(extData.NEG & 0x4));
23843 
23844  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23845  if (wf->execMask(lane)) {
23846  vdst[lane] = std::min(src0[lane], src1[lane]);
23847  }
23848  }
23849 
23850  vdst.write();
23851  }
23852 
23854  : Inst_VOP3(iFmt, "v_max_i32", false)
23855  {
23856  setFlag(ALU);
23857  } // Inst_VOP3__V_MAX_I32
23858 
23860  {
23861  } // ~Inst_VOP3__V_MAX_I32
23862 
23863  // D.i = max(S0.i, S1.i).
23864  void
23866  {
23867  Wavefront *wf = gpuDynInst->wavefront();
23868  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
23869  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
23870  VecOperandI32 vdst(gpuDynInst, instData.VDST);
23871 
23872  src0.readSrc();
23873  src1.readSrc();
23874 
23878  assert(!(instData.ABS & 0x1));
23879  assert(!(instData.ABS & 0x2));
23880  assert(!(instData.ABS & 0x4));
23881  assert(!(extData.NEG & 0x1));
23882  assert(!(extData.NEG & 0x2));
23883  assert(!(extData.NEG & 0x4));
23884 
23885  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23886  if (wf->execMask(lane)) {
23887  vdst[lane] = std::max(src0[lane], src1[lane]);
23888  }
23889  }
23890 
23891  vdst.write();
23892  }
23893 
23895  : Inst_VOP3(iFmt, "v_min_u32", false)
23896  {
23897  setFlag(ALU);
23898  } // Inst_VOP3__V_MIN_U32
23899 
23901  {
23902  } // ~Inst_VOP3__V_MIN_U32
23903 
23904  // D.u = min(S0.u, S1.u).
23905  void
23907  {
23908  Wavefront *wf = gpuDynInst->wavefront();
23909  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23910  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23911  VecOperandU32 vdst(gpuDynInst, instData.VDST);
23912 
23913  src0.readSrc();
23914  src1.readSrc();
23915 
23919  assert(!(instData.ABS & 0x1));
23920  assert(!(instData.ABS & 0x2));
23921  assert(!(instData.ABS & 0x4));
23922  assert(!(extData.NEG & 0x1));
23923  assert(!(extData.NEG & 0x2));
23924  assert(!(extData.NEG & 0x4));
23925 
23926  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23927  if (wf->execMask(lane)) {
23928  vdst[lane] = std::min(src0[lane], src1[lane]);
23929  }
23930  }
23931 
23932  vdst.write();
23933  }
23934 
23936  : Inst_VOP3(iFmt, "v_max_u32", false)
23937  {
23938  setFlag(ALU);
23939  } // Inst_VOP3__V_MAX_U32
23940 
23942  {
23943  } // ~Inst_VOP3__V_MAX_U32
23944 
23945  // D.u = max(S0.u, S1.u).
23946  void
23948  {
23949  Wavefront *wf = gpuDynInst->wavefront();
23950  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23951  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23952  VecOperandU32 vdst(gpuDynInst, instData.VDST);
23953 
23954  src0.readSrc();
23955  src1.readSrc();
23956 
23960  assert(!(instData.ABS & 0x1));
23961  assert(!(instData.ABS & 0x2));
23962  assert(!(instData.ABS & 0x4));
23963  assert(!(extData.NEG & 0x1));
23964  assert(!(extData.NEG & 0x2));
23965  assert(!(extData.NEG & 0x4));
23966 
23967  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
23968  if (wf->execMask(lane)) {
23969  vdst[lane] = std::max(src0[lane], src1[lane]);
23970  }
23971  }
23972 
23973  vdst.write();
23974  }
23975 
23977  : Inst_VOP3(iFmt, "v_lshrrev_b32", false)
23978  {
23979  setFlag(ALU);
23980  } // Inst_VOP3__V_LSHRREV_B32
23981 
23983  {
23984  } // ~Inst_VOP3__V_LSHRREV_B32
23985 
23986  // D.u = S1.u >> S0.u[4:0].
23987  // The vacated bits are set to zero.
23988  void
23990  {
23991  Wavefront *wf = gpuDynInst->wavefront();
23992  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
23993  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
23994  VecOperandU32 vdst(gpuDynInst, instData.VDST);
23995 
23996  src0.readSrc();
23997  src1.readSrc();
23998 
24002  assert(!(instData.ABS & 0x1));
24003  assert(!(instData.ABS & 0x2));
24004  assert(!(instData.ABS & 0x4));
24005  assert(!(extData.NEG & 0x1));
24006  assert(!(extData.NEG & 0x2));
24007  assert(!(extData.NEG & 0x4));
24008 
24009  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24010  if (wf->execMask(lane)) {
24011  vdst[lane] = src1[lane] >> bits(src0[lane], 4, 0);
24012  }
24013  }
24014 
24015  vdst.write();
24016  }
24017 
24019  : Inst_VOP3(iFmt, "v_ashrrev_i32", false)
24020  {
24021  setFlag(ALU);
24022  } // Inst_VOP3__V_ASHRREV_I32
24023 
24025  {
24026  } // ~Inst_VOP3__V_ASHRREV_I32
24027 
24028  // D.i = signext(S1.i) >> S0.i[4:0].
24029  // The vacated bits are set to the sign bit of the input value.
24030  void
24032  {
24033  Wavefront *wf = gpuDynInst->wavefront();
24034  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24035  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
24036  VecOperandI32 vdst(gpuDynInst, instData.VDST);
24037 
24038  src0.readSrc();
24039  src1.readSrc();
24040 
24044  assert(!(instData.ABS & 0x1));
24045  assert(!(instData.ABS & 0x2));
24046  assert(!(instData.ABS & 0x4));
24047  assert(!(extData.NEG & 0x1));
24048  assert(!(extData.NEG & 0x2));
24049  assert(!(extData.NEG & 0x4));
24050 
24051  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24052  if (wf->execMask(lane)) {
24053  vdst[lane] = src1[lane] >> bits(src0[lane], 4, 0);
24054  }
24055  }
24056 
24057  vdst.write();
24058  }
24059 
24061  : Inst_VOP3(iFmt, "v_lshlrev_b32", false)
24062  {
24063  setFlag(ALU);
24064  } // Inst_VOP3__V_LSHLREV_B32
24065 
24067  {
24068  } // ~Inst_VOP3__V_LSHLREV_B32
24069 
24070  // D.u = S1.u << S0.u[4:0].
24071  void
24073  {
24074  Wavefront *wf = gpuDynInst->wavefront();
24075  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24076  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
24077  VecOperandU32 vdst(gpuDynInst, instData.VDST);
24078 
24079  src0.readSrc();
24080  src1.readSrc();
24081 
24085  assert(!(instData.ABS & 0x1));
24086  assert(!(instData.ABS & 0x2));
24087  assert(!(instData.ABS & 0x4));
24088  assert(!(extData.NEG & 0x1));
24089  assert(!(extData.NEG & 0x2));
24090  assert(!(extData.NEG & 0x4));
24091 
24092  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24093  if (wf->execMask(lane)) {
24094  vdst[lane] = src1[lane] << bits(src0[lane], 4, 0);
24095  }
24096  }
24097 
24098  vdst.write();
24099  }
24100 
24102  : Inst_VOP3(iFmt, "v_and_b32", false)
24103  {
24104  setFlag(ALU);
24105  } // Inst_VOP3__V_AND_B32
24106 
24108  {
24109  } // ~Inst_VOP3__V_AND_B32
24110 
24111  // D.u = S0.u & S1.u.
24112  // Input and output modifiers not supported.
24113  void
24115  {
24116  Wavefront *wf = gpuDynInst->wavefront();
24117  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24118  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
24119  VecOperandU32 vdst(gpuDynInst, instData.VDST);
24120 
24121  src0.readSrc();
24122  src1.readSrc();
24123 
24127  assert(!(instData.ABS & 0x1));
24128  assert(!(instData.ABS & 0x2));
24129  assert(!(instData.ABS & 0x4));
24130  assert(!(extData.NEG & 0x1));
24131  assert(!(extData.NEG & 0x2));
24132  assert(!(extData.NEG & 0x4));
24133 
24134  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24135  if (wf->execMask(lane)) {
24136  vdst[lane] = src0[lane] & src1[lane];
24137  }
24138  }
24139 
24140  vdst.write();
24141  }
24142 
24144  : Inst_VOP3(iFmt, "v_or_b32", false)
24145  {
24146  setFlag(ALU);
24147  } // Inst_VOP3__V_OR_B32
24148 
24150  {
24151  } // ~Inst_VOP3__V_OR_B32
24152 
24153  // D.u = S0.u | S1.u.
24154  // Input and output modifiers not supported.
24155  void
24157  {
24158  Wavefront *wf = gpuDynInst->wavefront();
24159  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24160  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
24161  VecOperandU32 vdst(gpuDynInst, instData.VDST);
24162 
24163  src0.readSrc();
24164  src1.readSrc();
24165 
24169  assert(!(instData.ABS & 0x1));
24170  assert(!(instData.ABS & 0x2));
24171  assert(!(instData.ABS & 0x4));
24172  assert(!(extData.NEG & 0x1));
24173  assert(!(extData.NEG & 0x2));
24174  assert(!(extData.NEG & 0x4));
24175 
24176  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24177  if (wf->execMask(lane)) {
24178  vdst[lane] = src0[lane] | src1[lane];
24179  }
24180  }
24181 
24182  vdst.write();
24183  }
24184 
24186  : Inst_VOP3(iFmt, "v_xor_b32", false)
24187  {
24188  setFlag(ALU);
24189  } // Inst_VOP3__V_XOR_B32
24190 
24192  {
24193  } // ~Inst_VOP3__V_XOR_B32
24194 
24195  // D.u = S0.u ^ S1.u.
24196  // Input and output modifiers not supported.
24197  void
24199  {
24200  Wavefront *wf = gpuDynInst->wavefront();
24201  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24202  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
24203  VecOperandU32 vdst(gpuDynInst, instData.VDST);
24204 
24205  src0.readSrc();
24206  src1.readSrc();
24207 
24211  assert(!(instData.ABS & 0x1));
24212  assert(!(instData.ABS & 0x2));
24213  assert(!(instData.ABS & 0x4));
24214  assert(!(extData.NEG & 0x1));
24215  assert(!(extData.NEG & 0x2));
24216  assert(!(extData.NEG & 0x4));
24217 
24218  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24219  if (wf->execMask(lane)) {
24220  vdst[lane] = src0[lane] ^ src1[lane];
24221  }
24222  }
24223 
24224  vdst.write();
24225  }
24226 
24228  : Inst_VOP3(iFmt, "v_mac_f32", false)
24229  {
24230  setFlag(ALU);
24231  setFlag(F32);
24232  setFlag(MAC);
24233  } // Inst_VOP3__V_MAC_F32
24234 
24236  {
24237  } // ~Inst_VOP3__V_MAC_F32
24238 
24239  // D.f = S0.f * S1.f + D.f.
24240  void
24242  {
24243  Wavefront *wf = gpuDynInst->wavefront();
24244  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
24245  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
24246  VecOperandF32 vdst(gpuDynInst, instData.VDST);
24247 
24248  src0.readSrc();
24249  src1.readSrc();
24250  vdst.read();
24251 
24252  if (instData.ABS & 0x1) {
24253  src0.absModifier();
24254  }
24255 
24256  if (instData.ABS & 0x2) {
24257  src1.absModifier();
24258  }
24259 
24260  if (extData.NEG & 0x1) {
24261  src0.negModifier();
24262  }
24263 
24264  if (extData.NEG & 0x2) {
24265  src1.negModifier();
24266  }
24267 
24271  assert(!(instData.ABS & 0x4));
24272  assert(!(extData.NEG & 0x4));
24273 
24274  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24275  if (wf->execMask(lane)) {
24276  vdst[lane] = std::fma(src0[lane], src1[lane], vdst[lane]);
24277  }
24278  }
24279 
24280  vdst.write();
24281  }
24282 
24284  : Inst_VOP3_SDST_ENC(iFmt, "v_add_u32")
24285  {
24286  setFlag(ALU);
24287  setFlag(WritesVCC);
24288  } // Inst_VOP3__V_ADD_U32
24289 
24291  {
24292  } // ~Inst_VOP3__V_ADD_U32
24293 
24294  // D.u = S0.u + S1.u;
24295  // VCC[threadId] = (S0.u + S1.u >= 0x800000000ULL ? 1 : 0) is an UNSIGNED
24296  // overflow or carry-out.
24297  // In VOP3 the VCC destination may be an arbitrary SGPR-pair.
24298  void
24300  {
24301  Wavefront *wf = gpuDynInst->wavefront();
24302  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24303  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
24304  VecOperandU32 vdst(gpuDynInst, instData.VDST);
24305  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
24306 
24307  src0.readSrc();
24308  src1.readSrc();
24309 
24313  assert(!(extData.NEG & 0x1));
24314  assert(!(extData.NEG & 0x2));
24315  assert(!(extData.NEG & 0x4));
24316 
24317  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24318  if (wf->execMask(lane)) {
24319  vdst[lane] = src0[lane] + src1[lane];
24320  vcc.setBit(lane, ((VecElemU64)src0[lane]
24321  + (VecElemU64)src1[lane]) >= 0x100000000ULL ? 1 : 0);
24322  }
24323  }
24324 
24325  vdst.write();
24326  vcc.write();
24327  }
24328 
24330  : Inst_VOP3_SDST_ENC(iFmt, "v_sub_u32")
24331  {
24332  setFlag(ALU);
24333  setFlag(WritesVCC);
24334  } // Inst_VOP3__V_SUB_U32
24335 
24337  {
24338  } // ~Inst_VOP3__V_SUB_U32
24339 
24340  // D.u = S0.u - S1.u;
24341  // VCC[threadId] = (S1.u > S0.u ? 1 : 0) is an UNSIGNED overflow or
24342  // carry-out.
24343  // In VOP3 the VCC destination may be an arbitrary SGPR-pair.
24344  void
24346  {
24347  Wavefront *wf = gpuDynInst->wavefront();
24348  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24349  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
24350  VecOperandU32 vdst(gpuDynInst, instData.VDST);
24351  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
24352 
24353  src0.readSrc();
24354  src1.readSrc();
24355 
24359  assert(!(extData.NEG & 0x1));
24360  assert(!(extData.NEG & 0x2));
24361  assert(!(extData.NEG & 0x4));
24362 
24363  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24364  if (wf->execMask(lane)) {
24365  vdst[lane] = src0[lane] - src1[lane];
24366  vcc.setBit(lane, src1[lane] > src0[lane] ? 1 : 0);
24367  }
24368  }
24369 
24370  vdst.write();
24371  vcc.write();
24372  }
24373 
24375  InFmt_VOP3_SDST_ENC *iFmt)
24376  : Inst_VOP3_SDST_ENC(iFmt, "v_subrev_u32")
24377  {
24378  setFlag(ALU);
24379  setFlag(WritesVCC);
24380  } // Inst_VOP3__V_SUBREV_U32
24381 
24383  {
24384  } // ~Inst_VOP3__V_SUBREV_U32
24385 
24386  // D.u = S1.u - S0.u;
24387  // VCC[threadId] = (S0.u > S1.u ? 1 : 0) is an UNSIGNED overflow or
24388  // carry-out.
24389  // In VOP3 the VCC destination may be an arbitrary SGPR-pair.
24390  void
24392  {
24393  Wavefront *wf = gpuDynInst->wavefront();
24394  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
24395  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24396  VecOperandU32 vdst(gpuDynInst, instData.VDST);
24397  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
24398 
24399  src0.readSrc();
24400  src1.readSrc();
24401 
24405  assert(!(extData.NEG & 0x1));
24406  assert(!(extData.NEG & 0x2));
24407  assert(!(extData.NEG & 0x4));
24408 
24409  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24410  if (wf->execMask(lane)) {
24411  vdst[lane] = src1[lane] - src0[lane];
24412  vcc.setBit(lane, src0[lane] > src1[lane] ? 1 : 0);
24413  }
24414  }
24415 
24416  vdst.write();
24417  vcc.write();
24418  }
24419 
24421  : Inst_VOP3_SDST_ENC(iFmt, "v_addc_u32")
24422  {
24423  setFlag(ALU);
24424  setFlag(WritesVCC);
24425  setFlag(ReadsVCC);
24426  } // Inst_VOP3__V_ADDC_U32
24427 
24429  {
24430  } // ~Inst_VOP3__V_ADDC_U32
24431 
24432  // D.u = S0.u + S1.u + VCC[threadId];
24433  // VCC[threadId] = (S0.u + S1.u + VCC[threadId] >= 0x100000000ULL ? 1 : 0)
24434  // is an UNSIGNED overflow.
24435  // In VOP3 the VCC destination may be an arbitrary SGPR-pair, and the VCC
24436  // source comes from the SGPR-pair at S2.u.
24437  void
24439  {
24440  Wavefront *wf = gpuDynInst->wavefront();
24441  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24442  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
24443  ConstScalarOperandU64 vcc(gpuDynInst, extData.SRC2);
24444  VecOperandU32 vdst(gpuDynInst, instData.VDST);
24445  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
24446 
24447  src0.readSrc();
24448  src1.readSrc();
24449  vcc.read();
24450 
24454  assert(!(extData.NEG & 0x1));
24455  assert(!(extData.NEG & 0x2));
24456  assert(!(extData.NEG & 0x4));
24457 
24458  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24459  if (wf->execMask(lane)) {
24460  vdst[lane] = src0[lane] + src1[lane]
24461  + bits(vcc.rawData(), lane);
24462  sdst.setBit(lane, ((VecElemU64)src0[lane]
24463  + (VecElemU64)src1[lane]
24464  + (VecElemU64)bits(vcc.rawData(), lane))
24465  >= 0x100000000 ? 1 : 0);
24466  }
24467  }
24468 
24469  vdst.write();
24470  sdst.write();
24471  }
24472 
24474  : Inst_VOP3_SDST_ENC(iFmt, "v_subb_u32")
24475  {
24476  setFlag(ALU);
24477  setFlag(WritesVCC);
24478  setFlag(ReadsVCC);
24479  } // Inst_VOP3__V_SUBB_U32
24480 
24482  {
24483  } // ~Inst_VOP3__V_SUBB_U32
24484 
24485  // D.u = S0.u - S1.u - VCC[threadId];
24486  // VCC[threadId] = (S1.u + VCC[threadId] > S0.u ? 1 : 0) is an UNSIGNED
24487  // overflow.
24488  // In VOP3 the VCC destination may be an arbitrary SGPR-pair, and the VCC
24489  // source comes from the SGPR-pair at S2.u.
24490  void
24492  {
24493  Wavefront *wf = gpuDynInst->wavefront();
24494  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24495  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
24496  ConstScalarOperandU64 vcc(gpuDynInst, extData.SRC2);
24497  ScalarOperandU64 sdst(gpuDynInst, instData.SDST);
24498  VecOperandU32 vdst(gpuDynInst, instData.VDST);
24499 
24500  src0.readSrc();
24501  src1.readSrc();
24502  vcc.read();
24503 
24507  assert(!(extData.NEG & 0x1));
24508  assert(!(extData.NEG & 0x2));
24509  assert(!(extData.NEG & 0x4));
24510 
24511  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24512  if (wf->execMask(lane)) {
24513  vdst[lane] = src0[lane] - src1[lane]
24514  - bits(vcc.rawData(), lane);
24515  sdst.setBit(lane, (src1[lane] + bits(vcc.rawData(), lane))
24516  > src0[lane] ? 1 : 0);
24517  }
24518  }
24519 
24520  vdst.write();
24521  sdst.write();
24522  }
24523 
24525  InFmt_VOP3_SDST_ENC *iFmt)
24526  : Inst_VOP3_SDST_ENC(iFmt, "v_subbrev_u32")
24527  {
24528  setFlag(ALU);
24529  setFlag(WritesVCC);
24530  setFlag(ReadsVCC);
24531  } // Inst_VOP3__V_SUBBREV_U32
24532 
24534  {
24535  } // ~Inst_VOP3__V_SUBBREV_U32
24536 
24537  // D.u = S1.u - S0.u - VCC[threadId];
24538  // VCC[threadId] = (S1.u + VCC[threadId] > S0.u ? 1 : 0) is an UNSIGNED
24539  // overflow.
24540  // In VOP3 the VCC destination may be an arbitrary SGPR-pair, and the VCC
24541  // source comes from the SGPR-pair at S2.u.
24542  void
24544  {
24545  Wavefront *wf = gpuDynInst->wavefront();
24546  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
24547  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
24548  ConstScalarOperandU64 sdst(gpuDynInst, instData.SDST);
24549  ScalarOperandU64 vcc(gpuDynInst, extData.SRC2);
24550  VecOperandU32 vdst(gpuDynInst, instData.VDST);
24551 
24552  src0.readSrc();
24553  src1.readSrc();
24554  vcc.read();
24555 
24559  assert(!(extData.NEG & 0x1));
24560  assert(!(extData.NEG & 0x2));
24561  assert(!(extData.NEG & 0x4));
24562 
24563  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24564  if (wf->execMask(lane)) {
24565  vdst[lane] = src1[lane] - src0[lane]
24566  - bits(vcc.rawData(), lane);
24567  sdst.setBit(lane, (src1[lane] + bits(vcc.rawData(), lane))
24568  > src0[lane] ? 1 : 0);
24569  }
24570  }
24571 
24572  vdst.write();
24573  sdst.write();
24574  }
24575 
24577  : Inst_VOP3(iFmt, "v_add_f16", false)
24578  {
24579  setFlag(ALU);
24580  setFlag(F16);
24581  } // Inst_VOP3__V_ADD_F16
24582 
24584  {
24585  } // ~Inst_VOP3__V_ADD_F16
24586 
24587  // D.f16 = S0.f16 + S1.f16.
24588  void
24590  {
24592  }
24593 
24595  : Inst_VOP3(iFmt, "v_sub_f16", false)
24596  {
24597  setFlag(ALU);
24598  setFlag(F16);
24599  } // Inst_VOP3__V_SUB_F16
24600 
24602  {
24603  } // ~Inst_VOP3__V_SUB_F16
24604 
24605  // D.f16 = S0.f16 - S1.f16.
24606  void
24608  {
24610  }
24611 
24613  : Inst_VOP3(iFmt, "v_subrev_f16", false)
24614  {
24615  setFlag(ALU);
24616  setFlag(F16);
24617  } // Inst_VOP3__V_SUBREV_F16
24618 
24620  {
24621  } // ~Inst_VOP3__V_SUBREV_F16
24622 
24623  // D.f16 = S1.f16 - S0.f16.
24624  void
24626  {
24628  }
24629 
24631  : Inst_VOP3(iFmt, "v_mul_f16", false)
24632  {
24633  setFlag(ALU);
24634  setFlag(F16);
24635  } // Inst_VOP3__V_MUL_F16
24636 
24638  {
24639  } // ~Inst_VOP3__V_MUL_F16
24640 
24641  // D.f16 = S0.f16 * S1.f16.
24642  void
24644  {
24646  }
24647 
24649  : Inst_VOP3(iFmt, "v_mac_f16", false)
24650  {
24651  setFlag(ALU);
24652  setFlag(F16);
24653  setFlag(MAC);
24654  } // Inst_VOP3__V_MAC_F16
24655 
24657  {
24658  } // ~Inst_VOP3__V_MAC_F16
24659 
24660  // D.f16 = S0.f16 * S1.f16 + D.f16.
24661  void
24663  {
24665  }
24666 
24668  : Inst_VOP3(iFmt, "v_add_u16", false)
24669  {
24670  setFlag(ALU);
24671  } // Inst_VOP3__V_ADD_U16
24672 
24674  {
24675  } // ~Inst_VOP3__V_ADD_U16
24676 
24677  // D.u16 = S0.u16 + S1.u16.
24678  void
24680  {
24681  Wavefront *wf = gpuDynInst->wavefront();
24682  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
24683  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
24684  VecOperandU16 vdst(gpuDynInst, instData.VDST);
24685 
24686  src0.readSrc();
24687  src1.readSrc();
24688 
24692  assert(!(instData.ABS & 0x1));
24693  assert(!(instData.ABS & 0x2));
24694  assert(!(instData.ABS & 0x4));
24695  assert(!(extData.NEG & 0x1));
24696  assert(!(extData.NEG & 0x2));
24697  assert(!(extData.NEG & 0x4));
24698 
24699  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24700  if (wf->execMask(lane)) {
24701  vdst[lane] = src0[lane] + src1[lane];
24702  }
24703  }
24704 
24705  vdst.write();
24706  }
24707 
24709  : Inst_VOP3(iFmt, "v_sub_u16", false)
24710  {
24711  setFlag(ALU);
24712  } // Inst_VOP3__V_SUB_U16
24713 
24715  {
24716  } // ~Inst_VOP3__V_SUB_U16
24717 
24718  // D.u16 = S0.u16 - S1.u16.
24719  void
24721  {
24722  Wavefront *wf = gpuDynInst->wavefront();
24723  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
24724  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
24725  VecOperandU16 vdst(gpuDynInst, instData.VDST);
24726 
24727  src0.readSrc();
24728  src1.readSrc();
24729 
24733  assert(!(instData.ABS & 0x1));
24734  assert(!(instData.ABS & 0x2));
24735  assert(!(instData.ABS & 0x4));
24736  assert(!(extData.NEG & 0x1));
24737  assert(!(extData.NEG & 0x2));
24738  assert(!(extData.NEG & 0x4));
24739 
24740  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24741  if (wf->execMask(lane)) {
24742  vdst[lane] = src0[lane] - src1[lane];
24743  }
24744  }
24745 
24746  vdst.write();
24747  }
24748 
24750  : Inst_VOP3(iFmt, "v_subrev_u16", false)
24751  {
24752  setFlag(ALU);
24753  } // Inst_VOP3__V_SUBREV_U16
24754 
24756  {
24757  } // ~Inst_VOP3__V_SUBREV_U16
24758 
24759  // D.u16 = S1.u16 - S0.u16.
24760  void
24762  {
24763  Wavefront *wf = gpuDynInst->wavefront();
24764  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
24765  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
24766  VecOperandU16 vdst(gpuDynInst, instData.VDST);
24767 
24768  src0.readSrc();
24769  src1.readSrc();
24770 
24774  assert(!(instData.ABS & 0x1));
24775  assert(!(instData.ABS & 0x2));
24776  assert(!(instData.ABS & 0x4));
24777  assert(!(extData.NEG & 0x1));
24778  assert(!(extData.NEG & 0x2));
24779  assert(!(extData.NEG & 0x4));
24780 
24781  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24782  if (wf->execMask(lane)) {
24783  vdst[lane] = src1[lane] - src0[lane];
24784  }
24785  }
24786 
24787  vdst.write();
24788  }
24789 
24791  : Inst_VOP3(iFmt, "v_mul_lo_u16", false)
24792  {
24793  setFlag(ALU);
24794  } // Inst_VOP3__V_MUL_LO_U16
24795 
24797  {
24798  } // ~Inst_VOP3__V_MUL_LO_U16
24799 
24800  // D.u16 = S0.u16 * S1.u16.
24801  void
24803  {
24804  Wavefront *wf = gpuDynInst->wavefront();
24805  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
24806  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
24807  VecOperandU16 vdst(gpuDynInst, instData.VDST);
24808 
24809  src0.readSrc();
24810  src1.readSrc();
24811 
24815  assert(!(instData.ABS & 0x1));
24816  assert(!(instData.ABS & 0x2));
24817  assert(!(instData.ABS & 0x4));
24818  assert(!(extData.NEG & 0x1));
24819  assert(!(extData.NEG & 0x2));
24820  assert(!(extData.NEG & 0x4));
24821 
24822  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24823  if (wf->execMask(lane)) {
24824  vdst[lane] = src0[lane] * src1[lane];
24825  }
24826  }
24827 
24828  vdst.write();
24829  }
24830 
24832  : Inst_VOP3(iFmt, "v_lshlrev_b16", false)
24833  {
24834  setFlag(ALU);
24835  } // Inst_VOP3__V_LSHLREV_B16
24836 
24838  {
24839  } // ~Inst_VOP3__V_LSHLREV_B16
24840 
24841  // D.u[15:0] = S1.u[15:0] << S0.u[3:0].
24842  void
24844  {
24845  Wavefront *wf = gpuDynInst->wavefront();
24846  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
24847  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
24848  VecOperandU16 vdst(gpuDynInst, instData.VDST);
24849 
24850  src0.readSrc();
24851  src1.readSrc();
24852 
24856  assert(!(instData.ABS & 0x1));
24857  assert(!(instData.ABS & 0x2));
24858  assert(!(instData.ABS & 0x4));
24859  assert(!(extData.NEG & 0x1));
24860  assert(!(extData.NEG & 0x2));
24861  assert(!(extData.NEG & 0x4));
24862 
24863  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24864  if (wf->execMask(lane)) {
24865  vdst[lane] = src1[lane] << bits(src0[lane], 3, 0);
24866  }
24867  }
24868 
24869  vdst.write();
24870  }
24871 
24873  : Inst_VOP3(iFmt, "v_lshrrev_b16", false)
24874  {
24875  setFlag(ALU);
24876  } // Inst_VOP3__V_LSHRREV_B16
24877 
24879  {
24880  } // ~Inst_VOP3__V_LSHRREV_B16
24881 
24882  // D.u[15:0] = S1.u[15:0] >> S0.u[3:0].
24883  // The vacated bits are set to zero.
24884  void
24886  {
24887  Wavefront *wf = gpuDynInst->wavefront();
24888  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
24889  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
24890  VecOperandU16 vdst(gpuDynInst, instData.VDST);
24891 
24892  src0.readSrc();
24893  src1.readSrc();
24894 
24895  if (instData.ABS & 0x1) {
24896  src0.absModifier();
24897  }
24898 
24899  if (instData.ABS & 0x2) {
24900  src1.absModifier();
24901  }
24902 
24903  if (extData.NEG & 0x1) {
24904  src0.negModifier();
24905  }
24906 
24907  if (extData.NEG & 0x2) {
24908  src1.negModifier();
24909  }
24910 
24911  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24912  if (wf->execMask(lane)) {
24913  vdst[lane] = src1[lane] >> bits(src0[lane], 3, 0);
24914  }
24915  }
24916 
24917  vdst.write();
24918  }
24919 
24921  : Inst_VOP3(iFmt, "v_ashrrev_i16", false)
24922  {
24923  setFlag(ALU);
24924  } // Inst_VOP3__V_ASHRREV_I16
24925 
24927  {
24928  } // ~Inst_VOP3__V_ASHRREV_I16
24929 
24930  // D.i[15:0] = signext(S1.i[15:0]) >> S0.i[3:0].
24931  // The vacated bits are set to the sign bit of the input value.
24932  void
24934  {
24935  Wavefront *wf = gpuDynInst->wavefront();
24936  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
24937  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
24938  VecOperandI16 vdst(gpuDynInst, instData.VDST);
24939 
24940  src0.readSrc();
24941  src1.readSrc();
24942 
24946  assert(!(instData.ABS & 0x1));
24947  assert(!(instData.ABS & 0x2));
24948  assert(!(instData.ABS & 0x4));
24949  assert(!(extData.NEG & 0x1));
24950  assert(!(extData.NEG & 0x2));
24951  assert(!(extData.NEG & 0x4));
24952 
24953  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
24954  if (wf->execMask(lane)) {
24955  vdst[lane] = src1[lane] >> bits(src0[lane], 3, 0);
24956  }
24957  }
24958 
24959  vdst.write();
24960  }
24961 
24963  : Inst_VOP3(iFmt, "v_max_f16", false)
24964  {
24965  setFlag(ALU);
24966  setFlag(F16);
24967  } // Inst_VOP3__V_MAX_F16
24968 
24970  {
24971  } // ~Inst_VOP3__V_MAX_F16
24972 
24973  // D.f16 = max(S0.f16, S1.f16).
24974  void
24976  {
24978  }
24979 
24981  : Inst_VOP3(iFmt, "v_min_f16", false)
24982  {
24983  setFlag(ALU);
24984  setFlag(F16);
24985  } // Inst_VOP3__V_MIN_F16
24986 
24988  {
24989  } // ~Inst_VOP3__V_MIN_F16
24990 
24991  // D.f16 = min(S0.f16, S1.f16).
24992  void
24994  {
24996  }
24997 
24999  : Inst_VOP3(iFmt, "v_max_u16", false)
25000  {
25001  setFlag(ALU);
25002  } // Inst_VOP3__V_MAX_U16
25003 
25005  {
25006  } // ~Inst_VOP3__V_MAX_U16
25007 
25008  // D.u[15:0] = max(S0.u[15:0], S1.u[15:0]).
25009  void
25011  {
25012  Wavefront *wf = gpuDynInst->wavefront();
25013  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
25014  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
25015  VecOperandU16 vdst(gpuDynInst, instData.VDST);
25016 
25017  src0.readSrc();
25018  src1.readSrc();
25019 
25020  if (instData.ABS & 0x1) {
25021  src0.absModifier();
25022  }
25023 
25024  if (instData.ABS & 0x2) {
25025  src1.absModifier();
25026  }
25027 
25028  if (extData.NEG & 0x1) {
25029  src0.negModifier();
25030  }
25031 
25032  if (extData.NEG & 0x2) {
25033  src1.negModifier();
25034  }
25035 
25036  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25037  if (wf->execMask(lane)) {
25038  vdst[lane] = std::max(src0[lane], src1[lane]);
25039  }
25040  }
25041 
25042  vdst.write();
25043  }
25044 
25046  : Inst_VOP3(iFmt, "v_max_i16", false)
25047  {
25048  setFlag(ALU);
25049  } // Inst_VOP3__V_MAX_I16
25050 
25052  {
25053  } // ~Inst_VOP3__V_MAX_I16
25054 
25055  // D.i[15:0] = max(S0.i[15:0], S1.i[15:0]).
25056  void
25058  {
25059  Wavefront *wf = gpuDynInst->wavefront();
25060  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
25061  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
25062  VecOperandI16 vdst(gpuDynInst, instData.VDST);
25063 
25064  src0.readSrc();
25065  src1.readSrc();
25066 
25067  if (instData.ABS & 0x1) {
25068  src0.absModifier();
25069  }
25070 
25071  if (instData.ABS & 0x2) {
25072  src1.absModifier();
25073  }
25074 
25075  if (extData.NEG & 0x1) {
25076  src0.negModifier();
25077  }
25078 
25079  if (extData.NEG & 0x2) {
25080  src1.negModifier();
25081  }
25082 
25083  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25084  if (wf->execMask(lane)) {
25085  vdst[lane] = std::max(src0[lane], src1[lane]);
25086  }
25087  }
25088 
25089  vdst.write();
25090  }
25091 
25093  : Inst_VOP3(iFmt, "v_min_u16", false)
25094  {
25095  setFlag(ALU);
25096  } // Inst_VOP3__V_MIN_U16
25097 
25099  {
25100  } // ~Inst_VOP3__V_MIN_U16
25101 
25102  // D.u[15:0] = min(S0.u[15:0], S1.u[15:0]).
25103  void
25105  {
25106  Wavefront *wf = gpuDynInst->wavefront();
25107  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
25108  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
25109  VecOperandU16 vdst(gpuDynInst, instData.VDST);
25110 
25111  src0.readSrc();
25112  src1.readSrc();
25113 
25114  if (instData.ABS & 0x1) {
25115  src0.absModifier();
25116  }
25117 
25118  if (instData.ABS & 0x2) {
25119  src1.absModifier();
25120  }
25121 
25122  if (extData.NEG & 0x1) {
25123  src0.negModifier();
25124  }
25125 
25126  if (extData.NEG & 0x2) {
25127  src1.negModifier();
25128  }
25129 
25130  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25131  if (wf->execMask(lane)) {
25132  vdst[lane] = std::min(src0[lane], src1[lane]);
25133  }
25134  }
25135 
25136  vdst.write();
25137  }
25138 
25140  : Inst_VOP3(iFmt, "v_min_i16", false)
25141  {
25142  setFlag(ALU);
25143  } // Inst_VOP3__V_MIN_I16
25144 
25146  {
25147  } // ~Inst_VOP3__V_MIN_I16
25148 
25149  // D.i[15:0] = min(S0.i[15:0], S1.i[15:0]).
25150  void
25152  {
25153  Wavefront *wf = gpuDynInst->wavefront();
25154  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
25155  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
25156  VecOperandI16 vdst(gpuDynInst, instData.VDST);
25157 
25158  src0.readSrc();
25159  src1.readSrc();
25160 
25161  if (instData.ABS & 0x1) {
25162  src0.absModifier();
25163  }
25164 
25165  if (instData.ABS & 0x2) {
25166  src1.absModifier();
25167  }
25168 
25169  if (extData.NEG & 0x1) {
25170  src0.negModifier();
25171  }
25172 
25173  if (extData.NEG & 0x2) {
25174  src1.negModifier();
25175  }
25176 
25177  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25178  if (wf->execMask(lane)) {
25179  vdst[lane] = std::min(src0[lane], src1[lane]);
25180  }
25181  }
25182 
25183  vdst.write();
25184  }
25185 
25187  : Inst_VOP3(iFmt, "v_ldexp_f16", false)
25188  {
25189  setFlag(ALU);
25190  setFlag(F16);
25191  } // Inst_VOP3__V_LDEXP_F16
25192 
25194  {
25195  } // ~Inst_VOP3__V_LDEXP_F16
25196 
25197  // D.f16 = S0.f16 * (2 ** S1.i16).
25198  void
25200  {
25202  }
25203 
25205  : Inst_VOP3(iFmt, "v_nop", false)
25206  {
25207  setFlag(Nop);
25208  setFlag(ALU);
25209  } // Inst_VOP3__V_NOP
25210 
25212  {
25213  } // ~Inst_VOP3__V_NOP
25214 
25215  // Do nothing.
25216  void
25218  {
25219  }
25220 
25222  : Inst_VOP3(iFmt, "v_mov_b32", false)
25223  {
25224  setFlag(ALU);
25225  } // Inst_VOP3__V_MOV_B32
25226 
25228  {
25229  } // ~Inst_VOP3__V_MOV_B32
25230 
25231  // D.u = S0.u.
25232  // Input and output modifiers not supported; this is an untyped operation.
25233  void
25235  {
25236  Wavefront *wf = gpuDynInst->wavefront();
25237  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
25238  VecOperandU32 vdst(gpuDynInst, instData.VDST);
25239 
25240  src.readSrc();
25241 
25242  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25243  if (wf->execMask(lane)) {
25244  vdst[lane] = src[lane];
25245  }
25246  }
25247 
25248  vdst.write();
25249  }
25250 
25252  : Inst_VOP3(iFmt, "v_cvt_i32_f64", false)
25253  {
25254  setFlag(ALU);
25255  setFlag(F64);
25256  } // Inst_VOP3__V_CVT_I32_F64
25257 
25259  {
25260  } // ~Inst_VOP3__V_CVT_I32_F64
25261 
25262  // D.i = (int)S0.d.
25263  // Out-of-range floating point values (including infinity) saturate. NaN
25264  // is converted to 0.
25265  void
25267  {
25268  Wavefront *wf = gpuDynInst->wavefront();
25269  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
25270  VecOperandI32 vdst(gpuDynInst, instData.VDST);
25271 
25272  src.readSrc();
25273 
25274  if (instData.ABS & 0x1) {
25275  src.absModifier();
25276  }
25277 
25278  if (extData.NEG & 0x1) {
25279  src.negModifier();
25280  }
25281 
25282  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25283  if (wf->execMask(lane)) {
25284  int exp;
25285  std::frexp(src[lane],&exp);
25286  if (std::isnan(src[lane])) {
25287  vdst[lane] = 0;
25288  } else if (std::isinf(src[lane]) || exp > 30) {
25289  if (std::signbit(src[lane])) {
25290  vdst[lane] = INT_MIN;
25291  } else {
25292  vdst[lane] = INT_MAX;
25293  }
25294  } else {
25295  vdst[lane] = (VecElemI32)src[lane];
25296  }
25297  }
25298  }
25299 
25300  vdst.write();
25301  }
25302 
25304  : Inst_VOP3(iFmt, "v_cvt_f64_i32", false)
25305  {
25306  setFlag(ALU);
25307  setFlag(F64);
25308  } // Inst_VOP3__V_CVT_F64_I32
25309 
25311  {
25312  } // ~Inst_VOP3__V_CVT_F64_I32
25313 
25314  // D.d = (double)S0.i.
25315  void
25317  {
25318  Wavefront *wf = gpuDynInst->wavefront();
25319  ConstVecOperandI32 src(gpuDynInst, extData.SRC0);
25320  VecOperandF64 vdst(gpuDynInst, instData.VDST);
25321 
25322  src.readSrc();
25323 
25324  if (instData.ABS & 0x1) {
25325  src.absModifier();
25326  }
25327 
25328  if (extData.NEG & 0x1) {
25329  src.negModifier();
25330  }
25331 
25332  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25333  if (wf->execMask(lane)) {
25334  vdst[lane] = (VecElemF64)src[lane];
25335  }
25336  }
25337 
25338  vdst.write();
25339  }
25340 
25342  : Inst_VOP3(iFmt, "v_cvt_f32_i32", false)
25343  {
25344  setFlag(ALU);
25345  setFlag(F32);
25346  } // Inst_VOP3__V_CVT_F32_I32
25347 
25349  {
25350  } // ~Inst_VOP3__V_CVT_F32_I32
25351 
25352  // D.f = (float)S0.i.
25353  void
25355  {
25356  Wavefront *wf = gpuDynInst->wavefront();
25357  VecOperandI32 src(gpuDynInst, extData.SRC0);
25358  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25359 
25360  src.readSrc();
25361 
25365  assert(!(instData.ABS & 0x1));
25366  assert(!(instData.ABS & 0x2));
25367  assert(!(instData.ABS & 0x4));
25368  assert(!(extData.NEG & 0x1));
25369  assert(!(extData.NEG & 0x2));
25370  assert(!(extData.NEG & 0x4));
25371 
25372  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25373  if (wf->execMask(lane)) {
25374  vdst[lane] = (VecElemF32)src[lane];
25375  }
25376  }
25377 
25378  vdst.write();
25379  }
25380 
25382  : Inst_VOP3(iFmt, "v_cvt_f32_u32", false)
25383  {
25384  setFlag(ALU);
25385  setFlag(F32);
25386  } // Inst_VOP3__V_CVT_F32_U32
25387 
25389  {
25390  } // ~Inst_VOP3__V_CVT_F32_U32
25391 
25392  // D.f = (float)S0.u.
25393  void
25395  {
25396  Wavefront *wf = gpuDynInst->wavefront();
25397  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
25398  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25399 
25400  src.readSrc();
25401 
25402  if (instData.ABS & 0x1) {
25403  src.absModifier();
25404  }
25405 
25406  if (extData.NEG & 0x1) {
25407  src.negModifier();
25408  }
25409 
25410  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25411  if (wf->execMask(lane)) {
25412  vdst[lane] = (VecElemF32)src[lane];
25413  }
25414  }
25415 
25416  vdst.write();
25417  }
25418 
25420  : Inst_VOP3(iFmt, "v_cvt_u32_f32", false)
25421  {
25422  setFlag(ALU);
25423  setFlag(F32);
25424  } // Inst_VOP3__V_CVT_U32_F32
25425 
25427  {
25428  } // ~Inst_VOP3__V_CVT_U32_F32
25429 
25430  // D.u = (unsigned)S0.f.
25431  // Out-of-range floating point values (including infinity) saturate. NaN
25432  // is converted to 0.
25433  void
25435  {
25436  Wavefront *wf = gpuDynInst->wavefront();
25437  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
25438  VecOperandU32 vdst(gpuDynInst, instData.VDST);
25439 
25440  src.readSrc();
25441 
25442  if (instData.ABS & 0x1) {
25443  src.absModifier();
25444  }
25445 
25446  if (extData.NEG & 0x1) {
25447  src.negModifier();
25448  }
25449 
25450  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25451  if (wf->execMask(lane)) {
25452  int exp;
25453  std::frexp(src[lane],&exp);
25454  if (std::isnan(src[lane])) {
25455  vdst[lane] = 0;
25456  } else if (std::isinf(src[lane])) {
25457  if (std::signbit(src[lane])) {
25458  vdst[lane] = 0;
25459  } else {
25460  vdst[lane] = UINT_MAX;
25461  }
25462  } else if (exp > 31) {
25463  vdst[lane] = UINT_MAX;
25464  } else {
25465  vdst[lane] = (VecElemU32)src[lane];
25466  }
25467  }
25468  }
25469 
25470  vdst.write();
25471  }
25472 
25474  : Inst_VOP3(iFmt, "v_cvt_i32_f32", false)
25475  {
25476  setFlag(ALU);
25477  setFlag(F32);
25478  } // Inst_VOP3__V_CVT_I32_F32
25479 
25481  {
25482  } // ~Inst_VOP3__V_CVT_I32_F32
25483 
25484  // D.i = (int)S0.f.
25485  // Out-of-range floating point values (including infinity) saturate. NaN
25486  // is converted to 0.
25487  void
25489  {
25490  Wavefront *wf = gpuDynInst->wavefront();
25491  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
25492  VecOperandI32 vdst(gpuDynInst, instData.VDST);
25493 
25494  src.readSrc();
25495 
25496  if (instData.ABS & 0x1) {
25497  src.absModifier();
25498  }
25499 
25500  if (extData.NEG & 0x1) {
25501  src.negModifier();
25502  }
25503 
25507  assert(!(instData.ABS & 0x2));
25508  assert(!(instData.ABS & 0x4));
25509  assert(!(extData.NEG & 0x2));
25510  assert(!(extData.NEG & 0x4));
25511 
25512  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25513  if (wf->execMask(lane)) {
25514  int exp;
25515  std::frexp(src[lane],&exp);
25516  if (std::isnan(src[lane])) {
25517  vdst[lane] = 0;
25518  } else if (std::isinf(src[lane]) || exp > 30) {
25519  if (std::signbit(src[lane])) {
25520  vdst[lane] = INT_MIN;
25521  } else {
25522  vdst[lane] = INT_MAX;
25523  }
25524  } else {
25525  vdst[lane] = (VecElemI32)src[lane];
25526  }
25527  }
25528  }
25529 
25530  vdst.write();
25531  }
25532 
25534  : Inst_VOP3(iFmt, "v_mov_fed_b32", false)
25535  {
25536  setFlag(ALU);
25537  } // Inst_VOP3__V_MOV_FED_B32
25538 
25540  {
25541  } // ~Inst_VOP3__V_MOV_FED_B32
25542 
25543  // D.u = S0.u;
25544  // Input and output modifiers not supported; this is an untyped operation.
25545  void
25547  {
25549  }
25550 
25552  : Inst_VOP3(iFmt, "v_cvt_f16_f32", false)
25553  {
25554  setFlag(ALU);
25555  setFlag(F32);
25556  } // Inst_VOP3__V_CVT_F16_F32
25557 
25559  {
25560  } // ~Inst_VOP3__V_CVT_F16_F32
25561 
25562  // D.f16 = flt32_to_flt16(S0.f).
25563  void
25565  {
25567  }
25568 
25570  : Inst_VOP3(iFmt, "v_cvt_f32_f16", false)
25571  {
25572  setFlag(ALU);
25573  setFlag(F32);
25574  } // Inst_VOP3__V_CVT_F32_F16
25575 
25577  {
25578  } // ~Inst_VOP3__V_CVT_F32_F16
25579 
25580  // D.f = flt16_to_flt32(S0.f16).
25581  void
25583  {
25585  }
25586 
25588  InFmt_VOP3 *iFmt)
25589  : Inst_VOP3(iFmt, "v_cvt_rpi_i32_f32", false)
25590  {
25591  setFlag(ALU);
25592  setFlag(F32);
25593  } // Inst_VOP3__V_CVT_RPI_I32_F32
25594 
25596  {
25597  } // ~Inst_VOP3__V_CVT_RPI_I32_F32
25598 
25599  // D.i = (int)floor(S0.f + 0.5).
25600  void
25602  {
25603  Wavefront *wf = gpuDynInst->wavefront();
25604  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
25605  VecOperandI32 vdst(gpuDynInst, instData.VDST);
25606 
25607  src.readSrc();
25608 
25609  if (instData.ABS & 0x1) {
25610  src.absModifier();
25611  }
25612 
25613  if (extData.NEG & 0x1) {
25614  src.negModifier();
25615  }
25616 
25617  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25618  if (wf->execMask(lane)) {
25619  vdst[lane] = (VecElemI32)std::floor(src[lane] + 0.5);
25620  }
25621  }
25622 
25623  vdst.write();
25624  }
25625 
25627  InFmt_VOP3 *iFmt)
25628  : Inst_VOP3(iFmt, "v_cvt_flr_i32_f32", false)
25629  {
25630  setFlag(ALU);
25631  setFlag(F32);
25632  } // Inst_VOP3__V_CVT_FLR_I32_F32
25633 
25635  {
25636  } // ~Inst_VOP3__V_CVT_FLR_I32_F32
25637 
25638  // D.i = (int)floor(S0.f).
25639  void
25641  {
25642  Wavefront *wf = gpuDynInst->wavefront();
25643  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
25644  VecOperandI32 vdst(gpuDynInst, instData.VDST);
25645 
25646  src.readSrc();
25647 
25648  if (instData.ABS & 0x1) {
25649  src.absModifier();
25650  }
25651 
25652  if (extData.NEG & 0x1) {
25653  src.negModifier();
25654  }
25655 
25656  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25657  if (wf->execMask(lane)) {
25658  vdst[lane] = (VecElemI32)std::floor(src[lane]);
25659  }
25660  }
25661 
25662  vdst.write();
25663  }
25664 
25666  : Inst_VOP3(iFmt, "v_cvt_off_f32_i4", false)
25667  {
25668  setFlag(ALU);
25669  setFlag(F32);
25670  } // Inst_VOP3__V_CVT_OFF_F32_I4
25671 
25673  {
25674  } // ~Inst_VOP3__V_CVT_OFF_F32_I4
25675 
25676  // 4-bit signed int to 32-bit float.
25677  void
25679  {
25681  }
25682 
25684  : Inst_VOP3(iFmt, "v_cvt_f32_f64", false)
25685  {
25686  setFlag(ALU);
25687  setFlag(F64);
25688  } // Inst_VOP3__V_CVT_F32_F64
25689 
25691  {
25692  } // ~Inst_VOP3__V_CVT_F32_F64
25693 
25694  // D.f = (float)S0.d.
25695  void
25697  {
25698  Wavefront *wf = gpuDynInst->wavefront();
25699  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
25700  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25701 
25702  src.readSrc();
25703 
25704  if (instData.ABS & 0x1) {
25705  src.absModifier();
25706  }
25707 
25708  if (extData.NEG & 0x1) {
25709  src.negModifier();
25710  }
25711 
25715  assert(!(instData.ABS & 0x2));
25716  assert(!(instData.ABS & 0x4));
25717  assert(!(extData.NEG & 0x2));
25718  assert(!(extData.NEG & 0x4));
25719 
25720  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25721  if (wf->execMask(lane)) {
25722  vdst[lane] = (VecElemF32)src[lane];
25723  }
25724  }
25725 
25726  vdst.write();
25727  }
25728 
25730  : Inst_VOP3(iFmt, "v_cvt_f64_f32", false)
25731  {
25732  setFlag(ALU);
25733  setFlag(F64);
25734  } // Inst_VOP3__V_CVT_F64_F32
25735 
25737  {
25738  } // ~Inst_VOP3__V_CVT_F64_F32
25739 
25740  // D.d = (double)S0.f.
25741  void
25743  {
25744  Wavefront *wf = gpuDynInst->wavefront();
25745  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
25746  VecOperandF64 vdst(gpuDynInst, instData.VDST);
25747 
25748  src.readSrc();
25749 
25750  if (instData.ABS & 0x1) {
25751  src.absModifier();
25752  }
25753 
25754  if (extData.NEG & 0x1) {
25755  src.negModifier();
25756  }
25757 
25761  assert(!(instData.ABS & 0x2));
25762  assert(!(instData.ABS & 0x4));
25763  assert(!(extData.NEG & 0x2));
25764  assert(!(extData.NEG & 0x4));
25765 
25766  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25767  if (wf->execMask(lane)) {
25768  vdst[lane] = (VecElemF64)src[lane];
25769  }
25770  }
25771 
25772  vdst.write();
25773  }
25774 
25776  : Inst_VOP3(iFmt, "v_cvt_f32_ubyte0", false)
25777  {
25778  setFlag(ALU);
25779  setFlag(F32);
25780  } // Inst_VOP3__V_CVT_F32_UBYTE0
25781 
25783  {
25784  } // ~Inst_VOP3__V_CVT_F32_UBYTE0
25785 
25786  // D.f = (float)(S0.u[7:0]).
25787  void
25789  {
25790  Wavefront *wf = gpuDynInst->wavefront();
25791  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
25792  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25793 
25794  src.readSrc();
25795 
25796  if (instData.ABS & 0x1) {
25797  src.absModifier();
25798  }
25799 
25800  if (extData.NEG & 0x1) {
25801  src.negModifier();
25802  }
25803 
25804  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25805  if (wf->execMask(lane)) {
25806  vdst[lane] = (VecElemF32)bits(src[lane], 7, 0);
25807  }
25808  }
25809 
25810  vdst.write();
25811  }
25812 
25814  : Inst_VOP3(iFmt, "v_cvt_f32_ubyte1", false)
25815  {
25816  setFlag(ALU);
25817  setFlag(F32);
25818  } // Inst_VOP3__V_CVT_F32_UBYTE1
25819 
25821  {
25822  } // ~Inst_VOP3__V_CVT_F32_UBYTE1
25823 
25824  // D.f = (float)(S0.u[15:8]).
25825  void
25827  {
25828  Wavefront *wf = gpuDynInst->wavefront();
25829  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
25830  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25831 
25832  src.readSrc();
25833 
25834  if (instData.ABS & 0x1) {
25835  src.absModifier();
25836  }
25837 
25838  if (extData.NEG & 0x1) {
25839  src.negModifier();
25840  }
25841 
25842  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25843  if (wf->execMask(lane)) {
25844  vdst[lane] = (VecElemF32)bits(src[lane], 15, 8);
25845  }
25846  }
25847 
25848  vdst.write();
25849  }
25850 
25852  : Inst_VOP3(iFmt, "v_cvt_f32_ubyte2", false)
25853  {
25854  setFlag(ALU);
25855  setFlag(F32);
25856  } // Inst_VOP3__V_CVT_F32_UBYTE2
25857 
25859  {
25860  } // ~Inst_VOP3__V_CVT_F32_UBYTE2
25861 
25862  // D.f = (float)(S0.u[23:16]).
25863  void
25865  {
25866  Wavefront *wf = gpuDynInst->wavefront();
25867  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
25868  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25869 
25870  src.readSrc();
25871 
25872  if (instData.ABS & 0x1) {
25873  src.absModifier();
25874  }
25875 
25876  if (extData.NEG & 0x1) {
25877  src.negModifier();
25878  }
25879 
25880  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25881  if (wf->execMask(lane)) {
25882  vdst[lane] = (VecElemF32)bits(src[lane], 23, 16);
25883  }
25884  }
25885 
25886  vdst.write();
25887  }
25888 
25890  : Inst_VOP3(iFmt, "v_cvt_f32_ubyte3", false)
25891  {
25892  setFlag(ALU);
25893  setFlag(F32);
25894  } // Inst_VOP3__V_CVT_F32_UBYTE3
25895 
25897  {
25898  } // ~Inst_VOP3__V_CVT_F32_UBYTE3
25899 
25900  // D.f = (float)(S0.u[31:24]).
25901  void
25903  {
25904  Wavefront *wf = gpuDynInst->wavefront();
25905  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
25906  VecOperandF32 vdst(gpuDynInst, instData.VDST);
25907 
25908  src.readSrc();
25909 
25910  if (instData.ABS & 0x1) {
25911  src.absModifier();
25912  }
25913 
25914  if (extData.NEG & 0x1) {
25915  src.negModifier();
25916  }
25917 
25918  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25919  if (wf->execMask(lane)) {
25920  vdst[lane] = (VecElemF32)bits(src[lane], 31, 24);
25921  }
25922  }
25923 
25924  vdst.write();
25925  }
25926 
25928  : Inst_VOP3(iFmt, "v_cvt_u32_f64", false)
25929  {
25930  setFlag(ALU);
25931  setFlag(F64);
25932  } // Inst_VOP3__V_CVT_U32_F64
25933 
25935  {
25936  } // ~Inst_VOP3__V_CVT_U32_F64
25937 
25938  // D.u = (unsigned)S0.d.
25939  // Out-of-range floating point values (including infinity) saturate. NaN
25940  // is converted to 0.
25941  void
25943  {
25944  Wavefront *wf = gpuDynInst->wavefront();
25945  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
25946  VecOperandU32 vdst(gpuDynInst, instData.VDST);
25947 
25948  src.readSrc();
25949 
25950  if (instData.ABS & 0x1) {
25951  src.absModifier();
25952  }
25953 
25954  if (extData.NEG & 0x1) {
25955  src.negModifier();
25956  }
25957 
25958  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
25959  if (wf->execMask(lane)) {
25960  int exp;
25961  std::frexp(src[lane],&exp);
25962  if (std::isnan(src[lane])) {
25963  vdst[lane] = 0;
25964  } else if (std::isinf(src[lane])) {
25965  if (std::signbit(src[lane])) {
25966  vdst[lane] = 0;
25967  } else {
25968  vdst[lane] = UINT_MAX;
25969  }
25970  } else if (exp > 31) {
25971  vdst[lane] = UINT_MAX;
25972  } else {
25973  vdst[lane] = (VecElemU32)src[lane];
25974  }
25975  }
25976  }
25977 
25978  vdst.write();
25979  }
25980 
25982  : Inst_VOP3(iFmt, "v_cvt_f64_u32", false)
25983  {
25984  setFlag(ALU);
25985  setFlag(F64);
25986  } // Inst_VOP3__V_CVT_F64_U32
25987 
25989  {
25990  } // ~Inst_VOP3__V_CVT_F64_U32
25991 
25992  // D.d = (double)S0.u.
25993  void
25995  {
25996  Wavefront *wf = gpuDynInst->wavefront();
25997  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
25998  VecOperandF64 vdst(gpuDynInst, instData.VDST);
25999 
26000  src.readSrc();
26001 
26002  if (instData.ABS & 0x1) {
26003  src.absModifier();
26004  }
26005 
26006  if (extData.NEG & 0x1) {
26007  src.negModifier();
26008  }
26009 
26010  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26011  if (wf->execMask(lane)) {
26012  vdst[lane] = (VecElemF64)src[lane];
26013  }
26014  }
26015 
26016  vdst.write();
26017  }
26018 
26020  : Inst_VOP3(iFmt, "v_trunc_f64", false)
26021  {
26022  setFlag(ALU);
26023  setFlag(F64);
26024  } // Inst_VOP3__V_TRUNC_F64
26025 
26027  {
26028  } // ~Inst_VOP3__V_TRUNC_F64
26029 
26030  // D.d = trunc(S0.d), return integer part of S0.d.
26031  void
26033  {
26034  Wavefront *wf = gpuDynInst->wavefront();
26035  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
26036  VecOperandF64 vdst(gpuDynInst, instData.VDST);
26037 
26038  src.readSrc();
26039 
26040  if (instData.ABS & 0x1) {
26041  src.absModifier();
26042  }
26043 
26044  if (extData.NEG & 0x1) {
26045  src.negModifier();
26046  }
26047 
26048  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26049  if (wf->execMask(lane)) {
26050  vdst[lane] = std::trunc(src[lane]);
26051  }
26052  }
26053 
26054  vdst.write();
26055  }
26056 
26058  : Inst_VOP3(iFmt, "v_ceil_f64", false)
26059  {
26060  setFlag(ALU);
26061  setFlag(F64);
26062  } // Inst_VOP3__V_CEIL_F64
26063 
26065  {
26066  } // ~Inst_VOP3__V_CEIL_F64
26067 
26068  // D.d = ceil(S0.d);
26069  void
26071  {
26072  Wavefront *wf = gpuDynInst->wavefront();
26073  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
26074  VecOperandF64 vdst(gpuDynInst, instData.VDST);
26075 
26076  src.readSrc();
26077 
26078  if (instData.ABS & 0x1) {
26079  src.absModifier();
26080  }
26081 
26082  if (extData.NEG & 0x1) {
26083  src.negModifier();
26084  }
26085 
26086  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26087  if (wf->execMask(lane)) {
26088  vdst[lane] = std::ceil(src[lane]);
26089  }
26090  }
26091 
26092  vdst.write();
26093  }
26094 
26096  : Inst_VOP3(iFmt, "v_rndne_f64", false)
26097  {
26098  setFlag(ALU);
26099  setFlag(F64);
26100  } // Inst_VOP3__V_RNDNE_F64
26101 
26103  {
26104  } // ~Inst_VOP3__V_RNDNE_F64
26105 
26106  // D.d = round_nearest_even(S0.d).
26107  void
26109  {
26110  Wavefront *wf = gpuDynInst->wavefront();
26111  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
26112  VecOperandF64 vdst(gpuDynInst, instData.VDST);
26113 
26114  src.readSrc();
26115 
26116  if (instData.ABS & 0x1) {
26117  src.absModifier();
26118  }
26119 
26120  if (extData.NEG & 0x1) {
26121  src.negModifier();
26122  }
26123 
26124  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26125  if (wf->execMask(lane)) {
26126  vdst[lane] = roundNearestEven(src[lane]);
26127  }
26128  }
26129 
26130  vdst.write();
26131  }
26132 
26134  : Inst_VOP3(iFmt, "v_floor_f64", false)
26135  {
26136  setFlag(ALU);
26137  setFlag(F64);
26138  } // Inst_VOP3__V_FLOOR_F64
26139 
26141  {
26142  } // ~Inst_VOP3__V_FLOOR_F64
26143 
26144  // D.d = floor(S0.d);
26145  void
26147  {
26148  Wavefront *wf = gpuDynInst->wavefront();
26149  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
26150  VecOperandF64 vdst(gpuDynInst, instData.VDST);
26151 
26152  src.readSrc();
26153 
26154  if (instData.ABS & 0x1) {
26155  src.absModifier();
26156  }
26157 
26158  if (extData.NEG & 0x1) {
26159  src.negModifier();
26160  }
26161 
26162  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26163  if (wf->execMask(lane)) {
26164  vdst[lane] = std::floor(src[lane]);
26165  }
26166  }
26167 
26168  vdst.write();
26169  }
26170 
26172  : Inst_VOP3(iFmt, "v_fract_f32", false)
26173  {
26174  setFlag(ALU);
26175  setFlag(F32);
26176  } // Inst_VOP3__V_FRACT_F32
26177 
26179  {
26180  } // ~Inst_VOP3__V_FRACT_F32
26181 
26182  // D.f = modf(S0.f).
26183  void
26185  {
26186  Wavefront *wf = gpuDynInst->wavefront();
26187  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26188  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26189 
26190  src.readSrc();
26191 
26192  if (instData.ABS & 0x1) {
26193  src.absModifier();
26194  }
26195 
26196  if (extData.NEG & 0x1) {
26197  src.negModifier();
26198  }
26199 
26200  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26201  if (wf->execMask(lane)) {
26202  VecElemF32 int_part(0.0);
26203  vdst[lane] = std::modf(src[lane], &int_part);
26204  }
26205  }
26206 
26207  vdst.write();
26208  }
26209 
26211  : Inst_VOP3(iFmt, "v_trunc_f32", false)
26212  {
26213  setFlag(ALU);
26214  setFlag(F32);
26215  } // Inst_VOP3__V_TRUNC_F32
26216 
26218  {
26219  } // ~Inst_VOP3__V_TRUNC_F32
26220 
26221  // D.f = trunc(S0.f), return integer part of S0.f.
26222  void
26224  {
26225  Wavefront *wf = gpuDynInst->wavefront();
26226  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26227  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26228 
26229  src.readSrc();
26230 
26231  if (instData.ABS & 0x1) {
26232  src.absModifier();
26233  }
26234 
26235  if (extData.NEG & 0x1) {
26236  src.negModifier();
26237  }
26238 
26239  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26240  if (wf->execMask(lane)) {
26241  vdst[lane] = std::trunc(src[lane]);
26242  }
26243  }
26244 
26245  vdst.write();
26246  }
26247 
26249  : Inst_VOP3(iFmt, "v_ceil_f32", false)
26250  {
26251  setFlag(ALU);
26252  setFlag(F32);
26253  } // Inst_VOP3__V_CEIL_F32
26254 
26256  {
26257  } // ~Inst_VOP3__V_CEIL_F32
26258 
26259  // D.f = ceil(S0.f);
26260  void
26262  {
26263  Wavefront *wf = gpuDynInst->wavefront();
26264  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26265  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26266 
26267  src.readSrc();
26268 
26269  if (instData.ABS & 0x1) {
26270  src.absModifier();
26271  }
26272 
26273  if (extData.NEG & 0x1) {
26274  src.negModifier();
26275  }
26276 
26277  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26278  if (wf->execMask(lane)) {
26279  vdst[lane] = std::ceil(src[lane]);
26280  }
26281  }
26282 
26283  vdst.write();
26284  }
26285 
26287  : Inst_VOP3(iFmt, "v_rndne_f32", false)
26288  {
26289  setFlag(ALU);
26290  setFlag(F32);
26291  } // Inst_VOP3__V_RNDNE_F32
26292 
26294  {
26295  } // ~Inst_VOP3__V_RNDNE_F32
26296 
26297  // D.f = round_nearest_even(S0.f).
26298  void
26300  {
26301  Wavefront *wf = gpuDynInst->wavefront();
26302  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26303  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26304 
26305  src.readSrc();
26306 
26307  if (instData.ABS & 0x1) {
26308  src.absModifier();
26309  }
26310 
26311  if (extData.NEG & 0x1) {
26312  src.negModifier();
26313  }
26314 
26315  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26316  if (wf->execMask(lane)) {
26317  vdst[lane] = roundNearestEven(src[lane]);
26318  }
26319  }
26320 
26321  vdst.write();
26322  }
26323 
26325  : Inst_VOP3(iFmt, "v_floor_f32", false)
26326  {
26327  setFlag(ALU);
26328  setFlag(F32);
26329  } // Inst_VOP3__V_FLOOR_F32
26330 
26332  {
26333  } // ~Inst_VOP3__V_FLOOR_F32
26334 
26335  // D.f = floor(S0.f);
26336  void
26338  {
26339  Wavefront *wf = gpuDynInst->wavefront();
26340  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26341  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26342 
26343  src.readSrc();
26344 
26345  if (instData.ABS & 0x1) {
26346  src.absModifier();
26347  }
26348 
26349  if (extData.NEG & 0x1) {
26350  src.negModifier();
26351  }
26352 
26353  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26354  if (wf->execMask(lane)) {
26355  vdst[lane] = std::floor(src[lane]);
26356  }
26357  }
26358 
26359  vdst.write();
26360  }
26361 
26363  : Inst_VOP3(iFmt, "v_exp_f32", false)
26364  {
26365  setFlag(ALU);
26366  setFlag(F32);
26367  } // Inst_VOP3__V_EXP_F32
26368 
26370  {
26371  } // ~Inst_VOP3__V_EXP_F32
26372 
26373  // D.f = pow(2.0, S0.f).
26374  void
26376  {
26377  Wavefront *wf = gpuDynInst->wavefront();
26378  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26379  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26380 
26381  src.readSrc();
26382 
26383  if (instData.ABS & 0x1) {
26384  src.absModifier();
26385  }
26386 
26387  if (extData.NEG & 0x1) {
26388  src.negModifier();
26389  }
26390 
26391  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26392  if (wf->execMask(lane)) {
26393  vdst[lane] = std::pow(2.0, src[lane]);
26394  }
26395  }
26396 
26397  vdst.write();
26398  }
26399 
26401  : Inst_VOP3(iFmt, "v_log_f32", false)
26402  {
26403  setFlag(ALU);
26404  setFlag(F32);
26405  } // Inst_VOP3__V_LOG_F32
26406 
26408  {
26409  } // ~Inst_VOP3__V_LOG_F32
26410 
26411  // D.f = log2(S0.f).
26412  void
26414  {
26415  Wavefront *wf = gpuDynInst->wavefront();
26416  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26417  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26418 
26419  src.readSrc();
26420 
26421  if (instData.ABS & 0x1) {
26422  src.absModifier();
26423  }
26424 
26425  if (extData.NEG & 0x1) {
26426  src.negModifier();
26427  }
26428 
26432  assert(!(instData.ABS & 0x2));
26433  assert(!(instData.ABS & 0x4));
26434  assert(!(extData.NEG & 0x2));
26435  assert(!(extData.NEG & 0x4));
26436 
26437  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26438  if (wf->execMask(lane)) {
26439  vdst[lane] = std::log2(src[lane]);
26440  }
26441  }
26442 
26443  vdst.write();
26444  }
26445 
26447  : Inst_VOP3(iFmt, "v_rcp_f32", false)
26448  {
26449  setFlag(ALU);
26450  setFlag(F32);
26451  } // Inst_VOP3__V_RCP_F32
26452 
26454  {
26455  } // ~Inst_VOP3__V_RCP_F32
26456 
26457  // D.f = 1.0 / S0.f.
26458  void
26460  {
26461  Wavefront *wf = gpuDynInst->wavefront();
26462  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26463  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26464 
26465  src.readSrc();
26466 
26467  if (instData.ABS & 0x1) {
26468  src.absModifier();
26469  }
26470 
26471  if (extData.NEG & 0x1) {
26472  src.negModifier();
26473  }
26474 
26475  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26476  if (wf->execMask(lane)) {
26477  vdst[lane] = 1.0 / src[lane];
26478  }
26479  }
26480 
26481  vdst.write();
26482  }
26483 
26485  : Inst_VOP3(iFmt, "v_rcp_iflag_f32", false)
26486  {
26487  setFlag(ALU);
26488  setFlag(F32);
26489  } // Inst_VOP3__V_RCP_IFLAG_F32
26490 
26492  {
26493  } // ~Inst_VOP3__V_RCP_IFLAG_F32
26494 
26495  // D.f = 1.0 / S0.f.
26496  void
26498  {
26499  Wavefront *wf = gpuDynInst->wavefront();
26500  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26501  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26502 
26503  src.readSrc();
26504 
26505  if (instData.ABS & 0x1) {
26506  src.absModifier();
26507  }
26508 
26509  if (extData.NEG & 0x1) {
26510  src.negModifier();
26511  }
26512 
26513  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26514  if (wf->execMask(lane)) {
26515  vdst[lane] = 1.0 / src[lane];
26516  }
26517  }
26518 
26519  vdst.write();
26520  }
26521 
26523  : Inst_VOP3(iFmt, "v_rsq_f32", false)
26524  {
26525  setFlag(ALU);
26526  setFlag(F32);
26527  } // Inst_VOP3__V_RSQ_F32
26528 
26530  {
26531  } // ~Inst_VOP3__V_RSQ_F32
26532 
26533  // D.f = 1.0 / sqrt(S0.f).
26534  void
26536  {
26537  Wavefront *wf = gpuDynInst->wavefront();
26538  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26539  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26540 
26541  src.readSrc();
26542 
26543  if (instData.ABS & 0x1) {
26544  src.absModifier();
26545  }
26546 
26547  if (extData.NEG & 0x1) {
26548  src.negModifier();
26549  }
26550 
26551  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26552  if (wf->execMask(lane)) {
26553  vdst[lane] = 1.0 / std::sqrt(src[lane]);
26554  }
26555  }
26556 
26557  vdst.write();
26558  }
26559 
26561  : Inst_VOP3(iFmt, "v_rcp_f64", false)
26562  {
26563  setFlag(ALU);
26564  setFlag(F64);
26565  } // Inst_VOP3__V_RCP_F64
26566 
26568  {
26569  } // ~Inst_VOP3__V_RCP_F64
26570 
26571  // D.d = 1.0 / S0.d.
26572  void
26574  {
26575  Wavefront *wf = gpuDynInst->wavefront();
26576  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
26577  VecOperandF64 vdst(gpuDynInst, instData.VDST);
26578 
26579  src.readSrc();
26580 
26581  if (instData.ABS & 0x1) {
26582  src.absModifier();
26583  }
26584 
26585  if (extData.NEG & 0x1) {
26586  src.negModifier();
26587  }
26588 
26589  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26590  if (wf->execMask(lane)) {
26591  if (std::fpclassify(src[lane]) == FP_ZERO) {
26592  vdst[lane] = +INFINITY;
26593  } else if (std::isnan(src[lane])) {
26594  vdst[lane] = NAN;
26595  } else if (std::isinf(src[lane])) {
26596  if (std::signbit(src[lane])) {
26597  vdst[lane] = -0.0;
26598  } else {
26599  vdst[lane] = 0.0;
26600  }
26601  } else {
26602  vdst[lane] = 1.0 / src[lane];
26603  }
26604  }
26605  }
26606 
26607  vdst.write();
26608  }
26609 
26611  : Inst_VOP3(iFmt, "v_rsq_f64", false)
26612  {
26613  setFlag(ALU);
26614  setFlag(F64);
26615  } // Inst_VOP3__V_RSQ_F64
26616 
26618  {
26619  } // ~Inst_VOP3__V_RSQ_F64
26620 
26621  // D.d = 1.0 / sqrt(S0.d).
26622  void
26624  {
26625  Wavefront *wf = gpuDynInst->wavefront();
26626  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
26627  VecOperandF64 vdst(gpuDynInst, instData.VDST);
26628 
26629  src.readSrc();
26630 
26631  if (instData.ABS & 0x1) {
26632  src.absModifier();
26633  }
26634 
26635  if (extData.NEG & 0x1) {
26636  src.negModifier();
26637  }
26638 
26639  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26640  if (wf->execMask(lane)) {
26641  if (std::fpclassify(src[lane]) == FP_ZERO) {
26642  vdst[lane] = +INFINITY;
26643  } else if (std::isnan(src[lane])) {
26644  vdst[lane] = NAN;
26645  } else if (std::isinf(src[lane]) && !std::signbit(src[lane])) {
26646  vdst[lane] = 0.0;
26647  } else if (std::signbit(src[lane])) {
26648  vdst[lane] = NAN;
26649  } else {
26650  vdst[lane] = 1.0 / std::sqrt(src[lane]);
26651  }
26652  }
26653  }
26654 
26655  vdst.write();
26656  }
26657 
26659  : Inst_VOP3(iFmt, "v_sqrt_f32", false)
26660  {
26661  setFlag(ALU);
26662  setFlag(F32);
26663  } // Inst_VOP3__V_SQRT_F32
26664 
26666  {
26667  } // ~Inst_VOP3__V_SQRT_F32
26668 
26669  // D.f = sqrt(S0.f).
26670  void
26672  {
26673  Wavefront *wf = gpuDynInst->wavefront();
26674  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26675  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26676 
26677  src.readSrc();
26678 
26679  if (instData.ABS & 0x1) {
26680  src.absModifier();
26681  }
26682 
26683  if (extData.NEG & 0x1) {
26684  src.negModifier();
26685  }
26686 
26687  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26688  if (wf->execMask(lane)) {
26689  vdst[lane] = std::sqrt(src[lane]);
26690  }
26691  }
26692 
26693  vdst.write();
26694  }
26695 
26697  : Inst_VOP3(iFmt, "v_sqrt_f64", false)
26698  {
26699  setFlag(ALU);
26700  setFlag(F64);
26701  } // Inst_VOP3__V_SQRT_F64
26702 
26704  {
26705  } // ~Inst_VOP3__V_SQRT_F64
26706 
26707  // D.d = sqrt(S0.d).
26708  void
26710  {
26711  Wavefront *wf = gpuDynInst->wavefront();
26712  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
26713  VecOperandF64 vdst(gpuDynInst, instData.VDST);
26714 
26715  src.readSrc();
26716 
26717  if (instData.ABS & 0x1) {
26718  src.absModifier();
26719  }
26720 
26721  if (extData.NEG & 0x1) {
26722  src.negModifier();
26723  }
26724 
26725  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26726  if (wf->execMask(lane)) {
26727  vdst[lane] = std::sqrt(src[lane]);
26728  }
26729  }
26730 
26731  vdst.write();
26732  }
26733 
26735  : Inst_VOP3(iFmt, "v_sin_f32", false)
26736  {
26737  setFlag(ALU);
26738  setFlag(F32);
26739  } // Inst_VOP3__V_SIN_F32
26740 
26742  {
26743  } // ~Inst_VOP3__V_SIN_F32
26744 
26745  // D.f = sin(S0.f * 2 * PI).
26746  void
26748  {
26749  Wavefront *wf = gpuDynInst->wavefront();
26750  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26751  ConstScalarOperandF32 pi(gpuDynInst, REG_PI);
26752  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26753 
26754  src.readSrc();
26755  pi.read();
26756 
26757  if (instData.ABS & 0x1) {
26758  src.absModifier();
26759  }
26760 
26761  if (extData.NEG & 0x1) {
26762  src.negModifier();
26763  }
26764 
26765  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26766  if (wf->execMask(lane)) {
26767  vdst[lane] = std::sin(src[lane] * 2 * pi.rawData());
26768  }
26769  }
26770 
26771  vdst.write();
26772  }
26773 
26775  : Inst_VOP3(iFmt, "v_cos_f32", false)
26776  {
26777  setFlag(ALU);
26778  setFlag(F32);
26779  } // Inst_VOP3__V_COS_F32
26780 
26782  {
26783  } // ~Inst_VOP3__V_COS_F32
26784 
26785  // D.f = cos(S0.f * 2 * PI).
26786  void
26788  {
26789  Wavefront *wf = gpuDynInst->wavefront();
26790  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
26791  ConstScalarOperandF32 pi(gpuDynInst, REG_PI);
26792  VecOperandF32 vdst(gpuDynInst, instData.VDST);
26793 
26794  src.readSrc();
26795  pi.read();
26796 
26797  if (instData.ABS & 0x1) {
26798  src.absModifier();
26799  }
26800 
26801  if (extData.NEG & 0x1) {
26802  src.negModifier();
26803  }
26804 
26805  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26806  if (wf->execMask(lane)) {
26807  vdst[lane] = std::cos(src[lane] * 2 * pi.rawData());
26808  }
26809  }
26810 
26811  vdst.write();
26812  }
26813 
26815  : Inst_VOP3(iFmt, "v_not_b32", false)
26816  {
26817  setFlag(ALU);
26818  } // Inst_VOP3__V_NOT_B32
26819 
26821  {
26822  } // ~Inst_VOP3__V_NOT_B32
26823 
26824  // D.u = ~S0.u.
26825  // Input and output modifiers not supported.
26826  void
26828  {
26829  Wavefront *wf = gpuDynInst->wavefront();
26830  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
26831  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26832 
26833  src.readSrc();
26834 
26835  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26836  if (wf->execMask(lane)) {
26837  vdst[lane] = ~src[lane];
26838  }
26839  }
26840 
26841  vdst.write();
26842  }
26843 
26845  : Inst_VOP3(iFmt, "v_bfrev_b32", false)
26846  {
26847  setFlag(ALU);
26848  } // Inst_VOP3__V_BFREV_B32
26849 
26851  {
26852  } // ~Inst_VOP3__V_BFREV_B32
26853 
26854  // D.u[31:0] = S0.u[0:31], bitfield reverse.
26855  // Input and output modifiers not supported.
26856  void
26858  {
26859  Wavefront *wf = gpuDynInst->wavefront();
26860  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
26861  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26862 
26863  src.readSrc();
26864 
26865  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26866  if (wf->execMask(lane)) {
26867  vdst[lane] = reverseBits(src[lane]);
26868  }
26869  }
26870 
26871  vdst.write();
26872  }
26873 
26875  : Inst_VOP3(iFmt, "v_ffbh_u32", false)
26876  {
26877  setFlag(ALU);
26878  } // Inst_VOP3__V_FFBH_U32
26879 
26881  {
26882  } // ~Inst_VOP3__V_FFBH_U32
26883 
26884  // D.u = position of first 1 in S0.u from MSB;
26885  // D.u = 0xffffffff if S0.u == 0.
26886  void
26888  {
26889  Wavefront *wf = gpuDynInst->wavefront();
26890  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
26891  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26892 
26893  src.readSrc();
26894 
26895  if (instData.ABS & 0x1) {
26896  src.absModifier();
26897  }
26898 
26899  if (extData.NEG & 0x1) {
26900  src.negModifier();
26901  }
26902 
26903  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26904  if (wf->execMask(lane)) {
26905  vdst[lane] = findFirstOneMsb(src[lane]);
26906  }
26907  }
26908 
26909  vdst.write();
26910  }
26911 
26913  : Inst_VOP3(iFmt, "v_ffbl_b32", false)
26914  {
26915  setFlag(ALU);
26916  } // Inst_VOP3__V_FFBL_B32
26917 
26919  {
26920  } // ~Inst_VOP3__V_FFBL_B32
26921 
26922  // D.u = position of first 1 in S0.u from LSB;
26923  // D.u = 0xffffffff if S0.u == 0.
26924  void
26926  {
26927  Wavefront *wf = gpuDynInst->wavefront();
26928  ConstVecOperandU32 src(gpuDynInst, extData.SRC0);
26929  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26930 
26931  src.readSrc();
26932 
26933  if (instData.ABS & 0x1) {
26934  src.absModifier();
26935  }
26936 
26937  if (extData.NEG & 0x1) {
26938  src.negModifier();
26939  }
26940 
26941  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26942  if (wf->execMask(lane)) {
26943  vdst[lane] = findFirstOne(src[lane]);
26944  }
26945  }
26946 
26947  vdst.write();
26948  }
26949 
26951  : Inst_VOP3(iFmt, "v_ffbh_i32", false)
26952  {
26953  setFlag(ALU);
26954  } // Inst_VOP3__V_FFBH_I32
26955 
26957  {
26958  } // ~Inst_VOP3__V_FFBH_I32
26959 
26960  // D.u = position of first bit different from sign bit in S0.i from MSB;
26961  // D.u = 0xffffffff if S0.i == 0 or S0.i == 0xffffffff.
26962  void
26964  {
26965  Wavefront *wf = gpuDynInst->wavefront();
26966  ConstVecOperandI32 src(gpuDynInst, extData.SRC0);
26967  VecOperandU32 vdst(gpuDynInst, instData.VDST);
26968 
26969  src.readSrc();
26970 
26971  if (instData.ABS & 0x1) {
26972  src.absModifier();
26973  }
26974 
26975  if (extData.NEG & 0x1) {
26976  src.negModifier();
26977  }
26978 
26979  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
26980  if (wf->execMask(lane)) {
26981  vdst[lane] = firstOppositeSignBit(src[lane]);
26982  }
26983  }
26984 
26985  vdst.write();
26986  }
26987 
26989  InFmt_VOP3 *iFmt)
26990  : Inst_VOP3(iFmt, "v_frexp_exp_i32_f64", false)
26991  {
26992  setFlag(ALU);
26993  setFlag(F64);
26994  } // Inst_VOP3__V_FREXP_EXP_I32_F64
26995 
26997  {
26998  } // ~Inst_VOP3__V_FREXP_EXP_I32_F64
26999 
27000  // See V_FREXP_EXP_I32_F32.
27001  void
27003  {
27004  Wavefront *wf = gpuDynInst->wavefront();
27005  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
27006  VecOperandI32 vdst(gpuDynInst, instData.VDST);
27007 
27008  src.readSrc();
27009 
27010  if (instData.ABS & 0x1) {
27011  src.absModifier();
27012  }
27013 
27014  if (extData.NEG & 0x1) {
27015  src.negModifier();
27016  }
27017 
27018  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27019  if (wf->execMask(lane)) {
27020  if (std::isinf(src[lane]) || std::isnan(src[lane])) {
27021  vdst[lane] = 0;
27022  } else {
27023  VecElemI32 exp(0);
27024  std::frexp(src[lane], &exp);
27025  vdst[lane] = exp;
27026  }
27027  }
27028  }
27029 
27030  vdst.write();
27031  }
27032 
27034  : Inst_VOP3(iFmt, "v_frexp_mant_f64", false)
27035  {
27036  setFlag(ALU);
27037  setFlag(F64);
27038  } // Inst_VOP3__V_FREXP_MANT_F64
27039 
27041  {
27042  } // ~Inst_VOP3__V_FREXP_MANT_F64
27043 
27044  void
27046  {
27047  Wavefront *wf = gpuDynInst->wavefront();
27048  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
27049  VecOperandF64 vdst(gpuDynInst, instData.VDST);
27050 
27051  src.readSrc();
27052 
27053  if (instData.ABS & 0x1) {
27054  src.absModifier();
27055  }
27056 
27057  if (extData.NEG & 0x1) {
27058  src.negModifier();
27059  }
27060 
27061  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27062  if (wf->execMask(lane)) {
27063  VecElemI32 exp(0);
27064  vdst[lane] = std::frexp(src[lane], &exp);
27065  }
27066  }
27067 
27068  vdst.write();
27069  }
27070 
27072  : Inst_VOP3(iFmt, "v_fract_f64", false)
27073  {
27074  setFlag(ALU);
27075  setFlag(F64);
27076  } // Inst_VOP3__V_FRACT_F64
27077 
27079  {
27080  } // ~Inst_VOP3__V_FRACT_F64
27081 
27082  void
27084  {
27085  Wavefront *wf = gpuDynInst->wavefront();
27086  ConstVecOperandF64 src(gpuDynInst, extData.SRC0);
27087  VecOperandF64 vdst(gpuDynInst, instData.VDST);
27088 
27089  src.readSrc();
27090 
27091  if (instData.ABS & 0x1) {
27092  src.absModifier();
27093  }
27094 
27095  if (extData.NEG & 0x1) {
27096  src.negModifier();
27097  }
27098 
27099  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27100  if (wf->execMask(lane)) {
27101  VecElemF32 int_part(0.0);
27102  vdst[lane] = std::modf(src[lane], &int_part);
27103  }
27104  }
27105 
27106  vdst.write();
27107  }
27108 
27110  InFmt_VOP3 *iFmt)
27111  : Inst_VOP3(iFmt, "v_frexp_exp_i32_f32", false)
27112  {
27113  setFlag(ALU);
27114  setFlag(F32);
27115  } // Inst_VOP3__V_FREXP_EXP_I32_F32
27116 
27118  {
27119  } // ~Inst_VOP3__V_FREXP_EXP_I32_F32
27120 
27121  // frexp(S0.f, Exponenti(S0.f))
27122  // if (S0.f == INF || S0.f == NAN) then D.i = 0;
27123  // else D.i = Exponent(S0.f)
27124  void
27126  {
27127  Wavefront *wf = gpuDynInst->wavefront();
27128  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
27129  VecOperandI32 vdst(gpuDynInst, instData.VDST);
27130 
27131  src.readSrc();
27132 
27133  if (instData.ABS & 0x1) {
27134  src.absModifier();
27135  }
27136 
27137  if (extData.NEG & 0x1) {
27138  src.negModifier();
27139  }
27140 
27141  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27142  if (wf->execMask(lane)) {
27143  if (std::isinf(src[lane])|| std::isnan(src[lane])) {
27144  vdst[lane] = 0;
27145  } else {
27146  VecElemI32 exp(0);
27147  std::frexp(src[lane], &exp);
27148  vdst[lane] = exp;
27149  }
27150  }
27151  }
27152 
27153  vdst.write();
27154  }
27155 
27157  : Inst_VOP3(iFmt, "v_frexp_mant_f32", false)
27158  {
27159  setFlag(ALU);
27160  setFlag(F32);
27161  } // Inst_VOP3__V_FREXP_MANT_F32
27162 
27164  {
27165  } // ~Inst_VOP3__V_FREXP_MANT_F32
27166 
27167  // if (S0.f == INF || S0.f == NAN) then D.f = S0.f;
27168  // else D.f = Mantissa(S0.f).
27169  void
27171  {
27172  Wavefront *wf = gpuDynInst->wavefront();
27173  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
27174  VecOperandF32 vdst(gpuDynInst, instData.VDST);
27175 
27176  src.readSrc();
27177 
27178  if (instData.ABS & 0x1) {
27179  src.absModifier();
27180  }
27181 
27182  if (extData.NEG & 0x1) {
27183  src.negModifier();
27184  }
27185 
27186  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27187  if (wf->execMask(lane)) {
27188  if (std::isinf(src[lane]) || std::isnan(src[lane])) {
27189  vdst[lane] = src[lane];
27190  } else {
27191  VecElemI32 exp(0);
27192  vdst[lane] = std::frexp(src[lane], &exp);
27193  }
27194  }
27195  }
27196 
27197  vdst.write();
27198  }
27199 
27201  : Inst_VOP3(iFmt, "v_clrexcp", false)
27202  {
27203  } // Inst_VOP3__V_CLREXCP
27204 
27206  {
27207  } // ~Inst_VOP3__V_CLREXCP
27208 
27209  void
27211  {
27213  }
27214 
27216  : Inst_VOP3(iFmt, "v_cvt_f16_u16", false)
27217  {
27218  setFlag(ALU);
27219  setFlag(F16);
27220  } // Inst_VOP3__V_CVT_F16_U16
27221 
27223  {
27224  } // ~Inst_VOP3__V_CVT_F16_U16
27225 
27226  // D.f16 = uint16_to_flt16(S.u16).
27227  void
27229  {
27231  }
27232 
27234  : Inst_VOP3(iFmt, "v_cvt_f16_i16", false)
27235  {
27236  setFlag(ALU);
27237  setFlag(F16);
27238  } // Inst_VOP3__V_CVT_F16_I16
27239 
27241  {
27242  } // ~Inst_VOP3__V_CVT_F16_I16
27243 
27244  // D.f16 = int16_to_flt16(S.i16).
27245  void
27247  {
27249  }
27250 
27252  : Inst_VOP3(iFmt, "v_cvt_u16_f16", false)
27253  {
27254  setFlag(ALU);
27255  setFlag(F16);
27256  } // Inst_VOP3__V_CVT_U16_F16
27257 
27259  {
27260  } // ~Inst_VOP3__V_CVT_U16_F16
27261 
27262  // D.u16 = flt16_to_uint16(S.f16).
27263  void
27265  {
27267  }
27268 
27270  : Inst_VOP3(iFmt, "v_cvt_i16_f16", false)
27271  {
27272  setFlag(ALU);
27273  setFlag(F16);
27274  } // Inst_VOP3__V_CVT_I16_F16
27275 
27277  {
27278  } // ~Inst_VOP3__V_CVT_I16_F16
27279 
27280  // D.i16 = flt16_to_int16(S.f16).
27281  void
27283  {
27285  }
27286 
27288  : Inst_VOP3(iFmt, "v_rcp_f16", false)
27289  {
27290  setFlag(ALU);
27291  setFlag(F16);
27292  } // Inst_VOP3__V_RCP_F16
27293 
27295  {
27296  } // ~Inst_VOP3__V_RCP_F16
27297 
27298  // if (S0.f16 == 1.0f)
27299  // D.f16 = 1.0f;
27300  // else
27301  // D.f16 = 1 / S0.f16.
27302  void
27304  {
27306  }
27307 
27309  : Inst_VOP3(iFmt, "v_sqrt_f16", false)
27310  {
27311  setFlag(ALU);
27312  setFlag(F16);
27313  } // Inst_VOP3__V_SQRT_F16
27314 
27316  {
27317  } // ~Inst_VOP3__V_SQRT_F16
27318 
27319  // if (S0.f16 == 1.0f)
27320  // D.f16 = 1.0f;
27321  // else
27322  // D.f16 = sqrt(S0.f16).
27323  void
27325  {
27327  }
27328 
27330  : Inst_VOP3(iFmt, "v_rsq_f16", false)
27331  {
27332  setFlag(ALU);
27333  setFlag(F16);
27334  } // Inst_VOP3__V_RSQ_F16
27335 
27337  {
27338  } // ~Inst_VOP3__V_RSQ_F16
27339 
27340  // if (S0.f16 == 1.0f)
27341  // D.f16 = 1.0f;
27342  // else
27343  // D.f16 = 1 / sqrt(S0.f16).
27344  void
27346  {
27348  }
27349 
27351  : Inst_VOP3(iFmt, "v_log_f16", false)
27352  {
27353  setFlag(ALU);
27354  setFlag(F16);
27355  } // Inst_VOP3__V_LOG_F16
27356 
27358  {
27359  } // ~Inst_VOP3__V_LOG_F16
27360 
27361  // if (S0.f16 == 1.0f)
27362  // D.f16 = 0.0f;
27363  // else
27364  // D.f16 = log2(S0.f16).
27365  void
27367  {
27369  }
27370 
27372  : Inst_VOP3(iFmt, "v_exp_f16", false)
27373  {
27374  setFlag(ALU);
27375  setFlag(F16);
27376  } // Inst_VOP3__V_EXP_F16
27377 
27379  {
27380  } // ~Inst_VOP3__V_EXP_F16
27381 
27382  // if (S0.f16 == 0.0f)
27383  // D.f16 = 1.0f;
27384  // else
27385  // D.f16 = pow(2.0, S0.f16).
27386  void
27388  {
27390  }
27391 
27393  : Inst_VOP3(iFmt, "v_frexp_mant_f16", false)
27394  {
27395  setFlag(ALU);
27396  setFlag(F16);
27397  } // Inst_VOP3__V_FREXP_MANT_F16
27398 
27400  {
27401  } // ~Inst_VOP3__V_FREXP_MANT_F16
27402 
27403  // if (S0.f16 == +-INF || S0.f16 == NAN)
27404  // D.f16 = S0.f16;
27405  // else
27406  // D.f16 = mantissa(S0.f16).
27407  void
27409  {
27411  }
27412 
27414  InFmt_VOP3 *iFmt)
27415  : Inst_VOP3(iFmt, "v_frexp_exp_i16_f16", false)
27416  {
27417  setFlag(ALU);
27418  setFlag(F16);
27419  } // Inst_VOP3__V_FREXP_EXP_I16_F16
27420 
27422  {
27423  } // ~Inst_VOP3__V_FREXP_EXP_I16_F16
27424 
27425  void
27427  {
27429  }
27430 
27432  : Inst_VOP3(iFmt, "v_floor_f16", false)
27433  {
27434  setFlag(ALU);
27435  setFlag(F16);
27436  } // Inst_VOP3__V_FLOOR_F16
27437 
27439  {
27440  } // ~Inst_VOP3__V_FLOOR_F16
27441 
27442  // D.f16 = floor(S0.f16);
27443  void
27445  {
27447  }
27448 
27450  : Inst_VOP3(iFmt, "v_ceil_f16", false)
27451  {
27452  setFlag(ALU);
27453  setFlag(F16);
27454  } // Inst_VOP3__V_CEIL_F16
27455 
27457  {
27458  } // ~Inst_VOP3__V_CEIL_F16
27459 
27460  // D.f16 = ceil(S0.f16);
27461  void
27463  {
27465  }
27466 
27468  : Inst_VOP3(iFmt, "v_trunc_f16", false)
27469  {
27470  setFlag(ALU);
27471  setFlag(F16);
27472  } // Inst_VOP3__V_TRUNC_F16
27473 
27475  {
27476  } // ~Inst_VOP3__V_TRUNC_F16
27477 
27478  // D.f16 = trunc(S0.f16).
27479  void
27481  {
27483  }
27484 
27486  : Inst_VOP3(iFmt, "v_rndne_f16", false)
27487  {
27488  setFlag(ALU);
27489  setFlag(F16);
27490  } // Inst_VOP3__V_RNDNE_F16
27491 
27493  {
27494  } // ~Inst_VOP3__V_RNDNE_F16
27495 
27496  // D.f16 = roundNearestEven(S0.f16);
27497  void
27499  {
27501  }
27502 
27504  : Inst_VOP3(iFmt, "v_fract_f16", false)
27505  {
27506  setFlag(ALU);
27507  setFlag(F16);
27508  } // Inst_VOP3__V_FRACT_F16
27509 
27511  {
27512  } // ~Inst_VOP3__V_FRACT_F16
27513 
27514  // D.f16 = S0.f16 + -floor(S0.f16).
27515  void
27517  {
27519  }
27520 
27522  : Inst_VOP3(iFmt, "v_sin_f16", false)
27523  {
27524  setFlag(ALU);
27525  setFlag(F16);
27526  } // Inst_VOP3__V_SIN_F16
27527 
27529  {
27530  } // ~Inst_VOP3__V_SIN_F16
27531 
27532  // D.f16 = sin(S0.f16 * 2 * PI).
27533  void
27535  {
27537  }
27538 
27540  : Inst_VOP3(iFmt, "v_cos_f16", false)
27541  {
27542  setFlag(ALU);
27543  setFlag(F16);
27544  } // Inst_VOP3__V_COS_F16
27545 
27547  {
27548  } // ~Inst_VOP3__V_COS_F16
27549 
27550  // D.f16 = cos(S0.f16 * 2 * PI).
27551  void
27553  {
27555  }
27556 
27558  : Inst_VOP3(iFmt, "v_exp_legacy_f32", false)
27559  {
27560  setFlag(ALU);
27561  setFlag(F32);
27562  } // Inst_VOP3__V_EXP_LEGACY_F32
27563 
27565  {
27566  } // ~Inst_VOP3__V_EXP_LEGACY_F32
27567 
27568  // D.f = pow(2.0, S0.f)
27569  void
27571  {
27572  Wavefront *wf = gpuDynInst->wavefront();
27573  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
27574  VecOperandF32 vdst(gpuDynInst, instData.VDST);
27575 
27576  src.readSrc();
27577 
27578  if (instData.ABS & 0x1) {
27579  src.absModifier();
27580  }
27581 
27582  if (extData.NEG & 0x1) {
27583  src.negModifier();
27584  }
27585 
27589  assert(!(instData.ABS & 0x2));
27590  assert(!(instData.ABS & 0x4));
27591  assert(!(extData.NEG & 0x2));
27592  assert(!(extData.NEG & 0x4));
27593 
27594  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27595  if (wf->execMask(lane)) {
27596  vdst[lane] = std::pow(2.0, src[lane]);
27597  }
27598  }
27599 
27600  vdst.write();
27601  }
27602 
27604  : Inst_VOP3(iFmt, "v_log_legacy_f32", false)
27605  {
27606  setFlag(ALU);
27607  setFlag(F32);
27608  } // Inst_VOP3__V_LOG_LEGACY_F32
27609 
27611  {
27612  } // ~Inst_VOP3__V_LOG_LEGACY_F32
27613 
27614  // D.f = log2(S0.f).
27615  void
27617  {
27618  Wavefront *wf = gpuDynInst->wavefront();
27619  ConstVecOperandF32 src(gpuDynInst, extData.SRC0);
27620  VecOperandF32 vdst(gpuDynInst, instData.VDST);
27621 
27622  src.readSrc();
27623 
27624  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27625  if (wf->execMask(lane)) {
27626  vdst[lane] = std::log2(src[lane]);
27627  }
27628  }
27629 
27630  vdst.write();
27631  }
27632 
27634  : Inst_VOP3(iFmt, "v_mad_legacy_f32", false)
27635  {
27636  setFlag(ALU);
27637  setFlag(F32);
27638  setFlag(MAD);
27639  } // Inst_VOP3__V_MAD_LEGACY_F32
27640 
27642  {
27643  } // ~Inst_VOP3__V_MAD_LEGACY_F32
27644 
27645  // D.f = S0.f * S1.f + S2.f
27646  void
27648  {
27649  Wavefront *wf = gpuDynInst->wavefront();
27650  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
27651  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
27652  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
27653  VecOperandF32 vdst(gpuDynInst, instData.VDST);
27654 
27655  src0.readSrc();
27656  src1.readSrc();
27657  src2.readSrc();
27658 
27659  if (instData.ABS & 0x1) {
27660  src0.absModifier();
27661  }
27662 
27663  if (instData.ABS & 0x2) {
27664  src1.absModifier();
27665  }
27666 
27667  if (instData.ABS & 0x4) {
27668  src2.absModifier();
27669  }
27670 
27671  if (extData.NEG & 0x1) {
27672  src0.negModifier();
27673  }
27674 
27675  if (extData.NEG & 0x2) {
27676  src1.negModifier();
27677  }
27678 
27679  if (extData.NEG & 0x4) {
27680  src2.negModifier();
27681  }
27682 
27683  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27684  if (wf->execMask(lane)) {
27685  vdst[lane] = std::fma(src0[lane], src1[lane], src2[lane]);
27686  }
27687  }
27688 
27689  vdst.write();
27690  }
27691 
27693  : Inst_VOP3(iFmt, "v_mad_f32", false)
27694  {
27695  setFlag(ALU);
27696  setFlag(F32);
27697  setFlag(MAD);
27698  } // Inst_VOP3__V_MAD_F32
27699 
27701  {
27702  } // ~Inst_VOP3__V_MAD_F32
27703 
27704  // D.f = S0.f * S1.f + S2.f.
27705  void
27707  {
27708  Wavefront *wf = gpuDynInst->wavefront();
27709  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
27710  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
27711  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
27712  VecOperandF32 vdst(gpuDynInst, instData.VDST);
27713 
27714  src0.readSrc();
27715  src1.readSrc();
27716  src2.readSrc();
27717 
27718  if (instData.ABS & 0x1) {
27719  src0.absModifier();
27720  }
27721 
27722  if (instData.ABS & 0x2) {
27723  src1.absModifier();
27724  }
27725 
27726  if (instData.ABS & 0x4) {
27727  src2.absModifier();
27728  }
27729 
27730  if (extData.NEG & 0x1) {
27731  src0.negModifier();
27732  }
27733 
27734  if (extData.NEG & 0x2) {
27735  src1.negModifier();
27736  }
27737 
27738  if (extData.NEG & 0x4) {
27739  src2.negModifier();
27740  }
27741 
27742  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27743  if (wf->execMask(lane)) {
27744  vdst[lane] = std::fma(src0[lane], src1[lane], src2[lane]);
27745  }
27746  }
27747 
27748  vdst.write();
27749  }
27750 
27752  : Inst_VOP3(iFmt, "v_mad_i32_i24", false)
27753  {
27754  setFlag(ALU);
27755  setFlag(MAD);
27756  } // Inst_VOP3__V_MAD_I32_I24
27757 
27759  {
27760  } // ~Inst_VOP3__V_MAD_I32_I24
27761 
27762  // D.i = S0.i[23:0] * S1.i[23:0] + S2.i.
27763  void
27765  {
27766  Wavefront *wf = gpuDynInst->wavefront();
27767  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
27768  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
27769  ConstVecOperandI32 src2(gpuDynInst, extData.SRC2);
27770  VecOperandI32 vdst(gpuDynInst, instData.VDST);
27771 
27772  src0.readSrc();
27773  src1.readSrc();
27774  src2.readSrc();
27775 
27779  assert(!(instData.ABS & 0x1));
27780  assert(!(instData.ABS & 0x2));
27781  assert(!(instData.ABS & 0x4));
27782  assert(!(extData.NEG & 0x1));
27783  assert(!(extData.NEG & 0x2));
27784  assert(!(extData.NEG & 0x4));
27785 
27786  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27787  if (wf->execMask(lane)) {
27788  vdst[lane] = sext<24>(bits(src0[lane], 23, 0))
27789  * sext<24>(bits(src1[lane], 23, 0)) + src2[lane];
27790  }
27791  }
27792 
27793  vdst.write();
27794  }
27795 
27797  : Inst_VOP3(iFmt, "v_mad_u32_u24", false)
27798  {
27799  setFlag(ALU);
27800  setFlag(MAD);
27801  } // Inst_VOP3__V_MAD_U32_U24
27802 
27804  {
27805  } // ~Inst_VOP3__V_MAD_U32_U24
27806 
27807  // D.u = S0.u[23:0] * S1.u[23:0] + S2.u.
27808  void
27810  {
27811  Wavefront *wf = gpuDynInst->wavefront();
27812  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
27813  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
27814  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
27815  VecOperandU32 vdst(gpuDynInst, instData.VDST);
27816 
27817  src0.readSrc();
27818  src1.readSrc();
27819  src2.readSrc();
27820 
27824  assert(!(instData.ABS & 0x1));
27825  assert(!(instData.ABS & 0x2));
27826  assert(!(instData.ABS & 0x4));
27827  assert(!(extData.NEG & 0x1));
27828  assert(!(extData.NEG & 0x2));
27829  assert(!(extData.NEG & 0x4));
27830 
27831  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27832  if (wf->execMask(lane)) {
27833  vdst[lane] = bits(src0[lane], 23, 0) * bits(src1[lane], 23, 0)
27834  + src2[lane];
27835  }
27836  }
27837 
27838  vdst.write();
27839  }
27840 
27842  : Inst_VOP3(iFmt, "v_cubeid_f32", false)
27843  {
27844  setFlag(ALU);
27845  setFlag(F32);
27846  } // Inst_VOP3__V_CUBEID_F32
27847 
27849  {
27850  } // ~Inst_VOP3__V_CUBEID_F32
27851 
27852  void
27854  {
27856  }
27857 
27859  : Inst_VOP3(iFmt, "v_cubesc_f32", false)
27860  {
27861  setFlag(ALU);
27862  setFlag(F32);
27863  } // Inst_VOP3__V_CUBESC_F32
27864 
27866  {
27867  } // ~Inst_VOP3__V_CUBESC_F32
27868 
27869  void
27871  {
27873  }
27874 
27876  : Inst_VOP3(iFmt, "v_cubetc_f32", false)
27877  {
27878  setFlag(ALU);
27879  setFlag(F32);
27880  } // Inst_VOP3__V_CUBETC_F32
27881 
27883  {
27884  } // ~Inst_VOP3__V_CUBETC_F32
27885 
27886  void
27888  {
27890  }
27891 
27893  : Inst_VOP3(iFmt, "v_cubema_f32", false)
27894  {
27895  setFlag(ALU);
27896  setFlag(F32);
27897  } // Inst_VOP3__V_CUBEMA_F32
27898 
27900  {
27901  } // ~Inst_VOP3__V_CUBEMA_F32
27902 
27903  void
27905  {
27907  }
27908 
27910  : Inst_VOP3(iFmt, "v_bfe_u32", false)
27911  {
27912  setFlag(ALU);
27913  } // Inst_VOP3__V_BFE_U32
27914 
27916  {
27917  } // ~Inst_VOP3__V_BFE_U32
27918 
27919  // D.u = (S0.u >> S1.u[4:0]) & ((1 << S2.u[4:0]) - 1).
27920  // Bitfield extract with S0 = data, S1 = field_offset, S2 = field_width.
27921  void
27923  {
27924  Wavefront *wf = gpuDynInst->wavefront();
27925  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
27926  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
27927  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
27928  VecOperandU32 vdst(gpuDynInst, instData.VDST);
27929 
27930  src0.readSrc();
27931  src1.readSrc();
27932  src2.readSrc();
27933 
27937  assert(!(instData.ABS & 0x1));
27938  assert(!(instData.ABS & 0x2));
27939  assert(!(instData.ABS & 0x4));
27940  assert(!(extData.NEG & 0x1));
27941  assert(!(extData.NEG & 0x2));
27942  assert(!(extData.NEG & 0x4));
27943 
27944  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27945  if (wf->execMask(lane)) {
27946  vdst[lane] = (src0[lane] >> bits(src1[lane], 4, 0))
27947  & ((1 << bits(src2[lane], 4, 0)) - 1);
27948  }
27949  }
27950 
27951  vdst.write();
27952  }
27953 
27955  : Inst_VOP3(iFmt, "v_bfe_i32", false)
27956  {
27957  setFlag(ALU);
27958  } // Inst_VOP3__V_BFE_I32
27959 
27961  {
27962  } // ~Inst_VOP3__V_BFE_I32
27963 
27964  // D.i = (S0.i >> S1.u[4:0]) & ((1 << S2.u[4:0]) - 1).
27965  // Bitfield extract with S0 = data, S1 = field_offset, S2 = field_width.
27966  void
27968  {
27969  Wavefront *wf = gpuDynInst->wavefront();
27970  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
27971  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
27972  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
27973  VecOperandI32 vdst(gpuDynInst, instData.VDST);
27974 
27975  src0.readSrc();
27976  src1.readSrc();
27977  src2.readSrc();
27978 
27982  assert(!(instData.ABS & 0x1));
27983  assert(!(instData.ABS & 0x2));
27984  assert(!(instData.ABS & 0x4));
27985  assert(!(extData.NEG & 0x1));
27986  assert(!(extData.NEG & 0x2));
27987  assert(!(extData.NEG & 0x4));
27988 
27989  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
27990  if (wf->execMask(lane)) {
27991  vdst[lane] = (src0[lane] >> bits(src1[lane], 4, 0))
27992  & ((1 << bits(src2[lane], 4, 0)) - 1);
27993  }
27994  }
27995 
27996  vdst.write();
27997  }
27998 
28000  : Inst_VOP3(iFmt, "v_bfi_b32", false)
28001  {
28002  setFlag(ALU);
28003  } // Inst_VOP3__V_BFI_B32
28004 
28006  {
28007  } // ~Inst_VOP3__V_BFI_B32
28008 
28009  // D.u = (S0.u & S1.u) | (~S0.u & S2.u); bitfield insert.
28010  void
28012  {
28013  Wavefront *wf = gpuDynInst->wavefront();
28014  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
28015  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
28016  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28017  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28018 
28019  src0.readSrc();
28020  src1.readSrc();
28021  src2.readSrc();
28022 
28026  assert(!(instData.ABS & 0x1));
28027  assert(!(instData.ABS & 0x2));
28028  assert(!(instData.ABS & 0x4));
28029  assert(!(extData.NEG & 0x1));
28030  assert(!(extData.NEG & 0x2));
28031  assert(!(extData.NEG & 0x4));
28032 
28033  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28034  if (wf->execMask(lane)) {
28035  vdst[lane] = (src0[lane] & src1[lane]) | (~src0[lane]
28036  & src2[lane]);
28037  }
28038  }
28039 
28040  vdst.write();
28041  }
28042 
28044  : Inst_VOP3(iFmt, "v_fma_f32", false)
28045  {
28046  setFlag(ALU);
28047  setFlag(F32);
28048  setFlag(FMA);
28049  } // Inst_VOP3__V_FMA_F32
28050 
28052  {
28053  } // ~Inst_VOP3__V_FMA_F32
28054 
28055  // D.f = S0.f * S1.f + S2.f.
28056  void
28058  {
28059  Wavefront *wf = gpuDynInst->wavefront();
28060  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
28061  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
28062  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
28063  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28064 
28065  src0.readSrc();
28066  src1.readSrc();
28067  src2.readSrc();
28068 
28069  if (instData.ABS & 0x1) {
28070  src0.absModifier();
28071  }
28072 
28073  if (instData.ABS & 0x2) {
28074  src1.absModifier();
28075  }
28076 
28077  if (instData.ABS & 0x4) {
28078  src2.absModifier();
28079  }
28080 
28081  if (extData.NEG & 0x1) {
28082  src0.negModifier();
28083  }
28084 
28085  if (extData.NEG & 0x2) {
28086  src1.negModifier();
28087  }
28088 
28089  if (extData.NEG & 0x4) {
28090  src2.negModifier();
28091  }
28092 
28093  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28094  if (wf->execMask(lane)) {
28095  vdst[lane] = std::fma(src0[lane], src1[lane], src2[lane]);
28096  }
28097  }
28098 
28099  vdst.write();
28100  }
28101 
28103  : Inst_VOP3(iFmt, "v_fma_f64", false)
28104  {
28105  setFlag(ALU);
28106  setFlag(F64);
28107  setFlag(FMA);
28108  } // Inst_VOP3__V_FMA_F64
28109 
28111  {
28112  } // ~Inst_VOP3__V_FMA_F64
28113 
28114  // D.d = S0.d * S1.d + S2.d.
28115  void
28117  {
28118  Wavefront *wf = gpuDynInst->wavefront();
28119  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
28120  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
28121  ConstVecOperandF64 src2(gpuDynInst, extData.SRC2);
28122  VecOperandF64 vdst(gpuDynInst, instData.VDST);
28123 
28124  src0.readSrc();
28125  src1.readSrc();
28126  src2.readSrc();
28127 
28128  if (instData.ABS & 0x1) {
28129  src0.absModifier();
28130  }
28131 
28132  if (instData.ABS & 0x2) {
28133  src1.absModifier();
28134  }
28135 
28136  if (instData.ABS & 0x4) {
28137  src2.absModifier();
28138  }
28139 
28140  if (extData.NEG & 0x1) {
28141  src0.negModifier();
28142  }
28143 
28144  if (extData.NEG & 0x2) {
28145  src1.negModifier();
28146  }
28147 
28148  if (extData.NEG & 0x4) {
28149  src2.negModifier();
28150  }
28151 
28152  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28153  if (wf->execMask(lane)) {
28154  vdst[lane] = std::fma(src0[lane], src1[lane], src2[lane]);
28155  }
28156  }
28157 
28158  vdst.write();
28159  }
28160 
28162  : Inst_VOP3(iFmt, "v_lerp_u8", false)
28163  {
28164  setFlag(ALU);
28165  } // Inst_VOP3__V_LERP_U8
28166 
28168  {
28169  } // ~Inst_VOP3__V_LERP_U8
28170 
28171  // D.u = ((S0.u[31:24] + S1.u[31:24] + S2.u[24]) >> 1) << 24
28172  // D.u += ((S0.u[23:16] + S1.u[23:16] + S2.u[16]) >> 1) << 16;
28173  // D.u += ((S0.u[15:8] + S1.u[15:8] + S2.u[8]) >> 1) << 8;
28174  // D.u += ((S0.u[7:0] + S1.u[7:0] + S2.u[0]) >> 1).
28175  void
28177  {
28178  Wavefront *wf = gpuDynInst->wavefront();
28179  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
28180  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
28181  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28182  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28183 
28184  src0.readSrc();
28185  src1.readSrc();
28186  src2.readSrc();
28187 
28191  assert(!(instData.ABS & 0x1));
28192  assert(!(instData.ABS & 0x2));
28193  assert(!(instData.ABS & 0x4));
28194  assert(!(extData.NEG & 0x1));
28195  assert(!(extData.NEG & 0x2));
28196  assert(!(extData.NEG & 0x4));
28197 
28198  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28199  if (wf->execMask(lane)) {
28200  vdst[lane] = ((bits(src0[lane], 31, 24)
28201  + bits(src1[lane], 31, 24) + bits(src2[lane], 24)) >> 1)
28202  << 24;
28203  vdst[lane] += ((bits(src0[lane], 23, 16)
28204  + bits(src1[lane], 23, 16) + bits(src2[lane], 16)) >> 1)
28205  << 16;
28206  vdst[lane] += ((bits(src0[lane], 15, 8)
28207  + bits(src1[lane], 15, 8) + bits(src2[lane], 8)) >> 1)
28208  << 8;
28209  vdst[lane] += ((bits(src0[lane], 7, 0) + bits(src1[lane], 7, 0)
28210  + bits(src2[lane], 0)) >> 1);
28211  }
28212  }
28213 
28214  vdst.write();
28215  }
28216 
28218  : Inst_VOP3(iFmt, "v_alignbit_b32", false)
28219  {
28220  setFlag(ALU);
28221  } // Inst_VOP3__V_ALIGNBIT_B32
28222 
28224  {
28225  } // ~Inst_VOP3__V_ALIGNBIT_B32
28226 
28227  // D.u = ({S0, S1} >> S2.u[4:0]) & 0xffffffff.
28228  void
28230  {
28231  Wavefront *wf = gpuDynInst->wavefront();
28232  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
28233  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
28234  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28235  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28236 
28237  src0.readSrc();
28238  src1.readSrc();
28239  src2.readSrc();
28240 
28244  assert(!(instData.ABS & 0x1));
28245  assert(!(instData.ABS & 0x2));
28246  assert(!(instData.ABS & 0x4));
28247  assert(!(extData.NEG & 0x1));
28248  assert(!(extData.NEG & 0x2));
28249  assert(!(extData.NEG & 0x4));
28250 
28251  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28252  if (wf->execMask(lane)) {
28253  VecElemU64 src_0_1 = (((VecElemU64)src0[lane] << 32)
28254  | (VecElemU64)src1[lane]);
28255  vdst[lane] = (VecElemU32)((src_0_1
28256  >> (VecElemU64)bits(src2[lane], 4, 0)) & 0xffffffff);
28257  }
28258  }
28259 
28260  vdst.write();
28261  }
28262 
28264  : Inst_VOP3(iFmt, "v_alignbyte_b32", false)
28265  {
28266  setFlag(ALU);
28267  } // Inst_VOP3__V_ALIGNBYTE_B32
28268 
28270  {
28271  } // ~Inst_VOP3__V_ALIGNBYTE_B32
28272 
28273  // D.u = ({S0, S1} >> (8 * S2.u[4:0])) & 0xffffffff.
28274  void
28276  {
28277  Wavefront *wf = gpuDynInst->wavefront();
28278  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
28279  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
28280  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28281  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28282 
28283  src0.readSrc();
28284  src1.readSrc();
28285  src2.readSrc();
28286 
28290  assert(!(instData.ABS & 0x1));
28291  assert(!(instData.ABS & 0x2));
28292  assert(!(instData.ABS & 0x4));
28293  assert(!(extData.NEG & 0x1));
28294  assert(!(extData.NEG & 0x2));
28295  assert(!(extData.NEG & 0x4));
28296 
28297  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28298  if (wf->execMask(lane)) {
28299  VecElemU64 src_0_1 = (((VecElemU64)src0[lane] << 32)
28300  | (VecElemU64)src1[lane]);
28301  vdst[lane] = (VecElemU32)((src_0_1
28302  >> (8ULL * (VecElemU64)bits(src2[lane], 4, 0)))
28303  & 0xffffffff);
28304  }
28305  }
28306 
28307  vdst.write();
28308  }
28309 
28311  : Inst_VOP3(iFmt, "v_min3_f32", false)
28312  {
28313  setFlag(ALU);
28314  setFlag(F32);
28315  } // Inst_VOP3__V_MIN3_F32
28316 
28318  {
28319  } // ~Inst_VOP3__V_MIN3_F32
28320 
28321  // D.f = min(S0.f, S1.f, S2.f).
28322  void
28324  {
28325  Wavefront *wf = gpuDynInst->wavefront();
28326  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
28327  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
28328  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
28329  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28330 
28331  src0.readSrc();
28332  src1.readSrc();
28333  src2.readSrc();
28334 
28335  if (instData.ABS & 0x1) {
28336  src0.absModifier();
28337  }
28338 
28339  if (instData.ABS & 0x2) {
28340  src1.absModifier();
28341  }
28342 
28343  if (instData.ABS & 0x4) {
28344  src2.absModifier();
28345  }
28346 
28347  if (extData.NEG & 0x1) {
28348  src0.negModifier();
28349  }
28350 
28351  if (extData.NEG & 0x2) {
28352  src1.negModifier();
28353  }
28354 
28355  if (extData.NEG & 0x4) {
28356  src2.negModifier();
28357  }
28358 
28359  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28360  if (wf->execMask(lane)) {
28361  VecElemF32 min_0_1 = std::fmin(src0[lane], src1[lane]);
28362  vdst[lane] = std::fmin(min_0_1, src2[lane]);
28363  }
28364  }
28365 
28366  vdst.write();
28367  }
28368 
28370  : Inst_VOP3(iFmt, "v_min3_i32", false)
28371  {
28372  setFlag(ALU);
28373  } // Inst_VOP3__V_MIN3_I32
28374 
28376  {
28377  } // ~Inst_VOP3__V_MIN3_I32
28378 
28379  // D.i = min(S0.i, S1.i, S2.i).
28380  void
28382  {
28383  Wavefront *wf = gpuDynInst->wavefront();
28384  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
28385  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
28386  ConstVecOperandI32 src2(gpuDynInst, extData.SRC2);
28387  VecOperandI32 vdst(gpuDynInst, instData.VDST);
28388 
28389  src0.readSrc();
28390  src1.readSrc();
28391  src2.readSrc();
28392 
28396  assert(!(instData.ABS & 0x1));
28397  assert(!(instData.ABS & 0x2));
28398  assert(!(instData.ABS & 0x4));
28399  assert(!(extData.NEG & 0x1));
28400  assert(!(extData.NEG & 0x2));
28401  assert(!(extData.NEG & 0x4));
28402 
28403  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28404  if (wf->execMask(lane)) {
28405  VecElemI32 min_0_1 = std::min(src0[lane], src1[lane]);
28406  vdst[lane] = std::min(min_0_1, src2[lane]);
28407  }
28408  }
28409 
28410  vdst.write();
28411  }
28412 
28414  : Inst_VOP3(iFmt, "v_min3_u32", false)
28415  {
28416  setFlag(ALU);
28417  } // Inst_VOP3__V_MIN3_U32
28418 
28420  {
28421  } // ~Inst_VOP3__V_MIN3_U32
28422 
28423  // D.u = min(S0.u, S1.u, S2.u).
28424  void
28426  {
28427  Wavefront *wf = gpuDynInst->wavefront();
28428  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
28429  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
28430  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28431  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28432 
28433  src0.readSrc();
28434  src1.readSrc();
28435  src2.readSrc();
28436 
28440  assert(!(instData.ABS & 0x1));
28441  assert(!(instData.ABS & 0x2));
28442  assert(!(instData.ABS & 0x4));
28443  assert(!(extData.NEG & 0x1));
28444  assert(!(extData.NEG & 0x2));
28445  assert(!(extData.NEG & 0x4));
28446 
28447  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28448  if (wf->execMask(lane)) {
28449  VecElemU32 min_0_1 = std::min(src0[lane], src1[lane]);
28450  vdst[lane] = std::min(min_0_1, src2[lane]);
28451  }
28452  }
28453 
28454  vdst.write();
28455  }
28456 
28458  : Inst_VOP3(iFmt, "v_max3_f32", false)
28459  {
28460  setFlag(ALU);
28461  setFlag(F32);
28462  } // Inst_VOP3__V_MAX3_F32
28463 
28465  {
28466  } // ~Inst_VOP3__V_MAX3_F32
28467 
28468  // D.f = max(S0.f, S1.f, S2.f).
28469  void
28471  {
28472  Wavefront *wf = gpuDynInst->wavefront();
28473  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
28474  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
28475  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
28476  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28477 
28478  src0.readSrc();
28479  src1.readSrc();
28480  src2.readSrc();
28481 
28482  if (instData.ABS & 0x1) {
28483  src0.absModifier();
28484  }
28485 
28486  if (instData.ABS & 0x2) {
28487  src1.absModifier();
28488  }
28489 
28490  if (instData.ABS & 0x4) {
28491  src2.absModifier();
28492  }
28493 
28494  if (extData.NEG & 0x1) {
28495  src0.negModifier();
28496  }
28497 
28498  if (extData.NEG & 0x2) {
28499  src1.negModifier();
28500  }
28501 
28502  if (extData.NEG & 0x4) {
28503  src2.negModifier();
28504  }
28505 
28506  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28507  if (wf->execMask(lane)) {
28508  VecElemF32 max_0_1 = std::fmax(src0[lane], src1[lane]);
28509  vdst[lane] = std::fmax(max_0_1, src2[lane]);
28510  }
28511  }
28512 
28513  vdst.write();
28514  }
28515 
28517  : Inst_VOP3(iFmt, "v_max3_i32", false)
28518  {
28519  setFlag(ALU);
28520  } // Inst_VOP3__V_MAX3_I32
28521 
28523  {
28524  } // ~Inst_VOP3__V_MAX3_I32
28525 
28526  // D.i = max(S0.i, S1.i, S2.i).
28527  void
28529  {
28530  Wavefront *wf = gpuDynInst->wavefront();
28531  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
28532  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
28533  ConstVecOperandI32 src2(gpuDynInst, extData.SRC2);
28534  VecOperandI32 vdst(gpuDynInst, instData.VDST);
28535 
28536  src0.readSrc();
28537  src1.readSrc();
28538  src2.readSrc();
28539 
28543  assert(!(instData.ABS & 0x1));
28544  assert(!(instData.ABS & 0x2));
28545  assert(!(instData.ABS & 0x4));
28546  assert(!(extData.NEG & 0x1));
28547  assert(!(extData.NEG & 0x2));
28548  assert(!(extData.NEG & 0x4));
28549 
28550  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28551  if (wf->execMask(lane)) {
28552  VecElemI32 max_0_1 = std::max(src0[lane], src1[lane]);
28553  vdst[lane] = std::max(max_0_1, src2[lane]);
28554  }
28555  }
28556 
28557  vdst.write();
28558  }
28559 
28561  : Inst_VOP3(iFmt, "v_max3_u32", false)
28562  {
28563  setFlag(ALU);
28564  } // Inst_VOP3__V_MAX3_U32
28565 
28567  {
28568  } // ~Inst_VOP3__V_MAX3_U32
28569 
28570  // D.u = max(S0.u, S1.u, S2.u).
28571  void
28573  {
28574  Wavefront *wf = gpuDynInst->wavefront();
28575  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
28576  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
28577  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28578  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28579 
28580  src0.readSrc();
28581  src1.readSrc();
28582  src2.readSrc();
28583 
28587  assert(!(instData.ABS & 0x1));
28588  assert(!(instData.ABS & 0x2));
28589  assert(!(instData.ABS & 0x4));
28590  assert(!(extData.NEG & 0x1));
28591  assert(!(extData.NEG & 0x2));
28592  assert(!(extData.NEG & 0x4));
28593 
28594  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28595  if (wf->execMask(lane)) {
28596  VecElemU32 max_0_1 = std::max(src0[lane], src1[lane]);
28597  vdst[lane] = std::max(max_0_1, src2[lane]);
28598  }
28599  }
28600 
28601  vdst.write();
28602  }
28603 
28605  : Inst_VOP3(iFmt, "v_med3_f32", false)
28606  {
28607  setFlag(ALU);
28608  setFlag(F32);
28609  } // Inst_VOP3__V_MED3_F32
28610 
28612  {
28613  } // ~Inst_VOP3__V_MED3_F32
28614 
28615  // D.f = median(S0.f, S1.f, S2.f).
28616  void
28618  {
28619  Wavefront *wf = gpuDynInst->wavefront();
28620  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
28621  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
28622  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
28623  VecOperandF32 vdst(gpuDynInst, instData.VDST);
28624 
28625  src0.readSrc();
28626  src1.readSrc();
28627  src2.readSrc();
28628 
28629  if (instData.ABS & 0x1) {
28630  src0.absModifier();
28631  }
28632 
28633  if (instData.ABS & 0x2) {
28634  src1.absModifier();
28635  }
28636 
28637  if (instData.ABS & 0x4) {
28638  src2.absModifier();
28639  }
28640 
28641  if (extData.NEG & 0x1) {
28642  src0.negModifier();
28643  }
28644 
28645  if (extData.NEG & 0x2) {
28646  src1.negModifier();
28647  }
28648 
28649  if (extData.NEG & 0x4) {
28650  src2.negModifier();
28651  }
28652 
28653  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28654  if (wf->execMask(lane)) {
28655  vdst[lane] = median(src0[lane], src1[lane], src2[lane]);
28656  }
28657  }
28658 
28659  vdst.write();
28660  }
28661 
28663  : Inst_VOP3(iFmt, "v_med3_i32", false)
28664  {
28665  setFlag(ALU);
28666  } // Inst_VOP3__V_MED3_I32
28667 
28669  {
28670  } // ~Inst_VOP3__V_MED3_I32
28671 
28672  // D.i = median(S0.i, S1.i, S2.i).
28673  void
28675  {
28676  Wavefront *wf = gpuDynInst->wavefront();
28677  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
28678  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
28679  ConstVecOperandI32 src2(gpuDynInst, extData.SRC2);
28680  VecOperandI32 vdst(gpuDynInst, instData.VDST);
28681 
28682  src0.readSrc();
28683  src1.readSrc();
28684  src2.readSrc();
28685 
28689  assert(!(instData.ABS & 0x1));
28690  assert(!(instData.ABS & 0x2));
28691  assert(!(instData.ABS & 0x4));
28692  assert(!(extData.NEG & 0x1));
28693  assert(!(extData.NEG & 0x2));
28694  assert(!(extData.NEG & 0x4));
28695 
28696  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28697  if (wf->execMask(lane)) {
28698  vdst[lane] = median(src0[lane], src1[lane], src2[lane]);
28699  }
28700  }
28701 
28702  vdst.write();
28703  }
28704 
28706  : Inst_VOP3(iFmt, "v_med3_u32", false)
28707  {
28708  setFlag(ALU);
28709  } // Inst_VOP3__V_MED3_U32
28710 
28712  {
28713  } // ~Inst_VOP3__V_MED3_U32
28714 
28715  // D.u = median(S0.u, S1.u, S2.u).
28716  void
28718  {
28719  Wavefront *wf = gpuDynInst->wavefront();
28720  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
28721  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
28722  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28723  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28724 
28725  src0.readSrc();
28726  src1.readSrc();
28727  src2.readSrc();
28728 
28732  assert(!(instData.ABS & 0x1));
28733  assert(!(instData.ABS & 0x2));
28734  assert(!(instData.ABS & 0x4));
28735  assert(!(extData.NEG & 0x1));
28736  assert(!(extData.NEG & 0x2));
28737  assert(!(extData.NEG & 0x4));
28738 
28739  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28740  if (wf->execMask(lane)) {
28741  vdst[lane] = median(src0[lane], src1[lane], src2[lane]);
28742  }
28743  }
28744 
28745  vdst.write();
28746  }
28747 
28749  : Inst_VOP3(iFmt, "v_sad_u8", false)
28750  {
28751  setFlag(ALU);
28752  } // Inst_VOP3__V_SAD_U8
28753 
28755  {
28756  } // ~Inst_VOP3__V_SAD_U8
28757 
28758  // D.u = abs(S0.i[31:24] - S1.i[31:24]) + abs(S0.i[23:16] - S1.i[23:16]) +
28759  // abs(S0.i[15:8] - S1.i[15:8]) + abs(S0.i[7:0] - S1.i[7:0]) + S2.u.
28760  // Sum of absolute differences with accumulation, overflow into upper bits
28761  // is allowed.
28762  void
28764  {
28765  Wavefront *wf = gpuDynInst->wavefront();
28766  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
28767  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
28768  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28769  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28770 
28771  src0.readSrc();
28772  src1.readSrc();
28773  src2.readSrc();
28774 
28778  assert(!(instData.ABS & 0x1));
28779  assert(!(instData.ABS & 0x2));
28780  assert(!(instData.ABS & 0x4));
28781  assert(!(extData.NEG & 0x1));
28782  assert(!(extData.NEG & 0x2));
28783  assert(!(extData.NEG & 0x4));
28784 
28785  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28786  if (wf->execMask(lane)) {
28787  vdst[lane] = std::abs(bits(src0[lane], 31, 24)
28788  - bits(src1[lane], 31, 24))
28789  + std::abs(bits(src0[lane], 23, 16)
28790  - bits(src1[lane], 23, 16))
28791  + std::abs(bits(src0[lane], 15, 8)
28792  - bits(src1[lane], 15, 8))
28793  + std::abs(bits(src0[lane], 7, 0)
28794  - bits(src1[lane], 7, 0)) + src2[lane];
28795  }
28796  }
28797 
28798  vdst.write();
28799  }
28800 
28802  : Inst_VOP3(iFmt, "v_sad_hi_u8", false)
28803  {
28804  setFlag(ALU);
28805  } // Inst_VOP3__V_SAD_HI_U8
28806 
28808  {
28809  } // ~Inst_VOP3__V_SAD_HI_U8
28810 
28811  // D.u = (SAD_U8(S0, S1, 0) << 16) + S2.u.
28812  // Sum of absolute differences with accumulation, overflow is lost.
28813  void
28815  {
28816  Wavefront *wf = gpuDynInst->wavefront();
28817  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
28818  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
28819  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28820  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28821 
28822  src0.readSrc();
28823  src1.readSrc();
28824  src2.readSrc();
28825 
28829  assert(!(instData.ABS & 0x1));
28830  assert(!(instData.ABS & 0x2));
28831  assert(!(instData.ABS & 0x4));
28832  assert(!(extData.NEG & 0x1));
28833  assert(!(extData.NEG & 0x2));
28834  assert(!(extData.NEG & 0x4));
28835 
28836  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28837  if (wf->execMask(lane)) {
28838  vdst[lane] = (((bits(src0[lane], 31, 24)
28839  - bits(src1[lane], 31, 24)) + (bits(src0[lane], 23, 16)
28840  - bits(src1[lane], 23, 16)) + (bits(src0[lane], 15, 8)
28841  - bits(src1[lane], 15, 8)) + (bits(src0[lane], 7, 0)
28842  - bits(src1[lane], 7, 0))) << 16) + src2[lane];
28843  }
28844  }
28845 
28846  vdst.write();
28847  }
28848 
28850  : Inst_VOP3(iFmt, "v_sad_u16", false)
28851  {
28852  setFlag(ALU);
28853  } // Inst_VOP3__V_SAD_U16
28854 
28856  {
28857  } // ~Inst_VOP3__V_SAD_U16
28858 
28859  // D.u = abs(S0.i[31:16] - S1.i[31:16]) + abs(S0.i[15:0] - S1.i[15:0])
28860  // + S2.u.
28861  // Word SAD with accumulation.
28862  void
28864  {
28865  Wavefront *wf = gpuDynInst->wavefront();
28866  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
28867  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
28868  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28869  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28870 
28871  src0.readSrc();
28872  src1.readSrc();
28873  src2.readSrc();
28874 
28878  assert(!(instData.ABS & 0x1));
28879  assert(!(instData.ABS & 0x2));
28880  assert(!(instData.ABS & 0x4));
28881  assert(!(extData.NEG & 0x1));
28882  assert(!(extData.NEG & 0x2));
28883  assert(!(extData.NEG & 0x4));
28884 
28885  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28886  if (wf->execMask(lane)) {
28887  vdst[lane] = std::abs(bits(src0[lane], 31, 16)
28888  - bits(src1[lane], 31, 16))
28889  + std::abs(bits(src0[lane], 15, 0)
28890  - bits(src1[lane], 15, 0)) + src2[lane];
28891  }
28892  }
28893 
28894  vdst.write();
28895  }
28896 
28898  : Inst_VOP3(iFmt, "v_sad_u32", false)
28899  {
28900  setFlag(ALU);
28901  } // Inst_VOP3__V_SAD_U32
28902 
28904  {
28905  } // ~Inst_VOP3__V_SAD_U32
28906 
28907  // D.u = abs(S0.i - S1.i) + S2.u.
28908  // Dword SAD with accumulation.
28909  void
28911  {
28912  Wavefront *wf = gpuDynInst->wavefront();
28913  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
28914  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
28915  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28916  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28917 
28918  src0.readSrc();
28919  src1.readSrc();
28920  src2.readSrc();
28921 
28925  assert(!(instData.ABS & 0x1));
28926  assert(!(instData.ABS & 0x2));
28927  assert(!(instData.ABS & 0x4));
28928  assert(!(extData.NEG & 0x1));
28929  assert(!(extData.NEG & 0x2));
28930  assert(!(extData.NEG & 0x4));
28931 
28932  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28933  if (wf->execMask(lane)) {
28934  vdst[lane] = std::abs(src0[lane] - src1[lane]) + src2[lane];
28935  }
28936  }
28937 
28938  vdst.write();
28939  }
28940 
28942  : Inst_VOP3(iFmt, "v_cvt_pk_u8_f32", false)
28943  {
28944  setFlag(ALU);
28945  setFlag(F32);
28946  } // Inst_VOP3__V_CVT_PK_U8_F32
28947 
28949  {
28950  } // ~Inst_VOP3__V_CVT_PK_U8_F32
28951 
28952  // D.u = ((flt32_to_uint8(S0.f) & 0xff) << (8 * S1.u[1:0]))
28953  // | (S2.u & ~(0xff << (8 * S1.u[1:0]))).
28954  // Convert floating point value S0 to 8-bit unsigned integer and pack the
28955  // result into byte S1 of dword S2.
28956  void
28958  {
28959  Wavefront *wf = gpuDynInst->wavefront();
28960  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
28961  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
28962  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
28963  VecOperandU32 vdst(gpuDynInst, instData.VDST);
28964 
28965  src0.readSrc();
28966  src1.readSrc();
28967  src2.readSrc();
28968 
28969  if (instData.ABS & 0x1) {
28970  src0.absModifier();
28971  }
28972 
28973 
28974  if (extData.NEG & 0x1) {
28975  src0.negModifier();
28976  }
28977 
28981  assert(!(instData.ABS & 0x2));
28982  assert(!(instData.ABS & 0x4));
28983  assert(!(extData.NEG & 0x2));
28984  assert(!(extData.NEG & 0x4));
28985 
28986  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
28987  if (wf->execMask(lane)) {
28988  vdst[lane] = (((VecElemU8)src0[lane] & 0xff)
28989  << (8 * bits(src1[lane], 1, 0)))
28990  | (src2[lane] & ~(0xff << (8 * bits(src1[lane], 1, 0))));
28991  }
28992  }
28993 
28994  vdst.write();
28995  }
28996 
28998  : Inst_VOP3(iFmt, "v_div_fixup_f32", false)
28999  {
29000  setFlag(ALU);
29001  setFlag(F32);
29002  } // Inst_VOP3__V_DIV_FIXUP_F32
29003 
29005  {
29006  } // ~Inst_VOP3__V_DIV_FIXUP_F32
29007 
29008  // D.f = Divide fixup and flags -- s0.f = Quotient, s1.f = Denominator,
29009  // s2.f = Numerator.
29010  void
29012  {
29013  Wavefront *wf = gpuDynInst->wavefront();
29014  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
29015  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
29016  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
29017  VecOperandF32 vdst(gpuDynInst, instData.VDST);
29018 
29019  src0.readSrc();
29020  src1.readSrc();
29021  src2.readSrc();
29022 
29023  if (instData.ABS & 0x1) {
29024  src0.absModifier();
29025  }
29026 
29027  if (instData.ABS & 0x2) {
29028  src1.absModifier();
29029  }
29030 
29031  if (instData.ABS & 0x4) {
29032  src2.absModifier();
29033  }
29034 
29035  if (extData.NEG & 0x1) {
29036  src0.negModifier();
29037  }
29038 
29039  if (extData.NEG & 0x2) {
29040  src1.negModifier();
29041  }
29042 
29043  if (extData.NEG & 0x4) {
29044  src2.negModifier();
29045  }
29046 
29047  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29048  if (wf->execMask(lane)) {
29049  if (std::fpclassify(src1[lane]) == FP_ZERO) {
29050  if (std::signbit(src1[lane])) {
29051  vdst[lane] = -INFINITY;
29052  } else {
29053  vdst[lane] = +INFINITY;
29054  }
29055  } else if (std::isnan(src2[lane]) || std::isnan(src1[lane])) {
29056  vdst[lane] = NAN;
29057  } else if (std::isinf(src1[lane])) {
29058  if (std::signbit(src1[lane])) {
29059  vdst[lane] = -INFINITY;
29060  } else {
29061  vdst[lane] = +INFINITY;
29062  }
29063  } else {
29064  vdst[lane] = src2[lane] / src1[lane];
29065  }
29066  }
29067  }
29068 
29069  vdst.write();
29070  } // execute
29071  // --- Inst_VOP3__V_DIV_FIXUP_F64 class methods ---
29072 
29074  : Inst_VOP3(iFmt, "v_div_fixup_f64", false)
29075  {
29076  setFlag(ALU);
29077  setFlag(F64);
29078  } // Inst_VOP3__V_DIV_FIXUP_F64
29079 
29081  {
29082  } // ~Inst_VOP3__V_DIV_FIXUP_F64
29083 
29084  // D.d = Divide fixup and flags -- s0.d = Quotient, s1.d = Denominator,
29085  // s2.d = Numerator.
29086  void
29088  {
29089  Wavefront *wf = gpuDynInst->wavefront();
29090  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
29091  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
29092  ConstVecOperandF64 src2(gpuDynInst, extData.SRC2);
29093  VecOperandF64 vdst(gpuDynInst, instData.VDST);
29094 
29095  src0.readSrc();
29096  src1.readSrc();
29097  src2.readSrc();
29098 
29099  if (instData.ABS & 0x1) {
29100  src0.absModifier();
29101  }
29102 
29103  if (instData.ABS & 0x2) {
29104  src1.absModifier();
29105  }
29106 
29107  if (instData.ABS & 0x4) {
29108  src2.absModifier();
29109  }
29110 
29111  if (extData.NEG & 0x1) {
29112  src0.negModifier();
29113  }
29114 
29115  if (extData.NEG & 0x2) {
29116  src1.negModifier();
29117  }
29118 
29119  if (extData.NEG & 0x4) {
29120  src2.negModifier();
29121  }
29122 
29123  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29124  if (wf->execMask(lane)) {
29125  int sign_out = std::signbit(src1[lane])
29126  ^ std::signbit(src2[lane]);
29127  int exp1(0);
29128  int exp2(0);
29129  std::frexp(src1[lane], &exp1);
29130  std::frexp(src2[lane], &exp2);
29131 
29132  if (std::isnan(src1[lane]) || std::isnan(src2[lane])) {
29133  vdst[lane] = std::numeric_limits<VecElemF64>::quiet_NaN();
29134  } else if (std::fpclassify(src1[lane]) == FP_ZERO
29135  && std::fpclassify(src2[lane]) == FP_ZERO) {
29136  vdst[lane]
29137  = std::numeric_limits<VecElemF64>::signaling_NaN();
29138  } else if (std::isinf(src1[lane]) && std::isinf(src2[lane])) {
29139  vdst[lane]
29140  = std::numeric_limits<VecElemF64>::signaling_NaN();
29141  } else if (std::fpclassify(src1[lane]) == FP_ZERO
29142  || std::isinf(src2[lane])) {
29143  vdst[lane] = sign_out ? -INFINITY : +INFINITY;
29144  } else if (std::isinf(src1[lane])
29145  || std::fpclassify(src2[lane]) == FP_ZERO) {
29146  vdst[lane] = sign_out ? -0.0 : +0.0;
29147  } else if (exp2 - exp1 < -1075) {
29148  vdst[lane] = src0[lane];
29149  } else if (exp1 == 2047) {
29150  vdst[lane] = src0[lane];
29151  } else {
29152  vdst[lane] = sign_out ? -std::fabs(src0[lane])
29153  : std::fabs(src0[lane]);
29154  }
29155  }
29156  }
29157 
29158  vdst.write();
29159  }
29160 
29162  InFmt_VOP3_SDST_ENC *iFmt)
29163  : Inst_VOP3_SDST_ENC(iFmt, "v_div_scale_f32")
29164  {
29165  setFlag(ALU);
29166  setFlag(WritesVCC);
29167  setFlag(F32);
29168  } // Inst_VOP3__V_DIV_SCALE_F32
29169 
29171  {
29172  } // ~Inst_VOP3__V_DIV_SCALE_F32
29173 
29174  // {vcc,D.f} = Divide preop and flags -- s0.f = Quotient, s1.f =
29175  // Denominator, s2.f = Numerator -- s0 must equal s1 or s2. Given a
29176  // numerator and denominator, this opcode will appropriately scale inputs
29177  // for division to avoid subnormal terms during Newton-Raphson correction
29178  // algorithm. This opcode producses a VCC flag for post-scale of quotient.
29179  void
29181  {
29182  Wavefront *wf = gpuDynInst->wavefront();
29183  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
29184  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
29185  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
29186  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
29187  VecOperandF32 vdst(gpuDynInst, instData.VDST);
29188 
29189  src0.readSrc();
29190  src1.readSrc();
29191  src2.readSrc();
29192 
29193  if (extData.NEG & 0x1) {
29194  src0.negModifier();
29195  }
29196 
29197  if (extData.NEG & 0x2) {
29198  src1.negModifier();
29199  }
29200 
29201  if (extData.NEG & 0x4) {
29202  src2.negModifier();
29203  }
29204 
29205  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29206  if (wf->execMask(lane)) {
29207  vdst[lane] = src0[lane];
29208  vcc.setBit(lane, 0);
29209  }
29210  }
29211 
29212  vcc.write();
29213  vdst.write();
29214  } // execute
29215  // --- Inst_VOP3__V_DIV_SCALE_F64 class methods ---
29216 
29218  InFmt_VOP3_SDST_ENC *iFmt)
29219  : Inst_VOP3_SDST_ENC(iFmt, "v_div_scale_f64")
29220  {
29221  setFlag(ALU);
29222  setFlag(WritesVCC);
29223  setFlag(F64);
29224  } // Inst_VOP3__V_DIV_SCALE_F64
29225 
29227  {
29228  } // ~Inst_VOP3__V_DIV_SCALE_F64
29229 
29230  // {vcc,D.d} = Divide preop and flags -- s0.d = Quotient, s1.d =
29231  // Denominator, s2.d = Numerator -- s0 must equal s1 or s2. Given a
29232  // numerator and denominator, this opcode will appropriately scale inputs
29233  // for division to avoid subnormal terms during Newton-Raphson correction
29234  // algorithm. This opcode producses a VCC flag for post-scale of quotient.
29235  void
29237  {
29238  Wavefront *wf = gpuDynInst->wavefront();
29239  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
29240  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
29241  ConstVecOperandF64 src2(gpuDynInst, extData.SRC2);
29242  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
29243  VecOperandF64 vdst(gpuDynInst, instData.VDST);
29244 
29245  src0.readSrc();
29246  src1.readSrc();
29247  src2.readSrc();
29248 
29249  if (extData.NEG & 0x1) {
29250  src0.negModifier();
29251  }
29252 
29253  if (extData.NEG & 0x2) {
29254  src1.negModifier();
29255  }
29256 
29257  if (extData.NEG & 0x4) {
29258  src2.negModifier();
29259  }
29260 
29261  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29262  if (wf->execMask(lane)) {
29263  int exp1(0);
29264  int exp2(0);
29265  std::frexp(src1[lane], &exp1);
29266  std::frexp(src2[lane], &exp2);
29267  vcc.setBit(lane, 0);
29268 
29269  if (std::fpclassify(src1[lane]) == FP_ZERO
29270  || std::fpclassify(src2[lane]) == FP_ZERO) {
29271  vdst[lane] = NAN;
29272  } else if (exp2 - exp1 >= 768) {
29273  vcc.setBit(lane, 1);
29274  if (src0[lane] == src1[lane]) {
29275  vdst[lane] = std::ldexp(src0[lane], 128);
29276  }
29277  } else if (std::fpclassify(src1[lane]) == FP_SUBNORMAL) {
29278  vdst[lane] = std::ldexp(src0[lane], 128);
29279  } else if (std::fpclassify(1.0 / src1[lane]) == FP_SUBNORMAL
29280  && std::fpclassify(src2[lane] / src1[lane])
29281  == FP_SUBNORMAL) {
29282  vcc.setBit(lane, 1);
29283  if (src0[lane] == src1[lane]) {
29284  vdst[lane] = std::ldexp(src0[lane], 128);
29285  }
29286  } else if (std::fpclassify(1.0 / src1[lane]) == FP_SUBNORMAL) {
29287  vdst[lane] = std::ldexp(src0[lane], -128);
29288  } else if (std::fpclassify(src2[lane] / src1[lane])
29289  == FP_SUBNORMAL) {
29290  vcc.setBit(lane, 1);
29291  if (src0[lane] == src2[lane]) {
29292  vdst[lane] = std::ldexp(src0[lane], 128);
29293  }
29294  } else if (exp2 <= 53) {
29295  vdst[lane] = std::ldexp(src0[lane], 128);
29296  }
29297  }
29298  }
29299 
29300  vcc.write();
29301  vdst.write();
29302  }
29303 
29305  : Inst_VOP3(iFmt, "v_div_fmas_f32", false)
29306  {
29307  setFlag(ALU);
29308  setFlag(ReadsVCC);
29309  setFlag(F32);
29310  setFlag(FMA);
29311  } // Inst_VOP3__V_DIV_FMAS_F32
29312 
29314  {
29315  } // ~Inst_VOP3__V_DIV_FMAS_F32
29316 
29317  // D.f = Special case divide FMA with scale and flags(s0.f = Quotient,
29318  // s1.f = Denominator, s2.f = Numerator)
29319  void
29321  {
29322  Wavefront *wf = gpuDynInst->wavefront();
29323  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
29324  ConstVecOperandF32 src1(gpuDynInst, extData.SRC1);
29325  ConstVecOperandF32 src2(gpuDynInst, extData.SRC2);
29326  VecOperandF64 vdst(gpuDynInst, instData.VDST);
29327 
29328  src0.readSrc();
29329  src1.readSrc();
29330  src2.readSrc();
29331 
29332  if (instData.ABS & 0x1) {
29333  src0.absModifier();
29334  }
29335 
29336  if (instData.ABS & 0x2) {
29337  src1.absModifier();
29338  }
29339 
29340  if (instData.ABS & 0x4) {
29341  src2.absModifier();
29342  }
29343 
29344  if (extData.NEG & 0x1) {
29345  src0.negModifier();
29346  }
29347 
29348  if (extData.NEG & 0x2) {
29349  src1.negModifier();
29350  }
29351 
29352  if (extData.NEG & 0x4) {
29353  src2.negModifier();
29354  }
29355 
29356  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29357  if (wf->execMask(lane)) {
29358  vdst[lane] = std::fma(src0[lane], src1[lane], src2[lane]);
29359  }
29360  }
29361 
29362  //vdst.write();
29363  } // execute
29364  // --- Inst_VOP3__V_DIV_FMAS_F64 class methods ---
29365 
29367  : Inst_VOP3(iFmt, "v_div_fmas_f64", false)
29368  {
29369  setFlag(ALU);
29370  setFlag(ReadsVCC);
29371  setFlag(F64);
29372  setFlag(FMA);
29373  } // Inst_VOP3__V_DIV_FMAS_F64
29374 
29376  {
29377  } // ~Inst_VOP3__V_DIV_FMAS_F64
29378 
29379  // D.d = Special case divide FMA with scale and flags(s0.d = Quotient,
29380  // s1.d = Denominator, s2.d = Numerator)
29381  void
29383  {
29384  Wavefront *wf = gpuDynInst->wavefront();
29385  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
29386  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
29387  ConstVecOperandF64 src2(gpuDynInst, extData.SRC2);
29388  VecOperandF64 vdst(gpuDynInst, instData.VDST);
29389  ConstScalarOperandU64 vcc(gpuDynInst, REG_VCC_LO);
29390 
29391  src0.readSrc();
29392  src1.readSrc();
29393  src2.readSrc();
29394  vcc.read();
29395 
29396  if (instData.ABS & 0x1) {
29397  src0.absModifier();
29398  }
29399 
29400  if (instData.ABS & 0x2) {
29401  src1.absModifier();
29402  }
29403 
29404  if (instData.ABS & 0x4) {
29405  src2.absModifier();
29406  }
29407 
29408  if (extData.NEG & 0x1) {
29409  src0.negModifier();
29410  }
29411 
29412  if (extData.NEG & 0x2) {
29413  src1.negModifier();
29414  }
29415 
29416  if (extData.NEG & 0x4) {
29417  src2.negModifier();
29418  }
29419 
29420  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29421  if (wf->execMask(lane)) {
29422  if (bits(vcc.rawData(), lane)) {
29423  vdst[lane] = std::pow(2, 64)
29424  * std::fma(src0[lane], src1[lane], src2[lane]);
29425  } else {
29426  vdst[lane] = std::fma(src0[lane], src1[lane], src2[lane]);
29427  }
29428  }
29429  }
29430 
29431  vdst.write();
29432  }
29433 
29435  : Inst_VOP3(iFmt, "v_msad_u8", false)
29436  {
29437  setFlag(ALU);
29438  } // Inst_VOP3__V_MSAD_U8
29439 
29441  {
29442  } // ~Inst_VOP3__V_MSAD_U8
29443 
29444  // D.u = Masked Byte SAD with accum_lo(S0.u, S1.u, S2.u).
29445  void
29447  {
29449  }
29450 
29452  : Inst_VOP3(iFmt, "v_qsad_pk_u16_u8", false)
29453  {
29454  setFlag(ALU);
29455  } // Inst_VOP3__V_QSAD_PK_U16_U8
29456 
29458  {
29459  } // ~Inst_VOP3__V_QSAD_PK_U16_U8
29460 
29461  // D.u = Quad-Byte SAD with 16-bit packed accum_lo/hi(S0.u[63:0],
29462  // S1.u[31:0], S2.u[63:0])
29463  void
29465  {
29467  }
29468 
29470  InFmt_VOP3 *iFmt)
29471  : Inst_VOP3(iFmt, "v_mqsad_pk_u16_u8", false)
29472  {
29473  setFlag(ALU);
29474  } // Inst_VOP3__V_MQSAD_PK_U16_U8
29475 
29477  {
29478  } // ~Inst_VOP3__V_MQSAD_PK_U16_U8
29479 
29480  // D.u = Masked Quad-Byte SAD with 16-bit packed accum_lo/hi(S0.u[63:0],
29481  // S1.u[31:0], S2.u[63:0])
29482  void
29484  {
29486  }
29487 
29489  : Inst_VOP3(iFmt, "v_mqsad_u32_u8", false)
29490  {
29491  setFlag(ALU);
29492  } // Inst_VOP3__V_MQSAD_U32_U8
29493 
29495  {
29496  } // ~Inst_VOP3__V_MQSAD_U32_U8
29497 
29498  // D.u128 = Masked Quad-Byte SAD with 32-bit accum_lo/hi(S0.u[63:0],
29499  // S1.u[31:0], S2.u[127:0])
29500  void
29502  {
29504  }
29505 
29507  InFmt_VOP3_SDST_ENC *iFmt)
29508  : Inst_VOP3_SDST_ENC(iFmt, "v_mad_u64_u32")
29509  {
29510  setFlag(ALU);
29511  setFlag(WritesVCC);
29512  setFlag(MAD);
29513  } // Inst_VOP3__V_MAD_U64_U32
29514 
29516  {
29517  } // ~Inst_VOP3__V_MAD_U64_U32
29518 
29519  // {vcc_out, D.u64} = S0.u32 * S1.u32 + S2.u64.
29520  void
29522  {
29523  Wavefront *wf = gpuDynInst->wavefront();
29524  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
29525  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
29526  ConstVecOperandU64 src2(gpuDynInst, extData.SRC2);
29527  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
29528  VecOperandU64 vdst(gpuDynInst, instData.VDST);
29529 
29530  src0.readSrc();
29531  src1.readSrc();
29532  src2.readSrc();
29533  vdst.read();
29534 
29538  assert(!(extData.NEG & 0x1));
29539  assert(!(extData.NEG & 0x2));
29540  assert(!(extData.NEG & 0x4));
29541 
29542  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29543  if (wf->execMask(lane)) {
29544  vcc.setBit(lane, muladd(vdst[lane], src0[lane], src1[lane],
29545  src2[lane]));
29546  }
29547  }
29548 
29549  vcc.write();
29550  vdst.write();
29551  }
29552 
29554  InFmt_VOP3_SDST_ENC *iFmt)
29555  : Inst_VOP3_SDST_ENC(iFmt, "v_mad_i64_i32")
29556  {
29557  setFlag(ALU);
29558  setFlag(WritesVCC);
29559  setFlag(MAD);
29560  } // Inst_VOP3__V_MAD_I64_I32
29561 
29563  {
29564  } // ~Inst_VOP3__V_MAD_I64_I32
29565 
29566  // {vcc_out,D.i64} = S0.i32 * S1.i32 + S2.i64.
29567  void
29569  {
29570  Wavefront *wf = gpuDynInst->wavefront();
29571  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
29572  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
29573  ConstVecOperandI64 src2(gpuDynInst, extData.SRC2);
29574  ScalarOperandU64 vcc(gpuDynInst, instData.SDST);
29575  VecOperandI64 vdst(gpuDynInst, instData.VDST);
29576 
29577  src0.readSrc();
29578  src1.readSrc();
29579  src2.readSrc();
29580 
29584  assert(!(extData.NEG & 0x1));
29585  assert(!(extData.NEG & 0x2));
29586  assert(!(extData.NEG & 0x4));
29587 
29588  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29589  if (wf->execMask(lane)) {
29590  vcc.setBit(lane, muladd(vdst[lane], src0[lane], src1[lane],
29591  src2[lane]));
29592  }
29593  }
29594 
29595  vcc.write();
29596  vdst.write();
29597  }
29598 
29600  : Inst_VOP3(iFmt, "v_mad_f16", false)
29601  {
29602  setFlag(ALU);
29603  setFlag(F16);
29604  setFlag(MAD);
29605  } // Inst_VOP3__V_MAD_F16
29606 
29608  {
29609  } // ~Inst_VOP3__V_MAD_F16
29610 
29611  // D.f16 = S0.f16 * S1.f16 + S2.f16.
29612  // Supports round mode, exception flags, saturation.
29613  void
29615  {
29617  }
29618 
29620  : Inst_VOP3(iFmt, "v_mad_u16", false)
29621  {
29622  setFlag(ALU);
29623  setFlag(MAD);
29624  } // Inst_VOP3__V_MAD_U16
29625 
29627  {
29628  } // ~Inst_VOP3__V_MAD_U16
29629 
29630  // D.u16 = S0.u16 * S1.u16 + S2.u16.
29631  // Supports saturation (unsigned 16-bit integer domain).
29632  void
29634  {
29635  Wavefront *wf = gpuDynInst->wavefront();
29636  ConstVecOperandU16 src0(gpuDynInst, extData.SRC0);
29637  ConstVecOperandU16 src1(gpuDynInst, extData.SRC1);
29638  ConstVecOperandU16 src2(gpuDynInst, extData.SRC2);
29639  VecOperandU16 vdst(gpuDynInst, instData.VDST);
29640 
29641  src0.readSrc();
29642  src1.readSrc();
29643  src2.readSrc();
29644 
29648  assert(!(instData.ABS & 0x1));
29649  assert(!(instData.ABS & 0x2));
29650  assert(!(instData.ABS & 0x4));
29651  assert(!(extData.NEG & 0x1));
29652  assert(!(extData.NEG & 0x2));
29653  assert(!(extData.NEG & 0x4));
29654 
29655  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29656  if (wf->execMask(lane)) {
29657  vdst[lane] = src0[lane] * src1[lane] + src2[lane];
29658  }
29659  }
29660 
29661  vdst.write();
29662  }
29663 
29665  : Inst_VOP3(iFmt, "v_mad_i16", false)
29666  {
29667  setFlag(ALU);
29668  setFlag(MAD);
29669  } // Inst_VOP3__V_MAD_I16
29670 
29672  {
29673  } // ~Inst_VOP3__V_MAD_I16
29674 
29675  // D.i16 = S0.i16 * S1.i16 + S2.i16.
29676  // Supports saturation (signed 16-bit integer domain).
29677  void
29679  {
29680  Wavefront *wf = gpuDynInst->wavefront();
29681  ConstVecOperandI16 src0(gpuDynInst, extData.SRC0);
29682  ConstVecOperandI16 src1(gpuDynInst, extData.SRC1);
29683  ConstVecOperandI16 src2(gpuDynInst, extData.SRC2);
29684  VecOperandI16 vdst(gpuDynInst, instData.VDST);
29685 
29686  src0.readSrc();
29687  src1.readSrc();
29688  src2.readSrc();
29689 
29693  assert(!(instData.ABS & 0x1));
29694  assert(!(instData.ABS & 0x2));
29695  assert(!(instData.ABS & 0x4));
29696  assert(!(extData.NEG & 0x1));
29697  assert(!(extData.NEG & 0x2));
29698  assert(!(extData.NEG & 0x4));
29699 
29700  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29701  if (wf->execMask(lane)) {
29702  vdst[lane] = src0[lane] * src1[lane] + src2[lane];
29703  }
29704  }
29705 
29706  vdst.write();
29707  }
29708 
29710  : Inst_VOP3(iFmt, "v_perm_b32", false)
29711  {
29712  setFlag(ALU);
29713  } // Inst_VOP3__V_PERM_B32
29714 
29716  {
29717  } // ~Inst_VOP3__V_PERM_B32
29718 
29719  // D.u[31:24] = permute({S0.u, S1.u}, S2.u[31:24]);
29720  // D.u[23:16] = permute({S0.u, S1.u}, S2.u[23:16]);
29721  // D.u[15:8] = permute({S0.u, S1.u}, S2.u[15:8]);
29722  // D.u[7:0] = permute({S0.u, S1.u}, S2.u[7:0]);
29723  // byte permute(byte in[8], byte sel) {
29724  // if(sel>=13) then return 0xff;
29725  // elsif(sel==12) then return 0x00;
29726  // elsif(sel==11) then return in[7][7] * 0xff;
29727  // elsif(sel==10) then return in[5][7] * 0xff;
29728  // elsif(sel==9) then return in[3][7] * 0xff;
29729  // elsif(sel==8) then return in[1][7] * 0xff;
29730  // else return in[sel];
29731  // }
29732  void
29734  {
29735  Wavefront *wf = gpuDynInst->wavefront();
29736  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
29737  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
29738  ConstVecOperandU32 src2(gpuDynInst, extData.SRC2);
29739  VecOperandU32 vdst(gpuDynInst, instData.VDST);
29740 
29741  src0.readSrc();
29742  src1.readSrc();
29743  src2.readSrc();
29744 
29745  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
29746  if (wf->execMask(lane)) {
29747  VecElemU64 selector = (VecElemU64)src0[lane];
29748  selector = (selector << 32) | (VecElemU64)src1[lane];
29749  vdst[lane] = 0;
29750 
29751  DPRINTF(GCN3, "Executing v_perm_b32 src_0 0x%08x, src_1 "
29752  "0x%08x, src_2 0x%08x, vdst 0x%08x\n", src0[lane],
29753  src1[lane], src2[lane], vdst[lane]);
29754  DPRINTF(GCN3, "Selector: 0x%08x \n", selector);
29755 
29756  for (int i = 0; i < 4 ; ++i) {
29757  VecElemU32 permuted_val = permute(selector, 0xFF
29758  & ((VecElemU32)src2[lane] >> (8 * i)));
29759  vdst[lane] |= (permuted_val << i);
29760  }
29761 
29762  DPRINTF(GCN3, "v_perm result: 0x%08x\n", vdst[lane]);
29763  }
29764  }
29765 
29766  vdst.write();
29767  }
29768 
29770  : Inst_VOP3(iFmt, "v_fma_f16", false)
29771  {
29772  setFlag(ALU);
29773  setFlag(F16);
29774  setFlag(FMA);
29775  } // Inst_VOP3__V_FMA_F16
29776 
29778  {
29779  } // ~Inst_VOP3__V_FMA_F16
29780 
29781  // D.f16 = S0.f16 * S1.f16 + S2.f16.
29782  // Fused half precision multiply add.
29783  void
29785  {
29787  }
29788 
29790  : Inst_VOP3(iFmt, "v_div_fixup_f16", false)
29791  {
29792  setFlag(ALU);
29793  setFlag(F16);
29794  } // Inst_VOP3__V_DIV_FIXUP_F16
29795 
29797  {
29798  } // ~Inst_VOP3__V_DIV_FIXUP_F16
29799 
29800  // sign_out = sign(S1.f16)^sign(S2.f16);
29801  // if (S2.f16 == NAN)
29802  // D.f16 = Quiet(S2.f16);
29803  // else if (S1.f16 == NAN)
29804  // D.f16 = Quiet(S1.f16);
29805  // else if (S1.f16 == S2.f16 == 0)
29806  // # 0/0
29807  // D.f16 = pele_nan(0xfe00);
29808  // else if (abs(S1.f16) == abs(S2.f16) == +-INF)
29809  // # inf/inf
29810  // D.f16 = pele_nan(0xfe00);
29811  // else if (S1.f16 ==0 || abs(S2.f16) == +-INF)
29812  // # x/0, or inf/y
29813  // D.f16 = sign_out ? -INF : INF;
29814  // else if (abs(S1.f16) == +-INF || S2.f16 == 0)
29815  // # x/inf, 0/y
29816  // D.f16 = sign_out ? -0 : 0;
29817  // else if ((exp(S2.f16) - exp(S1.f16)) < -150)
29818  // D.f16 = sign_out ? -underflow : underflow;
29819  // else if (exp(S1.f16) == 255)
29820  // D.f16 = sign_out ? -overflow : overflow;
29821  // else
29822  // D.f16 = sign_out ? -abs(S0.f16) : abs(S0.f16).
29823  // Half precision division fixup.
29824  // S0 = Quotient, S1 = Denominator, S3 = Numerator.
29825  // Given a numerator, denominator, and quotient from a divide, this opcode
29826  // will detect and apply special case numerics, touching up the quotient if
29827  // necessary. This opcode also generates invalid, denorm and divide by
29828  // zero exceptions caused by the division.
29829  void
29831  {
29833  }
29834 
29836  InFmt_VOP3 *iFmt)
29837  : Inst_VOP3(iFmt, "v_cvt_pkaccum_u8_f32", false)
29838  {
29839  setFlag(ALU);
29840  setFlag(F32);
29841  } // Inst_VOP3__V_CVT_PKACCUM_U8_F32
29842 
29844  {
29845  } // ~Inst_VOP3__V_CVT_PKACCUM_U8_F32
29846 
29847  // byte = S1.u[1:0]; bit = byte * 8;
29848  // D.u[bit + 7:bit] = flt32_to_uint8(S0.f);
29849  // Pack converted value of S0.f into byte S1 of the destination.
29850  // SQ translates to V_CVT_PK_U8_F32.
29851  // Note: this opcode uses src_c to pass destination in as a source.
29852  void
29854  {
29856  }
29857 
29859  : Inst_VOP3(iFmt, "v_interp_p1_f32", false)
29860  {
29861  setFlag(ALU);
29862  setFlag(F32);
29863  } // Inst_VOP3__V_INTERP_P1_F32
29864 
29866  {
29867  } // ~Inst_VOP3__V_INTERP_P1_F32
29868 
29869  // D.f = P10 * S.f + P0;
29870  void
29872  {
29874  }
29875 
29877  : Inst_VOP3(iFmt, "v_interp_p2_f32", false)
29878  {
29879  setFlag(ALU);
29880  setFlag(F32);
29881  } // Inst_VOP3__V_INTERP_P2_F32
29882 
29884  {
29885  } // ~Inst_VOP3__V_INTERP_P2_F32
29886 
29887  // D.f = P20 * S.f + D.f;
29888  void
29890  {
29892  }
29893 
29895  : Inst_VOP3(iFmt, "v_interp_mov_f32", false)
29896  {
29897  setFlag(ALU);
29898  setFlag(F32);
29899  } // Inst_VOP3__V_INTERP_MOV_F32
29900 
29902  {
29903  } // ~Inst_VOP3__V_INTERP_MOV_F32
29904 
29905  // D.f = {P10,P20,P0}[S.u]; parameter load.
29906  void
29908  {
29910  }
29911 
29913  InFmt_VOP3 *iFmt)
29914  : Inst_VOP3(iFmt, "v_interp_p1ll_f16", false)
29915  {
29916  setFlag(ALU);
29917  setFlag(F16);
29918  } // Inst_VOP3__V_INTERP_P1LL_F16
29919 
29921  {
29922  } // ~Inst_VOP3__V_INTERP_P1LL_F16
29923 
29924  // D.f32 = P10.f16 * S0.f32 + P0.f16.
29925  void
29927  {
29929  }
29930 
29932  InFmt_VOP3 *iFmt)
29933  : Inst_VOP3(iFmt, "v_interp_p1lv_f16", false)
29934  {
29935  setFlag(ALU);
29936  setFlag(F16);
29937  } // Inst_VOP3__V_INTERP_P1LV_F16
29938 
29940  {
29941  } // ~Inst_VOP3__V_INTERP_P1LV_F16
29942 
29943  void
29945  {
29947  }
29948 
29950  : Inst_VOP3(iFmt, "v_interp_p2_f16", false)
29951  {
29952  setFlag(ALU);
29953  setFlag(F16);
29954  } // Inst_VOP3__V_INTERP_P2_F16
29955 
29957  {
29958  } // ~Inst_VOP3__V_INTERP_P2_F16
29959 
29960  // D.f16 = P20.f16 * S0.f32 + S2.f32.
29961  void
29963  {
29965  }
29966 
29968  : Inst_VOP3(iFmt, "v_add_f64", false)
29969  {
29970  setFlag(ALU);
29971  setFlag(F64);
29972  } // Inst_VOP3__V_ADD_F64
29973 
29975  {
29976  } // ~Inst_VOP3__V_ADD_F64
29977 
29978  // D.d = S0.d + S1.d.
29979  void
29981  {
29982  Wavefront *wf = gpuDynInst->wavefront();
29983  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
29984  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
29985  VecOperandF64 vdst(gpuDynInst, instData.VDST);
29986 
29987  src0.readSrc();
29988  src1.readSrc();
29989 
29990  if (instData.ABS & 0x1) {
29991  src0.absModifier();
29992  }
29993 
29994  if (instData.ABS & 0x2) {
29995  src1.absModifier();
29996  }
29997 
29998  if (extData.NEG & 0x1) {
29999  src0.negModifier();
30000  }
30001 
30002  if (extData.NEG & 0x2) {
30003  src1.negModifier();
30004  }
30005 
30009  assert(!(instData.ABS & 0x4));
30010  assert(!(extData.NEG & 0x4));
30011 
30012  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30013  if (wf->execMask(lane)) {
30014  if (std::isnan(src0[lane]) ||
30015  std::isnan(src1[lane]) ) {
30016  vdst[lane] = NAN;
30017  } else if (std::isinf(src0[lane]) &&
30018  std::isinf(src1[lane])) {
30019  if (std::signbit(src0[lane]) !=
30020  std::signbit(src1[lane])) {
30021  vdst[lane] = NAN;
30022  } else {
30023  vdst[lane] = src0[lane];
30024  }
30025  } else if (std::isinf(src0[lane])) {
30026  vdst[lane] = src0[lane];
30027  } else if (std::isinf(src1[lane])) {
30028  vdst[lane] = src1[lane];
30029  } else if (std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
30030  std::fpclassify(src0[lane]) == FP_ZERO) {
30031  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
30032  std::fpclassify(src1[lane]) == FP_ZERO) {
30033  if (std::signbit(src0[lane]) &&
30034  std::signbit(src1[lane])) {
30035  vdst[lane] = -0.0;
30036  } else {
30037  vdst[lane] = 0.0;
30038  }
30039  } else {
30040  vdst[lane] = src1[lane];
30041  }
30042  } else if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
30043  std::fpclassify(src1[lane]) == FP_ZERO) {
30044  if (std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
30045  std::fpclassify(src0[lane]) == FP_ZERO) {
30046  if (std::signbit(src0[lane]) &&
30047  std::signbit(src1[lane])) {
30048  vdst[lane] = -0.0;
30049  } else {
30050  vdst[lane] = 0.0;
30051  }
30052  } else {
30053  vdst[lane] = src0[lane];
30054  }
30055  } else {
30056  vdst[lane] = src0[lane] + src1[lane];
30057  }
30058  }
30059  }
30060 
30061  vdst.write();
30062  }
30063 
30065  : Inst_VOP3(iFmt, "v_mul_f64", false)
30066  {
30067  setFlag(ALU);
30068  setFlag(F64);
30069  } // Inst_VOP3__V_MUL_F64
30070 
30072  {
30073  } // ~Inst_VOP3__V_MUL_F64
30074 
30075  // D.d = S0.d * S1.d.
30076  void
30078  {
30079  Wavefront *wf = gpuDynInst->wavefront();
30080  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
30081  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
30082  VecOperandF64 vdst(gpuDynInst, instData.VDST);
30083 
30084  src0.readSrc();
30085  src1.readSrc();
30086 
30087  if (instData.ABS & 0x1) {
30088  src0.absModifier();
30089  }
30090 
30091  if (instData.ABS & 0x2) {
30092  src1.absModifier();
30093  }
30094 
30095  if (extData.NEG & 0x1) {
30096  src0.negModifier();
30097  }
30098 
30099  if (extData.NEG & 0x2) {
30100  src1.negModifier();
30101  }
30102 
30106  assert(!(instData.ABS & 0x4));
30107  assert(!(extData.NEG & 0x4));
30108 
30109  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30110  if (wf->execMask(lane)) {
30111  if (std::isnan(src0[lane]) ||
30112  std::isnan(src1[lane])) {
30113  vdst[lane] = NAN;
30114  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
30115  std::fpclassify(src0[lane]) == FP_ZERO) &&
30116  !std::signbit(src0[lane])) {
30117  if (std::isinf(src1[lane])) {
30118  vdst[lane] = NAN;
30119  } else if (!std::signbit(src1[lane])) {
30120  vdst[lane] = +0.0;
30121  } else {
30122  vdst[lane] = -0.0;
30123  }
30124  } else if ((std::fpclassify(src0[lane]) == FP_SUBNORMAL ||
30125  std::fpclassify(src0[lane]) == FP_ZERO) &&
30126  std::signbit(src0[lane])) {
30127  if (std::isinf(src1[lane])) {
30128  vdst[lane] = NAN;
30129  } else if (std::signbit(src1[lane])) {
30130  vdst[lane] = +0.0;
30131  } else {
30132  vdst[lane] = -0.0;
30133  }
30134  } else if (std::isinf(src0[lane]) &&
30135  !std::signbit(src0[lane])) {
30136  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
30137  std::fpclassify(src1[lane]) == FP_ZERO) {
30138  vdst[lane] = NAN;
30139  } else if (!std::signbit(src1[lane])) {
30140  vdst[lane] = +INFINITY;
30141  } else {
30142  vdst[lane] = -INFINITY;
30143  }
30144  } else if (std::isinf(src0[lane]) &&
30145  std::signbit(src0[lane])) {
30146  if (std::fpclassify(src1[lane]) == FP_SUBNORMAL ||
30147  std::fpclassify(src1[lane]) == FP_ZERO) {
30148  vdst[lane] = NAN;
30149  } else if (std::signbit(src1[lane])) {
30150  vdst[lane] = +INFINITY;
30151  } else {
30152  vdst[lane] = -INFINITY;
30153  }
30154  } else {
30155  vdst[lane] = src0[lane] * src1[lane];
30156  }
30157  }
30158  }
30159 
30160  vdst.write();
30161  }
30162 
30164  : Inst_VOP3(iFmt, "v_min_f64", false)
30165  {
30166  setFlag(ALU);
30167  setFlag(F64);
30168  } // Inst_VOP3__V_MIN_F64
30169 
30171  {
30172  } // ~Inst_VOP3__V_MIN_F64
30173 
30174  // D.d = min(S0.d, S1.d).
30175  void
30177  {
30178  Wavefront *wf = gpuDynInst->wavefront();
30179  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
30180  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
30181  VecOperandF64 vdst(gpuDynInst, instData.VDST);
30182 
30183  src0.readSrc();
30184  src1.readSrc();
30185 
30186  if (instData.ABS & 0x1) {
30187  src0.absModifier();
30188  }
30189 
30190  if (instData.ABS & 0x2) {
30191  src1.absModifier();
30192  }
30193 
30194  if (extData.NEG & 0x1) {
30195  src0.negModifier();
30196  }
30197 
30198  if (extData.NEG & 0x2) {
30199  src1.negModifier();
30200  }
30201 
30205  assert(!(instData.ABS & 0x4));
30206  assert(!(extData.NEG & 0x4));
30207 
30208  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30209  if (wf->execMask(lane)) {
30210  vdst[lane] = std::fmin(src0[lane], src1[lane]);
30211  }
30212  }
30213 
30214  vdst.write();
30215  }
30216 
30218  : Inst_VOP3(iFmt, "v_max_f64", false)
30219  {
30220  setFlag(ALU);
30221  setFlag(F64);
30222  } // Inst_VOP3__V_MAX_F64
30223 
30225  {
30226  } // ~Inst_VOP3__V_MAX_F64
30227 
30228  // D.d = max(S0.d, S1.d).
30229  void
30231  {
30232  Wavefront *wf = gpuDynInst->wavefront();
30233  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
30234  ConstVecOperandF64 src1(gpuDynInst, extData.SRC1);
30235  VecOperandF64 vdst(gpuDynInst, instData.VDST);
30236 
30237  src0.readSrc();
30238  src1.readSrc();
30239 
30240  if (instData.ABS & 0x1) {
30241  src0.absModifier();
30242  }
30243 
30244  if (instData.ABS & 0x2) {
30245  src1.absModifier();
30246  }
30247 
30248  if (extData.NEG & 0x1) {
30249  src0.negModifier();
30250  }
30251 
30252  if (extData.NEG & 0x2) {
30253  src1.negModifier();
30254  }
30255 
30259  assert(!(instData.ABS & 0x4));
30260  assert(!(extData.NEG & 0x4));
30261 
30262  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30263  if (wf->execMask(lane)) {
30264  vdst[lane] = std::fmax(src0[lane], src1[lane]);
30265  }
30266  }
30267 
30268  vdst.write();
30269  }
30270 
30272  : Inst_VOP3(iFmt, "v_ldexp_f64", false)
30273  {
30274  setFlag(ALU);
30275  setFlag(F64);
30276  } // Inst_VOP3__V_LDEXP_F64
30277 
30279  {
30280  } // ~Inst_VOP3__V_LDEXP_F64
30281 
30282  // D.d = pow(S0.d, S1.i[31:0]).
30283  void
30285  {
30286  Wavefront *wf = gpuDynInst->wavefront();
30287  ConstVecOperandF64 src0(gpuDynInst, extData.SRC0);
30288  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30289  VecOperandF64 vdst(gpuDynInst, instData.VDST);
30290 
30291  src0.readSrc();
30292  src1.readSrc();
30293 
30294  if (instData.ABS & 0x1) {
30295  src0.absModifier();
30296  }
30297 
30298  if (extData.NEG & 0x1) {
30299  src0.negModifier();
30300  }
30301 
30305  assert(!(instData.ABS & 0x2));
30306  assert(!(instData.ABS & 0x4));
30307  assert(!(extData.NEG & 0x2));
30308  assert(!(extData.NEG & 0x4));
30309 
30310  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30311  if (wf->execMask(lane)) {
30312  if (std::isnan(src0[lane]) || std::isinf(src0[lane])) {
30313  vdst[lane] = src0[lane];
30314  } else if (std::fpclassify(src0[lane]) == FP_SUBNORMAL
30315  || std::fpclassify(src0[lane]) == FP_ZERO) {
30316  if (std::signbit(src0[lane])) {
30317  vdst[lane] = -0.0;
30318  } else {
30319  vdst[lane] = +0.0;
30320  }
30321  } else {
30322  vdst[lane] = std::ldexp(src0[lane], src1[lane]);
30323  }
30324  }
30325  }
30326 
30327  vdst.write();
30328  }
30329 
30331  : Inst_VOP3(iFmt, "v_mul_lo_u32", false)
30332  {
30333  setFlag(ALU);
30334  } // Inst_VOP3__V_MUL_LO_U32
30335 
30337  {
30338  } // ~Inst_VOP3__V_MUL_LO_U32
30339 
30340  // D.u = S0.u * S1.u.
30341  void
30343  {
30344  Wavefront *wf = gpuDynInst->wavefront();
30345  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30346  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30347  VecOperandU32 vdst(gpuDynInst, instData.VDST);
30348 
30349  src0.readSrc();
30350  src1.readSrc();
30351 
30355  assert(!(instData.ABS & 0x1));
30356  assert(!(instData.ABS & 0x2));
30357  assert(!(instData.ABS & 0x4));
30358  assert(!(extData.NEG & 0x1));
30359  assert(!(extData.NEG & 0x2));
30360  assert(!(extData.NEG & 0x4));
30361 
30362  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30363  if (wf->execMask(lane)) {
30364  VecElemI64 s0 = (VecElemI64)src0[lane];
30365  VecElemI64 s1 = (VecElemI64)src1[lane];
30366  vdst[lane] = (VecElemU32)((s0 * s1) & 0xffffffffLL);
30367  }
30368  }
30369 
30370  vdst.write();
30371  }
30372 
30374  : Inst_VOP3(iFmt, "v_mul_hi_u32", false)
30375  {
30376  setFlag(ALU);
30377  } // Inst_VOP3__V_MUL_HI_U32
30378 
30380  {
30381  } // ~Inst_VOP3__V_MUL_HI_U32
30382 
30383  // D.u = (S0.u * S1.u) >> 32.
30384  void
30386  {
30387  Wavefront *wf = gpuDynInst->wavefront();
30388  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30389  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30390  VecOperandU32 vdst(gpuDynInst, instData.VDST);
30391 
30392  src0.readSrc();
30393  src1.readSrc();
30394 
30398  assert(!(instData.ABS & 0x1));
30399  assert(!(instData.ABS & 0x2));
30400  assert(!(instData.ABS & 0x4));
30401  assert(!(extData.NEG & 0x1));
30402  assert(!(extData.NEG & 0x2));
30403  assert(!(extData.NEG & 0x4));
30404 
30405  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30406  if (wf->execMask(lane)) {
30407  VecElemI64 s0 = (VecElemI64)src0[lane];
30408  VecElemI64 s1 = (VecElemI64)src1[lane];
30409  vdst[lane]
30410  = (VecElemU32)(((s0 * s1) >> 32) & 0xffffffffLL);
30411  }
30412  }
30413 
30414  vdst.write();
30415  }
30416 
30418  : Inst_VOP3(iFmt, "v_mul_hi_i32", false)
30419  {
30420  setFlag(ALU);
30421  } // Inst_VOP3__V_MUL_HI_I32
30422 
30424  {
30425  } // ~Inst_VOP3__V_MUL_HI_I32
30426 
30427  // D.i = (S0.i * S1.i) >> 32.
30428  void
30430  {
30431  Wavefront *wf = gpuDynInst->wavefront();
30432  ConstVecOperandI32 src0(gpuDynInst, extData.SRC0);
30433  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
30434  VecOperandI32 vdst(gpuDynInst, instData.VDST);
30435 
30436  src0.readSrc();
30437  src1.readSrc();
30438 
30442  assert(!(instData.ABS & 0x1));
30443  assert(!(instData.ABS & 0x2));
30444  assert(!(instData.ABS & 0x4));
30445  assert(!(extData.NEG & 0x1));
30446  assert(!(extData.NEG & 0x2));
30447  assert(!(extData.NEG & 0x4));
30448 
30449  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30450  if (wf->execMask(lane)) {
30451  VecElemI64 s0 = (VecElemI64)src0[lane];
30452  VecElemI64 s1 = (VecElemI64)src1[lane];
30453  vdst[lane]
30454  = (VecElemI32)(((s0 * s1) >> 32LL) & 0xffffffffLL);
30455  }
30456  }
30457 
30458  vdst.write();
30459  }
30460 
30462  : Inst_VOP3(iFmt, "v_ldexp_f32", false)
30463  {
30464  setFlag(ALU);
30465  setFlag(F32);
30466  } // Inst_VOP3__V_LDEXP_F32
30467 
30469  {
30470  } // ~Inst_VOP3__V_LDEXP_F32
30471 
30472  // D.f = pow(S0.f, S1.i)
30473  void
30475  {
30476  Wavefront *wf = gpuDynInst->wavefront();
30477  ConstVecOperandF32 src0(gpuDynInst, extData.SRC0);
30478  ConstVecOperandI32 src1(gpuDynInst, extData.SRC1);
30479  VecOperandF32 vdst(gpuDynInst, instData.VDST);
30480 
30481  src0.readSrc();
30482  src1.readSrc();
30483 
30487  assert(!(instData.ABS & 0x2));
30488  assert(!(instData.ABS & 0x4));
30489  assert(!(extData.NEG & 0x2));
30490  assert(!(extData.NEG & 0x4));
30491 
30492  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30493  if (wf->execMask(lane)) {
30494  vdst[lane] = std::ldexp(src0[lane], src1[lane]);
30495  }
30496  }
30497 
30498  vdst.write();
30499  }
30500 
30502  : Inst_VOP3(iFmt, "v_readlane_b32", true)
30503  {
30504  setFlag(ALU);
30505  setFlag(IgnoreExec);
30506  } // Inst_VOP3__V_READLANE_B32
30507 
30509  {
30510  } // ~Inst_VOP3__V_READLANE_B32
30511 
30512  // Copy one VGPR value to one SGPR. D = SGPR-dest, S0 = Source Data (VGPR#
30513  // or M0(lds-direct)), S1 = Lane Select (SGPR or M0). Ignores exec mask.
30514  // Input and output modifiers not supported; this is an untyped operation.
30515  void
30517  {
30518  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30519  ConstScalarOperandU32 src1(gpuDynInst, extData.SRC1);
30520  ScalarOperandU32 sdst(gpuDynInst, instData.VDST);
30521 
30522  src0.readSrc();
30523  src1.read();
30524 
30528  assert(!(instData.ABS & 0x1));
30529  assert(!(instData.ABS & 0x2));
30530  assert(!(instData.ABS & 0x4));
30531  assert(!(extData.NEG & 0x1));
30532  assert(!(extData.NEG & 0x2));
30533  assert(!(extData.NEG & 0x4));
30534 
30535  sdst = src0[src1.rawData() & 0x3f];
30536 
30537  sdst.write();
30538  }
30539 
30541  : Inst_VOP3(iFmt, "v_writelane_b32", false)
30542  {
30543  setFlag(ALU);
30544  setFlag(IgnoreExec);
30545  } // Inst_VOP3__V_WRITELANE_B32
30546 
30548  {
30549  } // ~Inst_VOP3__V_WRITELANE_B32
30550 
30551  // Write value into one VGPR in one lane. D = VGPR-dest, S0 = Source Data
30552  // (sgpr, m0, exec or constants), S1 = Lane Select (SGPR or M0). Ignores
30553  // exec mask. Input and output modifiers not supported; this is an untyped
30554  // operation.
30555  void
30557  {
30558  ConstScalarOperandU32 src0(gpuDynInst, extData.SRC0);
30559  ConstScalarOperandU32 src1(gpuDynInst, extData.SRC1);
30560  VecOperandU32 vdst(gpuDynInst, instData.VDST);
30561 
30562  src0.read();
30563  src1.read();
30564  vdst.read();
30565 
30569  assert(!(instData.ABS & 0x1));
30570  assert(!(instData.ABS & 0x2));
30571  assert(!(instData.ABS & 0x4));
30572  assert(!(extData.NEG & 0x1));
30573  assert(!(extData.NEG & 0x2));
30574  assert(!(extData.NEG & 0x4));
30575 
30576  vdst[src1.rawData() & 0x3f] = src0.rawData();
30577 
30578  vdst.write();
30579  }
30580 
30582  : Inst_VOP3(iFmt, "v_bcnt_u32_b32", false)
30583  {
30584  setFlag(ALU);
30585  } // Inst_VOP3__V_BCNT_U32_B32
30586 
30588  {
30589  } // ~Inst_VOP3__V_BCNT_U32_B32
30590 
30591  // D.u = CountOneBits(S0.u) + S1.u. Bit count.
30592  void
30594  {
30595  Wavefront *wf = gpuDynInst->wavefront();
30596  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30597  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30598  VecOperandU32 vdst(gpuDynInst, instData.VDST);
30599 
30600  src0.readSrc();
30601  src1.readSrc();
30602 
30606  assert(!(instData.ABS & 0x1));
30607  assert(!(instData.ABS & 0x2));
30608  assert(!(instData.ABS & 0x4));
30609  assert(!(extData.NEG & 0x1));
30610  assert(!(extData.NEG & 0x2));
30611  assert(!(extData.NEG & 0x4));
30612 
30613  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30614  if (wf->execMask(lane)) {
30615  vdst[lane] = popCount(src0[lane]) + src1[lane];
30616  }
30617  }
30618 
30619  vdst.write();
30620  }
30621 
30623  InFmt_VOP3 *iFmt)
30624  : Inst_VOP3(iFmt, "v_mbcnt_lo_u32_b32", false)
30625  {
30626  setFlag(ALU);
30627  } // Inst_VOP3__V_MBCNT_LO_U32_B32
30628 
30630  {
30631  } // ~Inst_VOP3__V_MBCNT_LO_U32_B32
30632 
30633  // Masked bit count, ThreadPosition is the position of this thread in the
30634  // wavefront (in 0..63).
30635  void
30637  {
30638  Wavefront *wf = gpuDynInst->wavefront();
30639  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30640  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30641  VecOperandU32 vdst(gpuDynInst, instData.VDST);
30642  uint64_t threadMask = 0;
30643 
30644  src0.readSrc();
30645  src1.readSrc();
30646 
30650  assert(!(instData.ABS & 0x1));
30651  assert(!(instData.ABS & 0x2));
30652  assert(!(instData.ABS & 0x4));
30653  assert(!(extData.NEG & 0x1));
30654  assert(!(extData.NEG & 0x2));
30655  assert(!(extData.NEG & 0x4));
30656 
30657  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30658  if (wf->execMask(lane)) {
30659  threadMask = ((1LL << lane) - 1LL);
30660  vdst[lane] = popCount(src0[lane] & bits(threadMask, 31, 0)) +
30661  src1[lane];
30662  }
30663  }
30664 
30665  vdst.write();
30666  } // execute
30667  // --- Inst_VOP3__V_MBCNT_HI_U32_B32 class methods ---
30668 
30670  InFmt_VOP3 *iFmt)
30671  : Inst_VOP3(iFmt, "v_mbcnt_hi_u32_b32", false)
30672  {
30673  setFlag(ALU);
30674  } // Inst_VOP3__V_MBCNT_HI_U32_B32
30675 
30677  {
30678  } // ~Inst_VOP3__V_MBCNT_HI_U32_B32
30679 
30680  // ThreadMask = (1 << ThreadPosition) - 1;
30681  // D.u = CountOneBits(S0.u & ThreadMask[63:32]) + S1.u.
30682  // Masked bit count, ThreadPosition is the position of this thread in the
30683  // wavefront (in 0..63).
30684  void
30686  {
30687  Wavefront *wf = gpuDynInst->wavefront();
30688  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30689  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30690  VecOperandU32 vdst(gpuDynInst, instData.VDST);
30691  uint64_t threadMask = 0;
30692 
30693  src0.readSrc();
30694  src1.readSrc();
30695 
30699  assert(!(instData.ABS & 0x1));
30700  assert(!(instData.ABS & 0x2));
30701  assert(!(instData.ABS & 0x4));
30702  assert(!(extData.NEG & 0x1));
30703  assert(!(extData.NEG & 0x2));
30704  assert(!(extData.NEG & 0x4));
30705 
30706  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30707  if (wf->execMask(lane)) {
30708  threadMask = ((1LL << lane) - 1LL);
30709  vdst[lane] = popCount(src0[lane] & bits(threadMask, 63, 32)) +
30710  src1[lane];
30711  }
30712  }
30713 
30714  vdst.write();
30715  } // execute
30716  // --- Inst_VOP3__V_LSHLREV_B64 class methods ---
30717 
30719  : Inst_VOP3(iFmt, "v_lshlrev_b64", false)
30720  {
30721  setFlag(ALU);
30722  } // Inst_VOP3__V_LSHLREV_B64
30723 
30725  {
30726  } // ~Inst_VOP3__V_LSHLREV_B64
30727 
30728  // D.u64 = S1.u64 << S0.u[5:0].
30729  void
30731  {
30732  Wavefront *wf = gpuDynInst->wavefront();
30733  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30734  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
30735  VecOperandU64 vdst(gpuDynInst, instData.VDST);
30736 
30737  src0.readSrc();
30738  src1.readSrc();
30739 
30743  assert(!(instData.ABS & 0x1));
30744  assert(!(instData.ABS & 0x2));
30745  assert(!(instData.ABS & 0x4));
30746  assert(!(extData.NEG & 0x1));
30747  assert(!(extData.NEG & 0x2));
30748  assert(!(extData.NEG & 0x4));
30749 
30750  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30751  if (wf->execMask(lane)) {
30752  vdst[lane] = src1[lane] << bits(src0[lane], 5, 0);
30753  }
30754  }
30755 
30756  vdst.write();
30757  }
30758 
30760  : Inst_VOP3(iFmt, "v_lshrrev_b64", false)
30761  {
30762  setFlag(ALU);
30763  } // Inst_VOP3__V_LSHRREV_B64
30764 
30766  {
30767  } // ~Inst_VOP3__V_LSHRREV_B64
30768 
30769  // D.u64 = S1.u64 >> S0.u[5:0].
30770  // The vacated bits are set to zero.
30771  void
30773  {
30774  Wavefront *wf = gpuDynInst->wavefront();
30775  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30776  ConstVecOperandU64 src1(gpuDynInst, extData.SRC1);
30777  VecOperandU64 vdst(gpuDynInst, instData.VDST);
30778 
30779  src0.readSrc();
30780  src1.readSrc();
30781 
30785  assert(!(instData.ABS & 0x1));
30786  assert(!(instData.ABS & 0x2));
30787  assert(!(instData.ABS & 0x4));
30788  assert(!(extData.NEG & 0x1));
30789  assert(!(extData.NEG & 0x2));
30790  assert(!(extData.NEG & 0x4));
30791 
30792  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30793  if (wf->execMask(lane)) {
30794  vdst[lane] = src1[lane] >> bits(src0[lane], 5, 0);
30795  }
30796  }
30797 
30798  vdst.write();
30799  }
30800 
30802  : Inst_VOP3(iFmt, "v_ashrrev_i64", false)
30803  {
30804  setFlag(ALU);
30805  } // Inst_VOP3__V_ASHRREV_I64
30806 
30808  {
30809  } // ~Inst_VOP3__V_ASHRREV_I64
30810 
30811  // D.u64 = signext(S1.u64) >> S0.u[5:0].
30812  // The vacated bits are set to the sign bit of the input value.
30813  void
30815  {
30816  Wavefront *wf = gpuDynInst->wavefront();
30817  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30818  ConstVecOperandI64 src1(gpuDynInst, extData.SRC1);
30819  VecOperandU64 vdst(gpuDynInst, instData.VDST);
30820 
30821  src0.readSrc();
30822  src1.readSrc();
30823 
30827  assert(!(instData.ABS & 0x1));
30828  assert(!(instData.ABS & 0x2));
30829  assert(!(instData.ABS & 0x4));
30830  assert(!(extData.NEG & 0x1));
30831  assert(!(extData.NEG & 0x2));
30832  assert(!(extData.NEG & 0x4));
30833 
30834  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30835  if (wf->execMask(lane)) {
30836  vdst[lane]
30837  = src1[lane] >> bits(src0[lane], 5, 0);
30838  }
30839  }
30840 
30841  vdst.write();
30842  }
30843 
30845  : Inst_VOP3(iFmt, "v_trig_preop_f64", false)
30846  {
30847  setFlag(ALU);
30848  setFlag(F64);
30849  } // Inst_VOP3__V_TRIG_PREOP_F64
30850 
30852  {
30853  } // ~Inst_VOP3__V_TRIG_PREOP_F64
30854 
30855  void
30857  {
30859  }
30860 
30862  : Inst_VOP3(iFmt, "v_bfm_b32", false)
30863  {
30864  setFlag(ALU);
30865  } // Inst_VOP3__V_BFM_B32
30866 
30868  {
30869  } // ~Inst_VOP3__V_BFM_B32
30870 
30871  // D.u = ((1 << S0.u[4:0]) - 1) << S1.u[4:0];
30872  void
30874  {
30875  Wavefront *wf = gpuDynInst->wavefront();
30876  ConstVecOperandU32 src0(gpuDynInst, extData.SRC0);
30877  ConstVecOperandU32 src1(gpuDynInst, extData.SRC1);
30878  VecOperandU32 vdst(gpuDynInst, instData.VDST);
30879 
30880  src0.readSrc();
30881  src1.readSrc();
30882 
30886  assert(!(instData.ABS & 0x1));
30887  assert(!(instData.ABS & 0x2));
30888  assert(!(instData.ABS & 0x4));
30889  assert(!(extData.NEG & 0x1));
30890  assert(!(extData.NEG & 0x2));
30891  assert(!(extData.NEG & 0x4));
30892 
30893  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
30894  if (wf->execMask(lane)) {
30895  vdst[lane] = ((1 << bits(src0[lane], 4, 0)) - 1)
30896  << bits(src1[lane], 4, 0);
30897  }
30898  }
30899 
30900  vdst.write();
30901  }
30902 
30904  InFmt_VOP3 *iFmt)
30905  : Inst_VOP3(iFmt, "v_cvt_pknorm_i16_f32", false)
30906  {
30907  setFlag(ALU);
30908  setFlag(F32);
30909  } // Inst_VOP3__V_CVT_PKNORM_I16_F32
30910 
30912  {
30913  } // ~Inst_VOP3__V_CVT_PKNORM_I16_F32
30914 
30915  // D = {(snorm)S1.f, (snorm)S0.f}.
30916  void
30918  {
30920  }
30921 
30923  InFmt_VOP3 *iFmt)
30924  : Inst_VOP3(iFmt, "v_cvt_pknorm_u16_f32", false)
30925  {
30926  setFlag(ALU);
30927  setFlag(F32);
30928  } // Inst_VOP3__V_CVT_PKNORM_U16_F32
30929 
30931  {
30932  } // ~Inst_VOP3__V_CVT_PKNORM_U16_F32
30933 
30934  // D = {(unorm)S1.f, (unorm)S0.f}.
30935  void
30937  {
30939  }
30940 
30942  InFmt_VOP3 *iFmt)
30943  : Inst_VOP3(iFmt, "v_cvt_pkrtz_f16_f32", false)
30944  {
30945  setFlag(ALU);
30946  setFlag(F32);
30947  } // Inst_VOP3__V_CVT_PKRTZ_F16_F32
30948 
30950  {
30951  } // ~Inst_VOP3__V_CVT_PKRTZ_F16_F32
30952 
30953  void
30955  {
30957  }
30958 
30960  : Inst_VOP3(iFmt, "v_cvt_pk_u16_u32", false)
30961  {
30962  setFlag(ALU);
30963  } // Inst_VOP3__V_CVT_PK_U16_U32
30964 
30966  {
30967  } // ~Inst_VOP3__V_CVT_PK_U16_U32
30968 
30969  // D = {uint32_to_uint16(S1.u), uint32_to_uint16(S0.u)}.
30970  void
30972  {
30974  }
30975 
30977  : Inst_VOP3(iFmt, "v_cvt_pk_i16_i32", false)
30978  {
30979  setFlag(ALU);
30980  } // Inst_VOP3__V_CVT_PK_I16_I32
30981 
30983  {
30984  } // ~Inst_VOP3__V_CVT_PK_I16_I32
30985 
30986  // D = {int32_to_int16(S1.i), int32_to_int16(S0.i)}.
30987  void
30989  {
30991  }
30992 
30994  : Inst_DS(iFmt, "ds_add_u32")
30995  {
30996  } // Inst_DS__DS_ADD_U32
30997 
30999  {
31000  } // ~Inst_DS__DS_ADD_U32
31001 
31002  // tmp = MEM[ADDR];
31003  // MEM[ADDR] += DATA;
31004  // RETURN_DATA = tmp.
31005  void
31007  {
31009  }
31010 
31012  : Inst_DS(iFmt, "ds_sub_u32")
31013  {
31014  } // Inst_DS__DS_SUB_U32
31015 
31017  {
31018  } // ~Inst_DS__DS_SUB_U32
31019 
31020  // tmp = MEM[ADDR];
31021  // MEM[ADDR] -= DATA;
31022  // RETURN_DATA = tmp.
31023  void
31025  {
31027  }
31028 
31030  : Inst_DS(iFmt, "ds_rsub_u32")
31031  {
31032  } // Inst_DS__DS_RSUB_U32
31033 
31035  {
31036  } // ~Inst_DS__DS_RSUB_U32
31037 
31038  // tmp = MEM[ADDR];
31039  // MEM[ADDR] = DATA - MEM[ADDR];
31040  // RETURN_DATA = tmp.
31041  // Subtraction with reversed operands.
31042  void
31044  {
31046  }
31047 
31049  : Inst_DS(iFmt, "ds_inc_u32")
31050  {
31051  } // Inst_DS__DS_INC_U32
31052 
31054  {
31055  } // ~Inst_DS__DS_INC_U32
31056 
31057  // tmp = MEM[ADDR];
31058  // MEM[ADDR] = (tmp >= DATA) ? 0 : tmp + 1 (unsigned compare);
31059  // RETURN_DATA = tmp.
31060  void
31062  {
31064  }
31065 
31067  : Inst_DS(iFmt, "ds_dec_u32")
31068  {
31069  } // Inst_DS__DS_DEC_U32
31070 
31072  {
31073  } // ~Inst_DS__DS_DEC_U32
31074 
31075  // tmp = MEM[ADDR];
31076  // MEM[ADDR] = (tmp == 0 || tmp > DATA) ? DATA : tmp - 1
31077  // (unsigned compare); RETURN_DATA = tmp.
31078  void
31080  {
31082  }
31083 
31085  : Inst_DS(iFmt, "ds_min_i32")
31086  {
31087  } // Inst_DS__DS_MIN_I32
31088 
31090  {
31091  } // ~Inst_DS__DS_MIN_I32
31092 
31093  // tmp = MEM[ADDR];
31094  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (signed compare);
31095  // RETURN_DATA = tmp.
31096  void
31098  {
31100  }
31101 
31103  : Inst_DS(iFmt, "ds_max_i32")
31104  {
31105  } // Inst_DS__DS_MAX_I32
31106 
31108  {
31109  } // ~Inst_DS__DS_MAX_I32
31110 
31111  // tmp = MEM[ADDR];
31112  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (signed compare);
31113  // RETURN_DATA = tmp.
31114  void
31116  {
31118  }
31119 
31121  : Inst_DS(iFmt, "ds_min_u32")
31122  {
31123  } // Inst_DS__DS_MIN_U32
31124 
31126  {
31127  } // ~Inst_DS__DS_MIN_U32
31128 
31129  // tmp = MEM[ADDR];
31130  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (unsigned compare);
31131  // RETURN_DATA = tmp.
31132  void
31134  {
31136  }
31137 
31139  : Inst_DS(iFmt, "ds_max_u32")
31140  {
31141  } // Inst_DS__DS_MAX_U32
31142 
31144  {
31145  } // ~Inst_DS__DS_MAX_U32
31146 
31147  // tmp = MEM[ADDR];
31148  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (unsigned compare);
31149  // RETURN_DATA = tmp.
31150  void
31152  {
31154  }
31155 
31157  : Inst_DS(iFmt, "ds_and_b32")
31158  {
31159  } // Inst_DS__DS_AND_B32
31160 
31162  {
31163  } // ~Inst_DS__DS_AND_B32
31164 
31165  // tmp = MEM[ADDR];
31166  // MEM[ADDR] &= DATA;
31167  // RETURN_DATA = tmp.
31168  void
31170  {
31172  }
31173 
31175  : Inst_DS(iFmt, "ds_or_b32")
31176  {
31177  } // Inst_DS__DS_OR_B32
31178 
31180  {
31181  } // ~Inst_DS__DS_OR_B32
31182 
31183  // tmp = MEM[ADDR];
31184  // MEM[ADDR] |= DATA;
31185  // RETURN_DATA = tmp.
31186  void
31188  {
31190  }
31191 
31193  : Inst_DS(iFmt, "ds_xor_b32")
31194  {
31195  } // Inst_DS__DS_XOR_B32
31196 
31198  {
31199  } // ~Inst_DS__DS_XOR_B32
31200 
31201  // tmp = MEM[ADDR];
31202  // MEM[ADDR] ^= DATA;
31203  // RETURN_DATA = tmp.
31204  void
31206  {
31208  }
31209 
31211  : Inst_DS(iFmt, "ds_mskor_b32")
31212  {
31213  } // Inst_DS__DS_MSKOR_B32
31214 
31216  {
31217  } // ~Inst_DS__DS_MSKOR_B32
31218 
31219  // tmp = MEM[ADDR];
31220  // MEM[ADDR] = (MEM_ADDR[ADDR] & ~DATA) | DATA2;
31221  // RETURN_DATA = tmp.
31222  void
31224  {
31226  }
31227 
31229  : Inst_DS(iFmt, "ds_write_b32")
31230  {
31231  setFlag(MemoryRef);
31232  setFlag(Store);
31233  } // Inst_DS__DS_WRITE_B32
31234 
31236  {
31237  } // ~Inst_DS__DS_WRITE_B32
31238 
31239  // MEM[ADDR] = DATA.
31240  // Write dword.
31241  void
31243  {
31244  Wavefront *wf = gpuDynInst->wavefront();
31245  gpuDynInst->execUnitId = wf->execUnitId;
31246  gpuDynInst->exec_mask = wf->execMask();
31247  gpuDynInst->latency.init(gpuDynInst->computeUnit());
31248  gpuDynInst->latency.set(
31249  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
31250  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
31251  ConstVecOperandU32 data(gpuDynInst, extData.DATA0);
31252 
31253  addr.read();
31254  data.read();
31255 
31256  calcAddr(gpuDynInst, addr);
31257 
31258  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31259  if (wf->execMask(lane)) {
31260  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane]
31261  = data[lane];
31262  }
31263  }
31264 
31265  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
31266 
31267  wf->wrLmReqsInPipe--;
31268  wf->outstandingReqsWrLm++;
31269  wf->outstandingReqs++;
31271  }
31272 
31273  void
31275  {
31276  Addr offset0 = instData.OFFSET0;
31277  Addr offset1 = instData.OFFSET1;
31278  Addr offset = (offset1 << 8) | offset0;
31279 
31280  initMemWrite<VecElemU32>(gpuDynInst, offset);
31281  } // initiateAcc
31282 
31283  void
31285  {
31286  } // completeAcc
31287 
31289  : Inst_DS(iFmt, "ds_write2_b32")
31290  {
31291  setFlag(MemoryRef);
31292  setFlag(Store);
31293  } // Inst_DS__DS_WRITE2_B32
31294 
31296  {
31297  } // ~Inst_DS__DS_WRITE2_B32
31298 
31299  // MEM[ADDR_BASE + OFFSET0 * 4] = DATA;
31300  // MEM[ADDR_BASE + OFFSET1 * 4] = DATA2.
31301  // Write 2 dwords.
31302  void
31304  {
31305  Wavefront *wf = gpuDynInst->wavefront();
31306  gpuDynInst->execUnitId = wf->execUnitId;
31307  gpuDynInst->exec_mask = wf->execMask();
31308  gpuDynInst->latency.init(gpuDynInst->computeUnit());
31309  gpuDynInst->latency.set(
31310  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
31311  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
31312  ConstVecOperandU32 data0(gpuDynInst, extData.DATA0);
31313  ConstVecOperandU32 data1(gpuDynInst, extData.DATA1);
31314 
31315  addr.read();
31316  data0.read();
31317  data1.read();
31318 
31319  calcAddr(gpuDynInst, addr);
31320 
31321  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31322  if (wf->execMask(lane)) {
31323  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane * 2]
31324  = data0[lane];
31325  (reinterpret_cast<VecElemU32*>(
31326  gpuDynInst->d_data))[lane * 2 + 1] = data1[lane];
31327  }
31328  }
31329 
31330  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
31331 
31332  wf->wrLmReqsInPipe--;
31333  wf->outstandingReqsWrLm++;
31334  wf->outstandingReqs++;
31336  }
31337 
31338  void
31340  {
31341  Addr offset0 = instData.OFFSET0 * 4;
31342  Addr offset1 = instData.OFFSET1 * 4;
31343 
31344  initDualMemWrite<VecElemU32>(gpuDynInst, offset0, offset1);
31345  }
31346 
31347  void
31349  {
31350  }
31351 
31353  : Inst_DS(iFmt, "ds_write2st64_b32")
31354  {
31355  setFlag(MemoryRef);
31356  setFlag(Store);
31357  } // Inst_DS__DS_WRITE2ST64_B32
31358 
31360  {
31361  } // ~Inst_DS__DS_WRITE2ST64_B32
31362 
31363  // MEM[ADDR_BASE + OFFSET0 * 4 * 64] = DATA;
31364  // MEM[ADDR_BASE + OFFSET1 * 4 * 64] = DATA2;
31365  // Write 2 dwords.
31366  void
31368  {
31369  Wavefront *wf = gpuDynInst->wavefront();
31370  gpuDynInst->execUnitId = wf->execUnitId;
31371  gpuDynInst->exec_mask = wf->execMask();
31372  gpuDynInst->latency.init(gpuDynInst->computeUnit());
31373  gpuDynInst->latency.set(
31374  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
31375  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
31376  ConstVecOperandU32 data0(gpuDynInst, extData.DATA0);
31377  ConstVecOperandU32 data1(gpuDynInst, extData.DATA1);
31378 
31379  addr.read();
31380  data0.read();
31381  data1.read();
31382 
31383  calcAddr(gpuDynInst, addr);
31384 
31385  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31386  if (wf->execMask(lane)) {
31387  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane * 2]
31388  = data0[lane];
31389  (reinterpret_cast<VecElemU32*>(
31390  gpuDynInst->d_data))[lane * 2 + 1] = data1[lane];
31391  }
31392  }
31393 
31394  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
31395 
31396  wf->wrLmReqsInPipe--;
31397  wf->outstandingReqsWrLm++;
31398  wf->outstandingReqs++;
31400  } // execute
31401 
31402  void
31404  {
31405  Addr offset0 = instData.OFFSET0 * 4 * 64;
31406  Addr offset1 = instData.OFFSET1 * 4 * 64;
31407 
31408  initDualMemWrite<VecElemU32>(gpuDynInst, offset0, offset1);
31409  }
31410 
31411  void
31413  {
31414  }
31415  // --- Inst_DS__DS_CMPST_B32 class methods ---
31416 
31418  : Inst_DS(iFmt, "ds_cmpst_b32")
31419  {
31420  } // Inst_DS__DS_CMPST_B32
31421 
31423  {
31424  } // ~Inst_DS__DS_CMPST_B32
31425 
31426  // tmp = MEM[ADDR];
31427  // src = DATA2;
31428  // cmp = DATA;
31429  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
31430  // RETURN_DATA[0] = tmp.
31431  // Compare and store.
31432  void
31434  {
31436  }
31437 
31439  : Inst_DS(iFmt, "ds_cmpst_f32")
31440  {
31441  setFlag(F32);
31442  } // Inst_DS__DS_CMPST_F32
31443 
31445  {
31446  } // ~Inst_DS__DS_CMPST_F32
31447 
31448  // tmp = MEM[ADDR];
31449  // src = DATA2;
31450  // cmp = DATA;
31451  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
31452  // RETURN_DATA[0] = tmp.
31453  void
31455  {
31457  }
31458 
31460  : Inst_DS(iFmt, "ds_min_f32")
31461  {
31462  setFlag(F32);
31463  } // Inst_DS__DS_MIN_F32
31464 
31466  {
31467  } // ~Inst_DS__DS_MIN_F32
31468 
31469  // tmp = MEM[ADDR];
31470  // src = DATA;
31471  // cmp = DATA2;
31472  // MEM[ADDR] = (cmp < tmp) ? src : tmp.
31473  void
31475  {
31477  }
31478 
31480  : Inst_DS(iFmt, "ds_max_f32")
31481  {
31482  setFlag(F32);
31483  } // Inst_DS__DS_MAX_F32
31484 
31486  {
31487  } // ~Inst_DS__DS_MAX_F32
31488 
31489  // tmp = MEM[ADDR];
31490  // src = DATA;
31491  // cmp = DATA2;
31492  // MEM[ADDR] = (tmp > cmp) ? src : tmp.
31493  void
31495  {
31497  }
31498 
31500  : Inst_DS(iFmt, "ds_nop")
31501  {
31502  setFlag(Nop);
31503  } // Inst_DS__DS_NOP
31504 
31506  {
31507  } // ~Inst_DS__DS_NOP
31508 
31509  // Do nothing.
31510  void
31512  {
31513  }
31514 
31516  : Inst_DS(iFmt, "ds_add_f32")
31517  {
31518  setFlag(F32);
31519  } // Inst_DS__DS_ADD_F32
31520 
31522  {
31523  } // ~Inst_DS__DS_ADD_F32
31524 
31525  // tmp = MEM[ADDR];
31526  // MEM[ADDR] += DATA;
31527  // RETURN_DATA = tmp.
31528  void
31530  {
31532  }
31533 
31535  : Inst_DS(iFmt, "ds_write_b8")
31536  {
31537  setFlag(MemoryRef);
31538  setFlag(Store);
31539  } // Inst_DS__DS_WRITE_B8
31540 
31542  {
31543  } // ~Inst_DS__DS_WRITE_B8
31544 
31545  // MEM[ADDR] = DATA[7:0].
31546  void
31548  {
31549  Wavefront *wf = gpuDynInst->wavefront();
31550  gpuDynInst->execUnitId = wf->execUnitId;
31551  gpuDynInst->exec_mask = wf->execMask();
31552  gpuDynInst->latency.init(gpuDynInst->computeUnit());
31553  gpuDynInst->latency.set(
31554  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
31555  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
31556  ConstVecOperandU8 data(gpuDynInst, extData.DATA0);
31557 
31558  addr.read();
31559  data.read();
31560 
31561  calcAddr(gpuDynInst, addr);
31562 
31563  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31564  if (wf->execMask(lane)) {
31565  (reinterpret_cast<VecElemU8*>(gpuDynInst->d_data))[lane]
31566  = data[lane];
31567  }
31568  }
31569 
31570  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
31571 
31572  wf->wrLmReqsInPipe--;
31573  wf->outstandingReqsWrLm++;
31574  wf->outstandingReqs++;
31576  } // execute
31577 
31578  void
31580  {
31581  Addr offset0 = instData.OFFSET0;
31582  Addr offset1 = instData.OFFSET1;
31583  Addr offset = (offset1 << 8) | offset0;
31584 
31585  initMemWrite<VecElemU8>(gpuDynInst, offset);
31586  } // initiateAcc
31587 
31588  void
31590  {
31591  } // completeAcc
31592  // --- Inst_DS__DS_WRITE_B16 class methods ---
31593 
31595  : Inst_DS(iFmt, "ds_write_b16")
31596  {
31597  setFlag(MemoryRef);
31598  setFlag(Store);
31599  } // Inst_DS__DS_WRITE_B16
31600 
31602  {
31603  } // ~Inst_DS__DS_WRITE_B16
31604 
31605  // MEM[ADDR] = DATA[15:0]
31606  void
31608  {
31609  Wavefront *wf = gpuDynInst->wavefront();
31610  gpuDynInst->execUnitId = wf->execUnitId;
31611  gpuDynInst->exec_mask = wf->execMask();
31612  gpuDynInst->latency.init(gpuDynInst->computeUnit());
31613  gpuDynInst->latency.set(
31614  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
31615  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
31616  ConstVecOperandU16 data(gpuDynInst, extData.DATA0);
31617 
31618  addr.read();
31619  data.read();
31620 
31621  calcAddr(gpuDynInst, addr);
31622 
31623  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
31624  if (wf->execMask(lane)) {
31625  (reinterpret_cast<VecElemU16*>(gpuDynInst->d_data))[lane]
31626  = data[lane];
31627  }
31628  }
31629 
31630  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
31631 
31632  wf->wrLmReqsInPipe--;
31633  wf->outstandingReqsWrLm++;
31634  wf->outstandingReqs++;
31636  } // execute
31637 
31638  void
31640  {
31641  Addr offset0 = instData.OFFSET0;
31642  Addr offset1 = instData.OFFSET1;
31643  Addr offset = (offset1 << 8) | offset0;
31644 
31645  initMemWrite<VecElemU16>(gpuDynInst, offset);
31646  } // initiateAcc
31647 
31648  void
31650  {
31651  } // completeAcc
31652  // --- Inst_DS__DS_ADD_RTN_U32 class methods ---
31653 
31655  : Inst_DS(iFmt, "ds_add_rtn_u32")
31656  {
31657  } // Inst_DS__DS_ADD_RTN_U32
31658 
31660  {
31661  } // ~Inst_DS__DS_ADD_RTN_U32
31662 
31663  // tmp = MEM[ADDR];
31664  // MEM[ADDR] += DATA;
31665  // RETURN_DATA = tmp.
31666  void
31668  {
31670  }
31671 
31673  : Inst_DS(iFmt, "ds_sub_rtn_u32")
31674  {
31675  } // Inst_DS__DS_SUB_RTN_U32
31676 
31678  {
31679  } // ~Inst_DS__DS_SUB_RTN_U32
31680 
31681  // tmp = MEM[ADDR];
31682  // MEM[ADDR] -= DATA;
31683  // RETURN_DATA = tmp.
31684  void
31686  {
31688  }
31689 
31691  : Inst_DS(iFmt, "ds_rsub_rtn_u32")
31692  {
31693  } // Inst_DS__DS_RSUB_RTN_U32
31694 
31696  {
31697  } // ~Inst_DS__DS_RSUB_RTN_U32
31698 
31699  // tmp = MEM[ADDR];
31700  // MEM[ADDR] = DATA - MEM[ADDR];
31701  // RETURN_DATA = tmp.
31702  void
31704  {
31706  }
31707 
31709  : Inst_DS(iFmt, "ds_inc_rtn_u32")
31710  {
31711  } // Inst_DS__DS_INC_RTN_U32
31712 
31714  {
31715  } // ~Inst_DS__DS_INC_RTN_U32
31716 
31717  // tmp = MEM[ADDR];
31718  // MEM[ADDR] = (tmp >= DATA) ? 0 : tmp + 1 (unsigned compare);
31719  // RETURN_DATA = tmp.
31720  void
31722  {
31724  }
31725 
31727  : Inst_DS(iFmt, "ds_dec_rtn_u32")
31728  {
31729  } // Inst_DS__DS_DEC_RTN_U32
31730 
31732  {
31733  } // ~Inst_DS__DS_DEC_RTN_U32
31734 
31735  // tmp = MEM[ADDR];
31736  // MEM[ADDR] = (tmp == 0 || tmp > DATA) ? DATA : tmp - 1
31737  // (unsigned compare); RETURN_DATA = tmp.
31738  void
31740  {
31742  }
31743 
31745  : Inst_DS(iFmt, "ds_min_rtn_i32")
31746  {
31747  } // Inst_DS__DS_MIN_RTN_I32
31748 
31750  {
31751  } // ~Inst_DS__DS_MIN_RTN_I32
31752 
31753  // tmp = MEM[ADDR];
31754  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (signed compare);
31755  // RETURN_DATA = tmp.
31756  void
31758  {
31760  }
31761 
31763  : Inst_DS(iFmt, "ds_max_rtn_i32")
31764  {
31765  } // Inst_DS__DS_MAX_RTN_I32
31766 
31768  {
31769  } // ~Inst_DS__DS_MAX_RTN_I32
31770 
31771  // tmp = MEM[ADDR];
31772  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (signed compare);
31773  // RETURN_DATA = tmp.
31774  void
31776  {
31778  }
31779 
31781  : Inst_DS(iFmt, "ds_min_rtn_u32")
31782  {
31783  } // Inst_DS__DS_MIN_RTN_U32
31784 
31786  {
31787  } // ~Inst_DS__DS_MIN_RTN_U32
31788 
31789  // tmp = MEM[ADDR];
31790  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (unsigned compare);
31791  // RETURN_DATA = tmp.
31792  void
31794  {
31796  }
31797 
31799  : Inst_DS(iFmt, "ds_max_rtn_u32")
31800  {
31801  } // Inst_DS__DS_MAX_RTN_U32
31802 
31804  {
31805  } // ~Inst_DS__DS_MAX_RTN_U32
31806 
31807  // tmp = MEM[ADDR];
31808  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (unsigned compare);
31809  // RETURN_DATA = tmp.
31810  void
31812  {
31814  }
31815 
31817  : Inst_DS(iFmt, "ds_and_rtn_b32")
31818  {
31819  } // Inst_DS__DS_AND_RTN_B32
31820 
31822  {
31823  } // ~Inst_DS__DS_AND_RTN_B32
31824 
31825  // tmp = MEM[ADDR];
31826  // MEM[ADDR] &= DATA;
31827  // RETURN_DATA = tmp.
31828  void
31830  {
31832  }
31833 
31835  : Inst_DS(iFmt, "ds_or_rtn_b32")
31836  {
31837  } // Inst_DS__DS_OR_RTN_B32
31838 
31840  {
31841  } // ~Inst_DS__DS_OR_RTN_B32
31842 
31843  // tmp = MEM[ADDR];
31844  // MEM[ADDR] |= DATA;
31845  // RETURN_DATA = tmp.
31846  void
31848  {
31850  }
31851 
31853  : Inst_DS(iFmt, "ds_xor_rtn_b32")
31854  {
31855  } // Inst_DS__DS_XOR_RTN_B32
31856 
31858  {
31859  } // ~Inst_DS__DS_XOR_RTN_B32
31860 
31861  // tmp = MEM[ADDR];
31862  // MEM[ADDR] ^= DATA;
31863  // RETURN_DATA = tmp.
31864  void
31866  {
31868  }
31869 
31871  : Inst_DS(iFmt, "ds_mskor_rtn_b32")
31872  {
31873  } // Inst_DS__DS_MSKOR_RTN_B32
31874 
31876  {
31877  } // ~Inst_DS__DS_MSKOR_RTN_B32
31878 
31879  // tmp = MEM[ADDR];
31880  // MEM[ADDR] = (MEM_ADDR[ADDR] & ~DATA) | DATA2;
31881  // RETURN_DATA = tmp.
31882  void
31884  {
31886  }
31887 
31889  : Inst_DS(iFmt, "ds_wrxchg_rtn_b32")
31890  {
31891  } // Inst_DS__DS_WRXCHG_RTN_B32
31892 
31894  {
31895  } // ~Inst_DS__DS_WRXCHG_RTN_B32
31896 
31897  // tmp = MEM[ADDR];
31898  // MEM[ADDR] = DATA;
31899  // RETURN_DATA = tmp.
31900  // Write-exchange operation.
31901  void
31903  {
31905  }
31906 
31908  : Inst_DS(iFmt, "ds_wrxchg2_rtn_b32")
31909  {
31910  } // Inst_DS__DS_WRXCHG2_RTN_B32
31911 
31913  {
31914  } // ~Inst_DS__DS_WRXCHG2_RTN_B32
31915 
31916  // Write-exchange 2 separate dwords.
31917  void
31919  {
31921  }
31922 
31924  InFmt_DS *iFmt)
31925  : Inst_DS(iFmt, "ds_wrxchg2st64_rtn_b32")
31926  {
31927  } // Inst_DS__DS_WRXCHG2ST64_RTN_B32
31928 
31930  {
31931  } // ~Inst_DS__DS_WRXCHG2ST64_RTN_B32
31932 
31933  // Write-exchange 2 separate dwords with a stride of 64 dwords.
31934  void
31936  {
31938  }
31939 
31941  : Inst_DS(iFmt, "ds_cmpst_rtn_b32")
31942  {
31943  } // Inst_DS__DS_CMPST_RTN_B32
31944 
31946  {
31947  } // ~Inst_DS__DS_CMPST_RTN_B32
31948 
31949  // tmp = MEM[ADDR];
31950  // src = DATA2;
31951  // cmp = DATA;
31952  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
31953  // RETURN_DATA[0] = tmp.
31954  // Compare and store.
31955  void
31957  {
31959  }
31960 
31962  : Inst_DS(iFmt, "ds_cmpst_rtn_f32")
31963  {
31964  setFlag(F32);
31965  } // Inst_DS__DS_CMPST_RTN_F32
31966 
31968  {
31969  } // ~Inst_DS__DS_CMPST_RTN_F32
31970 
31971  // tmp = MEM[ADDR];
31972  // src = DATA2;
31973  // cmp = DATA;
31974  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
31975  // RETURN_DATA[0] = tmp.
31976  void
31978  {
31980  }
31981 
31983  : Inst_DS(iFmt, "ds_min_rtn_f32")
31984  {
31985  setFlag(F32);
31986  } // Inst_DS__DS_MIN_RTN_F32
31987 
31989  {
31990  } // ~Inst_DS__DS_MIN_RTN_F32
31991 
31992  // tmp = MEM[ADDR];
31993  // src = DATA;
31994  // cmp = DATA2;
31995  // MEM[ADDR] = (cmp < tmp) ? src : tmp.
31996  void
31998  {
32000  }
32001 
32003  : Inst_DS(iFmt, "ds_max_rtn_f32")
32004  {
32005  setFlag(F32);
32006  } // Inst_DS__DS_MAX_RTN_F32
32007 
32009  {
32010  } // ~Inst_DS__DS_MAX_RTN_F32
32011 
32012  // tmp = MEM[ADDR];
32013  // src = DATA;
32014  // cmp = DATA2;
32015  // MEM[ADDR] = (tmp > cmp) ? src : tmp.
32016  void
32018  {
32020  }
32021 
32023  : Inst_DS(iFmt, "ds_wrap_rtn_b32")
32024  {
32025  } // Inst_DS__DS_WRAP_RTN_B32
32026 
32028  {
32029  } // ~Inst_DS__DS_WRAP_RTN_B32
32030 
32031  // tmp = MEM[ADDR];
32032  // MEM[ADDR] = (tmp >= DATA) ? tmp - DATA : tmp + DATA2;
32033  // RETURN_DATA = tmp.
32034  void
32036  {
32038  }
32039 
32041  : Inst_DS(iFmt, "ds_add_rtn_f32")
32042  {
32043  setFlag(F32);
32044  } // Inst_DS__DS_ADD_RTN_F32
32045 
32047  {
32048  } // ~Inst_DS__DS_ADD_RTN_F32
32049 
32050  // tmp = MEM[ADDR];
32051  // MEM[ADDR] += DATA;
32052  // RETURN_DATA = tmp.
32053  void
32055  {
32056  }
32057 
32059  : Inst_DS(iFmt, "ds_read_b32")
32060  {
32061  setFlag(MemoryRef);
32062  setFlag(Load);
32063  } // Inst_DS__DS_READ_B32
32064 
32066  {
32067  } // ~Inst_DS__DS_READ_B32
32068 
32069  // RETURN_DATA = MEM[ADDR].
32070  // Dword read.
32071  void
32073  {
32074  Wavefront *wf = gpuDynInst->wavefront();
32075  gpuDynInst->execUnitId = wf->execUnitId;
32076  gpuDynInst->exec_mask = wf->execMask();
32077  gpuDynInst->latency.init(gpuDynInst->computeUnit());
32078  gpuDynInst->latency.set(
32079  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
32080  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
32081 
32082  addr.read();
32083 
32084  calcAddr(gpuDynInst, addr);
32085 
32086  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
32087 
32088  wf->rdLmReqsInPipe--;
32089  wf->outstandingReqsRdLm++;
32090  wf->outstandingReqs++;
32092  }
32093 
32094  void
32096  {
32097  Addr offset0 = instData.OFFSET0;
32098  Addr offset1 = instData.OFFSET1;
32099  Addr offset = (offset1 << 8) | offset0;
32100 
32101  initMemRead<VecElemU32>(gpuDynInst, offset);
32102  } // initiateAcc
32103 
32104  void
32106  {
32107  VecOperandU32 vdst(gpuDynInst, extData.VDST);
32108 
32109  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32110  if (gpuDynInst->exec_mask[lane]) {
32111  vdst[lane] = (reinterpret_cast<VecElemU32*>(
32112  gpuDynInst->d_data))[lane];
32113  }
32114  }
32115 
32116  vdst.write();
32117  } // completeAcc
32118 
32120  : Inst_DS(iFmt, "ds_read2_b32")
32121  {
32122  setFlag(MemoryRef);
32123  setFlag(Load);
32124  } // Inst_DS__DS_READ2_B32
32125 
32127  {
32128  } // ~Inst_DS__DS_READ2_B32
32129 
32130  // RETURN_DATA[0] = MEM[ADDR_BASE + OFFSET0 * 4];
32131  // RETURN_DATA[1] = MEM[ADDR_BASE + OFFSET1 * 4].
32132  // Read 2 dwords.
32133  void
32135  {
32136  Wavefront *wf = gpuDynInst->wavefront();
32137  gpuDynInst->execUnitId = wf->execUnitId;
32138  gpuDynInst->exec_mask = wf->execMask();
32139  gpuDynInst->latency.init(gpuDynInst->computeUnit());
32140  gpuDynInst->latency.set(
32141  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
32142  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
32143 
32144  addr.read();
32145 
32146  calcAddr(gpuDynInst, addr);
32147 
32148  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
32149 
32150  wf->rdLmReqsInPipe--;
32151  wf->outstandingReqsRdLm++;
32152  wf->outstandingReqs++;
32154  }
32155 
32156  void
32158  {
32159  Addr offset0 = instData.OFFSET0 * 4;
32160  Addr offset1 = instData.OFFSET1 * 4;
32161 
32162  initDualMemRead<VecElemU32>(gpuDynInst, offset0, offset1);
32163  } // initiateAcc
32164 
32165  void
32167  {
32168  VecOperandU32 vdst0(gpuDynInst, extData.VDST);
32169  VecOperandU32 vdst1(gpuDynInst, extData.VDST + 1);
32170 
32171  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32172  if (gpuDynInst->exec_mask[lane]) {
32173  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
32174  gpuDynInst->d_data))[lane * 2];
32175  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
32176  gpuDynInst->d_data))[lane * 2 + 1];
32177  }
32178  }
32179 
32180  vdst0.write();
32181  vdst1.write();
32182  } // completeAcc
32183 
32185  : Inst_DS(iFmt, "ds_read2st64_b32")
32186  {
32187  setFlag(MemoryRef);
32188  setFlag(Load);
32189  } // Inst_DS__DS_READ2ST64_B32
32190 
32192  {
32193  } // ~Inst_DS__DS_READ2ST64_B32
32194 
32195  // RETURN_DATA[0] = MEM[ADDR_BASE + OFFSET0 * 4 * 64];
32196  // RETURN_DATA[1] = MEM[ADDR_BASE + OFFSET1 * 4 * 64].
32197  // Read 2 dwords.
32198  void
32200  {
32201  Wavefront *wf = gpuDynInst->wavefront();
32202  gpuDynInst->execUnitId = wf->execUnitId;
32203  gpuDynInst->exec_mask = wf->execMask();
32204  gpuDynInst->latency.init(gpuDynInst->computeUnit());
32205  gpuDynInst->latency.set(
32206  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
32207  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
32208 
32209  addr.read();
32210 
32211  calcAddr(gpuDynInst, addr);
32212 
32213  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
32214 
32215  wf->rdLmReqsInPipe--;
32216  wf->outstandingReqsRdLm++;
32217  wf->outstandingReqs++;
32219  } // execute
32220 
32221  void
32223  {
32224  Addr offset0 = (instData.OFFSET0 * 4 * 64);
32225  Addr offset1 = (instData.OFFSET1 * 4 * 64);
32226 
32227  initDualMemRead<VecElemU32>(gpuDynInst, offset0, offset1);
32228  }
32229 
32230  void
32232  {
32233  VecOperandU32 vdst0(gpuDynInst, extData.VDST);
32234  VecOperandU32 vdst1(gpuDynInst, extData.VDST + 1);
32235 
32236  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32237  if (gpuDynInst->exec_mask[lane]) {
32238  vdst0[lane] = (reinterpret_cast<VecElemU64*>(
32239  gpuDynInst->d_data))[lane * 2];
32240  vdst1[lane] = (reinterpret_cast<VecElemU64*>(
32241  gpuDynInst->d_data))[lane * 2 + 1];
32242  }
32243  }
32244 
32245  vdst0.write();
32246  vdst1.write();
32247  }
32248  // --- Inst_DS__DS_READ_I8 class methods ---
32249 
32251  : Inst_DS(iFmt, "ds_read_i8")
32252  {
32253  setFlag(MemoryRef);
32254  setFlag(Load);
32255  } // Inst_DS__DS_READ_I8
32256 
32258  {
32259  } // ~Inst_DS__DS_READ_I8
32260 
32261  // RETURN_DATA = signext(MEM[ADDR][7:0]).
32262  // Signed byte read.
32263  void
32265  {
32267  }
32268 
32270  : Inst_DS(iFmt, "ds_read_u8")
32271  {
32272  setFlag(MemoryRef);
32273  setFlag(Load);
32274  } // Inst_DS__DS_READ_U8
32275 
32277  {
32278  } // ~Inst_DS__DS_READ_U8
32279 
32280  // RETURN_DATA = {24'h0,MEM[ADDR][7:0]}.
32281  // Unsigned byte read.
32282  void
32284  {
32285  Wavefront *wf = gpuDynInst->wavefront();
32286  gpuDynInst->execUnitId = wf->execUnitId;
32287  gpuDynInst->exec_mask = wf->execMask();
32288  gpuDynInst->latency.init(gpuDynInst->computeUnit());
32289  gpuDynInst->latency.set(
32290  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
32291  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
32292 
32293  addr.read();
32294 
32295  calcAddr(gpuDynInst, addr);
32296 
32297  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
32298 
32299  wf->rdLmReqsInPipe--;
32300  wf->outstandingReqsRdLm++;
32301  wf->outstandingReqs++;
32303  } // execute
32304 
32305  void
32307  {
32308  Addr offset0 = instData.OFFSET0;
32309  Addr offset1 = instData.OFFSET1;
32310  Addr offset = (offset1 << 8) | offset0;
32311 
32312  initMemRead<VecElemU8>(gpuDynInst, offset);
32313  } // initiateAcc
32314 
32315  void
32317  {
32318  VecOperandU32 vdst(gpuDynInst, extData.VDST);
32319 
32320  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32321  if (gpuDynInst->exec_mask[lane]) {
32322  vdst[lane] = (VecElemU32)(reinterpret_cast<VecElemU8*>(
32323  gpuDynInst->d_data))[lane];
32324  }
32325  }
32326 
32327  vdst.write();
32328  } // completeAcc
32329  // --- Inst_DS__DS_READ_I16 class methods ---
32330 
32332  : Inst_DS(iFmt, "ds_read_i16")
32333  {
32334  setFlag(MemoryRef);
32335  setFlag(Load);
32336  } // Inst_DS__DS_READ_I16
32337 
32339  {
32340  } // ~Inst_DS__DS_READ_I16
32341 
32342  // RETURN_DATA = signext(MEM[ADDR][15:0]).
32343  // Signed short read.
32344  void
32346  {
32348  }
32349 
32351  : Inst_DS(iFmt, "ds_read_u16")
32352  {
32353  setFlag(MemoryRef);
32354  setFlag(Load);
32355  } // Inst_DS__DS_READ_U16
32356 
32358  {
32359  } // ~Inst_DS__DS_READ_U16
32360 
32361  // RETURN_DATA = {16'h0,MEM[ADDR][15:0]}.
32362  // Unsigned short read.
32363  void
32365  {
32366  Wavefront *wf = gpuDynInst->wavefront();
32367  gpuDynInst->execUnitId = wf->execUnitId;
32368  gpuDynInst->exec_mask = wf->execMask();
32369  gpuDynInst->latency.init(gpuDynInst->computeUnit());
32370  gpuDynInst->latency.set(
32371  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
32372  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
32373 
32374  addr.read();
32375 
32376  calcAddr(gpuDynInst, addr);
32377 
32378  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
32379 
32380  wf->rdLmReqsInPipe--;
32381  wf->outstandingReqsRdLm++;
32382  wf->outstandingReqs++;
32384  } // execute
32385  void
32387  {
32388  Addr offset0 = instData.OFFSET0;
32389  Addr offset1 = instData.OFFSET1;
32390  Addr offset = (offset1 << 8) | offset0;
32391 
32392  initMemRead<VecElemU16>(gpuDynInst, offset);
32393  } // initiateAcc
32394 
32395  void
32397  {
32398  VecOperandU32 vdst(gpuDynInst, extData.VDST);
32399 
32400  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32401  if (gpuDynInst->exec_mask[lane]) {
32402  vdst[lane] = (VecElemU32)(reinterpret_cast<VecElemU16*>(
32403  gpuDynInst->d_data))[lane];
32404  }
32405  }
32406 
32407  vdst.write();
32408  } // completeAcc
32409  // --- Inst_DS__DS_SWIZZLE_B32 class methods ---
32410 
32412  : Inst_DS(iFmt, "ds_swizzle_b32")
32413  {
32414  setFlag(Load);
32415  } // Inst_DS__DS_SWIZZLE_B32
32416 
32418  {
32419  } // ~Inst_DS__DS_SWIZZLE_B32
32420 
32421  // RETURN_DATA = swizzle(vgpr_data, offset1:offset0).
32422  // Dword swizzle, no data is written to LDS memory;
32423  void
32425  {
32426  Wavefront *wf = gpuDynInst->wavefront();
32427  wf->rdLmReqsInPipe--;
32429 
32430  if (gpuDynInst->exec_mask.none()) {
32431  return;
32432  }
32433 
32434  gpuDynInst->execUnitId = wf->execUnitId;
32435  gpuDynInst->latency.init(gpuDynInst->computeUnit());
32436  gpuDynInst->latency.set(gpuDynInst->computeUnit()
32437  ->cyclesToTicks(Cycles(24)));
32438 
32439  ConstVecOperandU32 data(gpuDynInst, extData.DATA0);
32440  VecOperandU32 vdst(gpuDynInst, extData.VDST);
32458  VecElemU16 ds_pattern = ((instData.OFFSET1 << 8) | instData.OFFSET0);
32459 
32460  data.read();
32461 
32462  if (bits(ds_pattern, 15)) {
32463  // QDMode
32464  for (int lane = 0; lane < NumVecElemPerVecReg; lane += 4) {
32470  if (gpuDynInst->exec_mask[lane]) {
32471  int index0 = lane + bits(ds_pattern, 1, 0);
32472  panic_if(index0 >= NumVecElemPerVecReg, "%s: index0 (%d) "
32473  "is out of bounds.\n", gpuDynInst->disassemble(),
32474  index0);
32475  vdst[lane]
32476  = gpuDynInst->exec_mask[index0] ? data[index0]: 0;
32477  }
32478  if (gpuDynInst->exec_mask[lane + 1]) {
32479  int index1 = lane + bits(ds_pattern, 3, 2);
32480  panic_if(index1 >= NumVecElemPerVecReg, "%s: index1 (%d) "
32481  "is out of bounds.\n", gpuDynInst->disassemble(),
32482  index1);
32483  vdst[lane + 1]
32484  = gpuDynInst->exec_mask[index1] ? data[index1]: 0;
32485  }
32486  if (gpuDynInst->exec_mask[lane + 2]) {
32487  int index2 = lane + bits(ds_pattern, 5, 4);
32488  panic_if(index2 >= NumVecElemPerVecReg, "%s: index2 (%d) "
32489  "is out of bounds.\n", gpuDynInst->disassemble(),
32490  index2);
32491  vdst[lane + 2]
32492  = gpuDynInst->exec_mask[index2] ? data[index2]: 0;
32493  }
32494  if (gpuDynInst->exec_mask[lane + 3]) {
32495  int index3 = lane + bits(ds_pattern, 7, 6);
32496  panic_if(index3 >= NumVecElemPerVecReg, "%s: index3 (%d) "
32497  "is out of bounds.\n", gpuDynInst->disassemble(),
32498  index3);
32499  vdst[lane + 3]
32500  = gpuDynInst->exec_mask[index3] ? data[index3]: 0;
32501  }
32502  }
32503  } else {
32504  // Bit Mode
32505  int and_mask = bits(ds_pattern, 4, 0);
32506  int or_mask = bits(ds_pattern, 9, 5);
32507  int xor_mask = bits(ds_pattern, 14, 10);
32508  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32509  if (gpuDynInst->exec_mask[lane]) {
32510  int index = (((lane & and_mask) | or_mask) ^ xor_mask);
32511  // Adjust for the next 32 lanes.
32512  if (lane > 31) {
32513  index += 32;
32514  }
32515  panic_if(index >= NumVecElemPerVecReg, "%s: index (%d) is "
32516  "out of bounds.\n", gpuDynInst->disassemble(),
32517  index);
32518  vdst[lane]
32519  = gpuDynInst->exec_mask[index] ? data[index] : 0;
32520  }
32521  }
32522  }
32523 
32524  vdst.write();
32525  } // execute
32526  // --- Inst_DS__DS_PERMUTE_B32 class methods ---
32527 
32529  : Inst_DS(iFmt, "ds_permute_b32")
32530  {
32531  setFlag(MemoryRef);
32537  setFlag(Load);
32538  } // Inst_DS__DS_PERMUTE_B32
32539 
32541  {
32542  } // ~Inst_DS__DS_PERMUTE_B32
32543 
32544  // Forward permute.
32545  void
32547  {
32548  Wavefront *wf = gpuDynInst->wavefront();
32549  gpuDynInst->execUnitId = wf->execUnitId;
32550  gpuDynInst->exec_mask = wf->execMask();
32551  gpuDynInst->latency.init(gpuDynInst->computeUnit());
32552  gpuDynInst->latency.set(gpuDynInst->computeUnit()
32553  ->cyclesToTicks(Cycles(24)));
32554  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
32555  ConstVecOperandU32 data(gpuDynInst, extData.DATA0);
32556  VecOperandU32 vdst(gpuDynInst, extData.VDST);
32557 
32558  addr.read();
32559  data.read();
32560 
32561  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32562  if (wf->execMask(lane)) {
32569  assert(!instData.OFFSET1);
32576  int index = bits(addr[lane] + instData.OFFSET0, 7, 2);
32577  panic_if(index >= NumVecElemPerVecReg, "%s: index (%d) is out "
32578  "of bounds.\n", gpuDynInst->disassemble(), index);
32584  if (wf->execMask(index)) {
32585  vdst[index] = data[lane];
32586  } else {
32587  vdst[index] = 0;
32588  }
32589  }
32590  }
32591 
32592  vdst.write();
32593 
32594  wf->decLGKMInstsIssued();
32595  wf->rdLmReqsInPipe--;
32597  } // execute
32598  // --- Inst_DS__DS_BPERMUTE_B32 class methods ---
32599 
32601  : Inst_DS(iFmt, "ds_bpermute_b32")
32602  {
32603  setFlag(MemoryRef);
32609  setFlag(Load);
32610  } // Inst_DS__DS_BPERMUTE_B32
32611 
32613  {
32614  } // ~Inst_DS__DS_BPERMUTE_B32
32615 
32616  // Backward permute.
32617  void
32619  {
32620  Wavefront *wf = gpuDynInst->wavefront();
32621  gpuDynInst->execUnitId = wf->execUnitId;
32622  gpuDynInst->exec_mask = wf->execMask();
32623  gpuDynInst->latency.init(gpuDynInst->computeUnit());
32624  gpuDynInst->latency.set(gpuDynInst->computeUnit()
32625  ->cyclesToTicks(Cycles(24)));
32626  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
32627  ConstVecOperandU32 data(gpuDynInst, extData.DATA0);
32628  VecOperandU32 vdst(gpuDynInst, extData.VDST);
32629 
32630  addr.read();
32631  data.read();
32632 
32633  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32634  if (wf->execMask(lane)) {
32641  assert(!instData.OFFSET1);
32648  int index = bits(addr[lane] + instData.OFFSET0, 7, 2);
32649  panic_if(index >= NumVecElemPerVecReg, "%s: index (%d) is out "
32650  "of bounds.\n", gpuDynInst->disassemble(), index);
32656  if (wf->execMask(index)) {
32657  vdst[lane] = data[index];
32658  } else {
32659  vdst[lane] = 0;
32660  }
32661  }
32662  }
32663 
32664  vdst.write();
32665 
32666  wf->decLGKMInstsIssued();
32667  wf->rdLmReqsInPipe--;
32669  } // execute
32670 
32671  // --- Inst_DS__DS_ADD_U64 class methods ---
32672 
32674  : Inst_DS(iFmt, "ds_add_u64")
32675  {
32676  } // Inst_DS__DS_ADD_U64
32677 
32679  {
32680  } // ~Inst_DS__DS_ADD_U64
32681 
32682  // tmp = MEM[ADDR];
32683  // MEM[ADDR] += DATA[0:1];
32684  // RETURN_DATA[0:1] = tmp.
32685  void
32687  {
32689  }
32690 
32692  : Inst_DS(iFmt, "ds_sub_u64")
32693  {
32694  } // Inst_DS__DS_SUB_U64
32695 
32697  {
32698  } // ~Inst_DS__DS_SUB_U64
32699 
32700  // tmp = MEM[ADDR];
32701  // MEM[ADDR] -= DATA[0:1];
32702  // RETURN_DATA[0:1] = tmp.
32703  void
32705  {
32707  }
32708 
32710  : Inst_DS(iFmt, "ds_rsub_u64")
32711  {
32712  } // Inst_DS__DS_RSUB_U64
32713 
32715  {
32716  } // ~Inst_DS__DS_RSUB_U64
32717 
32718  // tmp = MEM[ADDR];
32719  // MEM[ADDR] = DATA - MEM[ADDR];
32720  // RETURN_DATA = tmp.
32721  // Subtraction with reversed operands.
32722  void
32724  {
32726  }
32727 
32729  : Inst_DS(iFmt, "ds_inc_u64")
32730  {
32731  } // Inst_DS__DS_INC_U64
32732 
32734  {
32735  } // ~Inst_DS__DS_INC_U64
32736 
32737  // tmp = MEM[ADDR];
32738  // MEM[ADDR] = (tmp >= DATA[0:1]) ? 0 : tmp + 1 (unsigned compare);
32739  // RETURN_DATA[0:1] = tmp.
32740  void
32742  {
32744  }
32745 
32747  : Inst_DS(iFmt, "ds_dec_u64")
32748  {
32749  } // Inst_DS__DS_DEC_U64
32750 
32752  {
32753  } // ~Inst_DS__DS_DEC_U64
32754 
32755  // tmp = MEM[ADDR];
32756  // MEM[ADDR] = (tmp == 0 || tmp > DATA[0:1]) ? DATA[0:1] : tmp - 1
32757  // (unsigned compare);
32758  // RETURN_DATA[0:1] = tmp.
32759  void
32761  {
32763  }
32764 
32766  : Inst_DS(iFmt, "ds_min_i64")
32767  {
32768  } // Inst_DS__DS_MIN_I64
32769 
32771  {
32772  } // ~Inst_DS__DS_MIN_I64
32773 
32774  // tmp = MEM[ADDR];
32775  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (signed compare);
32776  // RETURN_DATA[0:1] = tmp.
32777  void
32779  {
32781  }
32782 
32784  : Inst_DS(iFmt, "ds_max_i64")
32785  {
32786  } // Inst_DS__DS_MAX_I64
32787 
32789  {
32790  } // ~Inst_DS__DS_MAX_I64
32791 
32792  // tmp = MEM[ADDR];
32793  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (signed compare);
32794  // RETURN_DATA[0:1] = tmp.
32795  void
32797  {
32799  }
32800 
32802  : Inst_DS(iFmt, "ds_min_u64")
32803  {
32804  } // Inst_DS__DS_MIN_U64
32805 
32807  {
32808  } // ~Inst_DS__DS_MIN_U64
32809 
32810  // tmp = MEM[ADDR];
32811  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (unsigned compare);
32812  // RETURN_DATA[0:1] = tmp.
32813  void
32815  {
32817  }
32818 
32820  : Inst_DS(iFmt, "ds_max_u64")
32821  {
32822  } // Inst_DS__DS_MAX_U64
32823 
32825  {
32826  } // ~Inst_DS__DS_MAX_U64
32827 
32828  // tmp = MEM[ADDR];
32829  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (unsigned compare);
32830  // RETURN_DATA[0:1] = tmp.
32831  void
32833  {
32835  }
32836 
32838  : Inst_DS(iFmt, "ds_and_b64")
32839  {
32840  } // Inst_DS__DS_AND_B64
32841 
32843  {
32844  } // ~Inst_DS__DS_AND_B64
32845 
32846  // tmp = MEM[ADDR];
32847  // MEM[ADDR] &= DATA[0:1];
32848  // RETURN_DATA[0:1] = tmp.
32849  void
32851  {
32853  }
32854 
32856  : Inst_DS(iFmt, "ds_or_b64")
32857  {
32858  } // Inst_DS__DS_OR_B64
32859 
32861  {
32862  } // ~Inst_DS__DS_OR_B64
32863 
32864  // tmp = MEM[ADDR];
32865  // MEM[ADDR] |= DATA[0:1];
32866  // RETURN_DATA[0:1] = tmp.
32867  void
32869  {
32871  }
32872 
32874  : Inst_DS(iFmt, "ds_xor_b64")
32875  {
32876  } // Inst_DS__DS_XOR_B64
32877 
32879  {
32880  } // ~Inst_DS__DS_XOR_B64
32881 
32882  // tmp = MEM[ADDR];
32883  // MEM[ADDR] ^= DATA[0:1];
32884  // RETURN_DATA[0:1] = tmp.
32885  void
32887  {
32889  }
32890 
32892  : Inst_DS(iFmt, "ds_mskor_b64")
32893  {
32894  } // Inst_DS__DS_MSKOR_B64
32895 
32897  {
32898  } // ~Inst_DS__DS_MSKOR_B64
32899 
32900  // tmp = MEM[ADDR];
32901  // MEM[ADDR] = (MEM_ADDR[ADDR] & ~DATA) | DATA2;
32902  // RETURN_DATA = tmp.
32903  void
32905  {
32907  }
32908 
32910  : Inst_DS(iFmt, "ds_write_b64")
32911  {
32912  setFlag(MemoryRef);
32913  setFlag(Store);
32914  } // Inst_DS__DS_WRITE_B64
32915 
32917  {
32918  } // ~Inst_DS__DS_WRITE_B64
32919 
32920  // MEM[ADDR] = DATA.
32921  // Write qword.
32922  void
32924  {
32925  Wavefront *wf = gpuDynInst->wavefront();
32926  gpuDynInst->execUnitId = wf->execUnitId;
32927  gpuDynInst->exec_mask = wf->execMask();
32928  gpuDynInst->latency.init(gpuDynInst->computeUnit());
32929  gpuDynInst->latency.set(
32930  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
32931  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
32932  ConstVecOperandU64 data(gpuDynInst, extData.DATA0);
32933 
32934  addr.read();
32935  data.read();
32936 
32937  calcAddr(gpuDynInst, addr);
32938 
32939  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
32940  if (wf->execMask(lane)) {
32941  (reinterpret_cast<VecElemU64*>(gpuDynInst->d_data))[lane]
32942  = data[lane];
32943  }
32944  }
32945 
32946  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
32947 
32948  wf->wrLmReqsInPipe--;
32949  wf->outstandingReqsWrLm++;
32950  wf->outstandingReqs++;
32952  }
32953 
32954  void
32956  {
32957  Addr offset0 = instData.OFFSET0;
32958  Addr offset1 = instData.OFFSET1;
32959  Addr offset = (offset1 << 8) | offset0;
32960 
32961  initMemWrite<VecElemU64>(gpuDynInst, offset);
32962  } // initiateAcc
32963 
32964  void
32966  {
32967  } // completeAcc
32968 
32970  : Inst_DS(iFmt, "ds_write2_b64")
32971  {
32972  setFlag(MemoryRef);
32973  setFlag(Store);
32974  } // Inst_DS__DS_WRITE2_B64
32975 
32977  {
32978  } // ~Inst_DS__DS_WRITE2_B64
32979 
32980  // MEM[ADDR_BASE + OFFSET0 * 8] = DATA;
32981  // MEM[ADDR_BASE + OFFSET1 * 8] = DATA2.
32982  // Write 2 qwords.
32983  void
32985  {
32986  Wavefront *wf = gpuDynInst->wavefront();
32987  gpuDynInst->execUnitId = wf->execUnitId;
32988  gpuDynInst->exec_mask = wf->execMask();
32989  gpuDynInst->latency.init(gpuDynInst->computeUnit());
32990  gpuDynInst->latency.set(
32991  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
32992  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
32993  ConstVecOperandU64 data0(gpuDynInst, extData.DATA0);
32994  ConstVecOperandU64 data1(gpuDynInst, extData.DATA1);
32995 
32996  addr.read();
32997  data0.read();
32998  data1.read();
32999 
33000  calcAddr(gpuDynInst, addr);
33001 
33002  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33003  if (wf->execMask(lane)) {
33004  (reinterpret_cast<VecElemU64*>(
33005  gpuDynInst->d_data))[lane * 2] = data0[lane];
33006  (reinterpret_cast<VecElemU64*>(
33007  gpuDynInst->d_data))[lane * 2 + 1] = data1[lane];
33008  }
33009  }
33010 
33011  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
33012 
33013  wf->wrLmReqsInPipe--;
33014  wf->outstandingReqsWrLm++;
33015  wf->outstandingReqs++;
33017  }
33018 
33019  void
33021  {
33022  Addr offset0 = instData.OFFSET0 * 8;
33023  Addr offset1 = instData.OFFSET1 * 8;
33024 
33025  initDualMemWrite<VecElemU64>(gpuDynInst, offset0, offset1);
33026  }
33027 
33028  void
33030  {
33031  }
33032 
33034  : Inst_DS(iFmt, "ds_write2st64_b64")
33035  {
33036  setFlag(MemoryRef);
33037  setFlag(Store);
33038  } // Inst_DS__DS_WRITE2ST64_B64
33039 
33041  {
33042  } // ~Inst_DS__DS_WRITE2ST64_B64
33043 
33044  // MEM[ADDR_BASE + OFFSET0 * 8 * 64] = DATA;
33045  // MEM[ADDR_BASE + OFFSET1 * 8 * 64] = DATA2;
33046  // Write 2 qwords.
33047  void
33049  {
33051  }
33052 
33054  : Inst_DS(iFmt, "ds_cmpst_b64")
33055  {
33056  } // Inst_DS__DS_CMPST_B64
33057 
33059  {
33060  } // ~Inst_DS__DS_CMPST_B64
33061 
33062  // tmp = MEM[ADDR];
33063  // src = DATA2;
33064  // cmp = DATA;
33065  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
33066  // RETURN_DATA[0] = tmp.
33067  // Compare and store.
33068  void
33070  {
33072  }
33073 
33075  : Inst_DS(iFmt, "ds_cmpst_f64")
33076  {
33077  setFlag(F64);
33078  } // Inst_DS__DS_CMPST_F64
33079 
33081  {
33082  } // ~Inst_DS__DS_CMPST_F64
33083 
33084  // tmp = MEM[ADDR];
33085  // src = DATA2;
33086  // cmp = DATA;
33087  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
33088  // RETURN_DATA[0] = tmp.
33089  void
33091  {
33093  }
33094 
33096  : Inst_DS(iFmt, "ds_min_f64")
33097  {
33098  setFlag(F64);
33099  } // Inst_DS__DS_MIN_F64
33100 
33102  {
33103  } // ~Inst_DS__DS_MIN_F64
33104 
33105  // tmp = MEM[ADDR];
33106  // src = DATA;
33107  // cmp = DATA2;
33108  // MEM[ADDR] = (cmp < tmp) ? src : tmp.
33109  void
33111  {
33113  }
33114 
33116  : Inst_DS(iFmt, "ds_max_f64")
33117  {
33118  setFlag(F64);
33119  } // Inst_DS__DS_MAX_F64
33120 
33122  {
33123  } // ~Inst_DS__DS_MAX_F64
33124 
33125  // tmp = MEM[ADDR];
33126  // src = DATA;
33127  // cmp = DATA2;
33128  // MEM[ADDR] = (tmp > cmp) ? src : tmp.
33129  void
33131  {
33133  }
33134 
33136  : Inst_DS(iFmt, "ds_add_rtn_u64")
33137  {
33138  } // Inst_DS__DS_ADD_RTN_U64
33139 
33141  {
33142  } // ~Inst_DS__DS_ADD_RTN_U64
33143 
33144  // tmp = MEM[ADDR];
33145  // MEM[ADDR] += DATA[0:1];
33146  // RETURN_DATA[0:1] = tmp.
33147  void
33149  {
33151  }
33152 
33154  : Inst_DS(iFmt, "ds_sub_rtn_u64")
33155  {
33156  } // Inst_DS__DS_SUB_RTN_U64
33157 
33159  {
33160  } // ~Inst_DS__DS_SUB_RTN_U64
33161 
33162  // tmp = MEM[ADDR];
33163  // MEM[ADDR] -= DATA[0:1];
33164  // RETURN_DATA[0:1] = tmp.
33165  void
33167  {
33169  }
33170 
33172  : Inst_DS(iFmt, "ds_rsub_rtn_u64")
33173  {
33174  } // Inst_DS__DS_RSUB_RTN_U64
33175 
33177  {
33178  } // ~Inst_DS__DS_RSUB_RTN_U64
33179 
33180  // tmp = MEM[ADDR];
33181  // MEM[ADDR] = DATA - MEM[ADDR];
33182  // RETURN_DATA = tmp.
33183  // Subtraction with reversed operands.
33184  void
33186  {
33188  }
33189 
33191  : Inst_DS(iFmt, "ds_inc_rtn_u64")
33192  {
33193  } // Inst_DS__DS_INC_RTN_U64
33194 
33196  {
33197  } // ~Inst_DS__DS_INC_RTN_U64
33198 
33199  // tmp = MEM[ADDR];
33200  // MEM[ADDR] = (tmp >= DATA[0:1]) ? 0 : tmp + 1 (unsigned compare);
33201  // RETURN_DATA[0:1] = tmp.
33202  void
33204  {
33206  }
33207 
33209  : Inst_DS(iFmt, "ds_dec_rtn_u64")
33210  {
33211  } // Inst_DS__DS_DEC_RTN_U64
33212 
33214  {
33215  } // ~Inst_DS__DS_DEC_RTN_U64
33216 
33217  // tmp = MEM[ADDR];
33218  // MEM[ADDR] = (tmp == 0 || tmp > DATA[0:1]) ? DATA[0:1] : tmp - 1
33219  // (unsigned compare);
33220  // RETURN_DATA[0:1] = tmp.
33221  void
33223  {
33225  }
33226 
33228  : Inst_DS(iFmt, "ds_min_rtn_i64")
33229  {
33230  } // Inst_DS__DS_MIN_RTN_I64
33231 
33233  {
33234  } // ~Inst_DS__DS_MIN_RTN_I64
33235 
33236  // tmp = MEM[ADDR];
33237  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (signed compare);
33238  // RETURN_DATA[0:1] = tmp.
33239  void
33241  {
33243  }
33244 
33246  : Inst_DS(iFmt, "ds_max_rtn_i64")
33247  {
33248  } // Inst_DS__DS_MAX_RTN_I64
33249 
33251  {
33252  } // ~Inst_DS__DS_MAX_RTN_I64
33253 
33254  // tmp = MEM[ADDR];
33255  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (signed compare);
33256  // RETURN_DATA[0:1] = tmp.
33257  void
33259  {
33261  }
33262 
33264  : Inst_DS(iFmt, "ds_min_rtn_u64")
33265  {
33266  } // Inst_DS__DS_MIN_RTN_U64
33267 
33269  {
33270  } // ~Inst_DS__DS_MIN_RTN_U64
33271 
33272  // tmp = MEM[ADDR];
33273  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (unsigned compare);
33274  // RETURN_DATA[0:1] = tmp.
33275  void
33277  {
33279  }
33280 
33282  : Inst_DS(iFmt, "ds_max_rtn_u64")
33283  {
33284  } // Inst_DS__DS_MAX_RTN_U64
33285 
33287  {
33288  } // ~Inst_DS__DS_MAX_RTN_U64
33289 
33290  // tmp = MEM[ADDR];
33291  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (unsigned compare);
33292  // RETURN_DATA[0:1] = tmp.
33293  void
33295  {
33297  }
33298 
33300  : Inst_DS(iFmt, "ds_and_rtn_b64")
33301  {
33302  } // Inst_DS__DS_AND_RTN_B64
33303 
33305  {
33306  } // ~Inst_DS__DS_AND_RTN_B64
33307 
33308  // tmp = MEM[ADDR];
33309  // MEM[ADDR] &= DATA[0:1];
33310  // RETURN_DATA[0:1] = tmp.
33311  void
33313  {
33315  }
33316 
33318  : Inst_DS(iFmt, "ds_or_rtn_b64")
33319  {
33320  } // Inst_DS__DS_OR_RTN_B64
33321 
33323  {
33324  } // ~Inst_DS__DS_OR_RTN_B64
33325 
33326  // tmp = MEM[ADDR];
33327  // MEM[ADDR] |= DATA[0:1];
33328  // RETURN_DATA[0:1] = tmp.
33329  void
33331  {
33333  }
33334 
33336  : Inst_DS(iFmt, "ds_xor_rtn_b64")
33337  {
33338  } // Inst_DS__DS_XOR_RTN_B64
33339 
33341  {
33342  } // ~Inst_DS__DS_XOR_RTN_B64
33343 
33344  // tmp = MEM[ADDR];
33345  // MEM[ADDR] ^= DATA[0:1];
33346  // RETURN_DATA[0:1] = tmp.
33347  void
33349  {
33351  }
33352 
33354  : Inst_DS(iFmt, "ds_mskor_rtn_b64")
33355  {
33356  } // Inst_DS__DS_MSKOR_RTN_B64
33357 
33359  {
33360  } // ~Inst_DS__DS_MSKOR_RTN_B64
33361 
33362  // tmp = MEM[ADDR];
33363  // MEM[ADDR] = (MEM_ADDR[ADDR] & ~DATA) | DATA2;
33364  // RETURN_DATA = tmp.
33365  // Masked dword OR, D0 contains the mask and D1 contains the new value.
33366  void
33368  {
33370  }
33371 
33373  : Inst_DS(iFmt, "ds_wrxchg_rtn_b64")
33374  {
33375  } // Inst_DS__DS_WRXCHG_RTN_B64
33376 
33378  {
33379  } // ~Inst_DS__DS_WRXCHG_RTN_B64
33380 
33381  // tmp = MEM[ADDR];
33382  // MEM[ADDR] = DATA;
33383  // RETURN_DATA = tmp.
33384  // Write-exchange operation.
33385  void
33387  {
33389  }
33390 
33392  : Inst_DS(iFmt, "ds_wrxchg2_rtn_b64")
33393  {
33394  } // Inst_DS__DS_WRXCHG2_RTN_B64
33395 
33397  {
33398  } // ~Inst_DS__DS_WRXCHG2_RTN_B64
33399 
33400  // Write-exchange 2 separate qwords.
33401  void
33403  {
33405  }
33406 
33408  InFmt_DS *iFmt)
33409  : Inst_DS(iFmt, "ds_wrxchg2st64_rtn_b64")
33410  {
33411  } // Inst_DS__DS_WRXCHG2ST64_RTN_B64
33412 
33414  {
33415  } // ~Inst_DS__DS_WRXCHG2ST64_RTN_B64
33416 
33417  // Write-exchange 2 qwords with a stride of 64 qwords.
33418  void
33420  {
33422  }
33423 
33425  : Inst_DS(iFmt, "ds_cmpst_rtn_b64")
33426  {
33427  } // Inst_DS__DS_CMPST_RTN_B64
33428 
33430  {
33431  } // ~Inst_DS__DS_CMPST_RTN_B64
33432 
33433  // tmp = MEM[ADDR];
33434  // src = DATA2;
33435  // cmp = DATA;
33436  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
33437  // RETURN_DATA[0] = tmp.
33438  // Compare and store.
33439  void
33441  {
33443  }
33444 
33446  : Inst_DS(iFmt, "ds_cmpst_rtn_f64")
33447  {
33448  setFlag(F64);
33449  } // Inst_DS__DS_CMPST_RTN_F64
33450 
33452  {
33453  } // ~Inst_DS__DS_CMPST_RTN_F64
33454 
33455  // tmp = MEM[ADDR];
33456  // src = DATA2;
33457  // cmp = DATA;
33458  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
33459  // RETURN_DATA[0] = tmp.
33460  void
33462  {
33464  }
33465 
33467  : Inst_DS(iFmt, "ds_min_rtn_f64")
33468  {
33469  setFlag(F64);
33470  } // Inst_DS__DS_MIN_RTN_F64
33471 
33473  {
33474  } // ~Inst_DS__DS_MIN_RTN_F64
33475 
33476  // tmp = MEM[ADDR];
33477  // src = DATA;
33478  // cmp = DATA2;
33479  // MEM[ADDR] = (cmp < tmp) ? src : tmp.
33480  void
33482  {
33484  }
33485 
33487  : Inst_DS(iFmt, "ds_max_rtn_f64")
33488  {
33489  setFlag(F64);
33490  } // Inst_DS__DS_MAX_RTN_F64
33491 
33493  {
33494  } // ~Inst_DS__DS_MAX_RTN_F64
33495 
33496  // tmp = MEM[ADDR];
33497  // src = DATA;
33498  // cmp = DATA2;
33499  // MEM[ADDR] = (tmp > cmp) ? src : tmp.
33500  void
33502  {
33504  }
33505 
33507  : Inst_DS(iFmt, "ds_read_b64")
33508  {
33509  setFlag(MemoryRef);
33510  setFlag(Load);
33511  } // Inst_DS__DS_READ_B64
33512 
33514  {
33515  } // ~Inst_DS__DS_READ_B64
33516 
33517  // RETURN_DATA = MEM[ADDR].
33518  // Read 1 qword.
33519  void
33521  {
33522  Wavefront *wf = gpuDynInst->wavefront();
33523  gpuDynInst->execUnitId = wf->execUnitId;
33524  gpuDynInst->exec_mask = wf->execMask();
33525  gpuDynInst->latency.init(gpuDynInst->computeUnit());
33526  gpuDynInst->latency.set(
33527  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
33528  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
33529 
33530  addr.read();
33531 
33532  calcAddr(gpuDynInst, addr);
33533 
33534  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
33535 
33536  wf->rdLmReqsInPipe--;
33537  wf->outstandingReqsRdLm++;
33538  wf->outstandingReqs++;
33540  }
33541 
33542  void
33544  {
33545  Addr offset0 = instData.OFFSET0;
33546  Addr offset1 = instData.OFFSET1;
33547  Addr offset = (offset1 << 8) | offset0;
33548 
33549  initMemRead<VecElemU64>(gpuDynInst, offset);
33550  } // initiateAcc
33551 
33552  void
33554  {
33555  VecOperandU64 vdst(gpuDynInst, extData.VDST);
33556 
33557  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33558  if (gpuDynInst->exec_mask[lane]) {
33559  vdst[lane] = (reinterpret_cast<VecElemU64*>(
33560  gpuDynInst->d_data))[lane];
33561  }
33562  }
33563 
33564  vdst.write();
33565  } // completeAcc
33566 
33568  : Inst_DS(iFmt, "ds_read2_b64")
33569  {
33570  setFlag(MemoryRef);
33571  setFlag(Load);
33572  } // Inst_DS__DS_READ2_B64
33573 
33575  {
33576  } // ~Inst_DS__DS_READ2_B64
33577 
33578  // RETURN_DATA[0] = MEM[ADDR_BASE + OFFSET0 * 8];
33579  // RETURN_DATA[1] = MEM[ADDR_BASE + OFFSET1 * 8].
33580  // Read 2 qwords.
33581  void
33583  {
33584  Wavefront *wf = gpuDynInst->wavefront();
33585  gpuDynInst->execUnitId = wf->execUnitId;
33586  gpuDynInst->exec_mask = wf->execMask();
33587  gpuDynInst->latency.init(gpuDynInst->computeUnit());
33588  gpuDynInst->latency.set(
33589  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
33590  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
33591 
33592  addr.read();
33593 
33594  calcAddr(gpuDynInst, addr);
33595 
33596  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
33597 
33598  wf->rdLmReqsInPipe--;
33599  wf->outstandingReqsRdLm++;
33600  wf->outstandingReqs++;
33602  }
33603 
33604  void
33606  {
33607  Addr offset0 = instData.OFFSET0 * 8;
33608  Addr offset1 = instData.OFFSET1 * 8;
33609 
33610  initDualMemRead<VecElemU64>(gpuDynInst, offset0, offset1);
33611  } // initiateAcc
33612 
33613  void
33615  {
33616  VecOperandU64 vdst0(gpuDynInst, extData.VDST);
33617  VecOperandU64 vdst1(gpuDynInst, extData.VDST + 2);
33618 
33619  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33620  if (gpuDynInst->exec_mask[lane]) {
33621  vdst0[lane] = (reinterpret_cast<VecElemU64*>(
33622  gpuDynInst->d_data))[lane * 2];
33623  vdst1[lane] = (reinterpret_cast<VecElemU64*>(
33624  gpuDynInst->d_data))[lane * 2 + 1];
33625  }
33626  }
33627 
33628  vdst0.write();
33629  vdst1.write();
33630  } // completeAcc
33631 
33633  : Inst_DS(iFmt, "ds_read2st64_b64")
33634  {
33635  setFlag(MemoryRef);
33636  setFlag(Load);
33637  } // Inst_DS__DS_READ2ST64_B64
33638 
33640  {
33641  } // ~Inst_DS__DS_READ2ST64_B64
33642 
33643  // RETURN_DATA[0] = MEM[ADDR_BASE + OFFSET0 * 8 * 64];
33644  // RETURN_DATA[1] = MEM[ADDR_BASE + OFFSET1 * 8 * 64].
33645  // Read 2 qwords.
33646  void
33648  {
33649  Wavefront *wf = gpuDynInst->wavefront();
33650  gpuDynInst->execUnitId = wf->execUnitId;
33651  gpuDynInst->exec_mask = wf->execMask();
33652  gpuDynInst->latency.init(gpuDynInst->computeUnit());
33653  gpuDynInst->latency.set(
33654  gpuDynInst->computeUnit()->cyclesToTicks(Cycles(24)));
33655  ConstVecOperandU32 addr(gpuDynInst, extData.ADDR);
33656 
33657  addr.read();
33658 
33659  calcAddr(gpuDynInst, addr);
33660 
33661  gpuDynInst->computeUnit()->localMemoryPipe.issueRequest(gpuDynInst);
33662 
33663  wf->rdLmReqsInPipe--;
33664  wf->outstandingReqsRdLm++;
33665  wf->outstandingReqs++;
33667  }
33668 
33669  void
33671  {
33672  Addr offset0 = (instData.OFFSET0 * 8 * 64);
33673  Addr offset1 = (instData.OFFSET1 * 8 * 64);
33674 
33675  initDualMemRead<VecElemU64>(gpuDynInst, offset0, offset1);
33676  }
33677 
33678  void
33680  {
33681  VecOperandU64 vdst0(gpuDynInst, extData.VDST);
33682  VecOperandU64 vdst1(gpuDynInst, extData.VDST + 2);
33683 
33684  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
33685  if (gpuDynInst->exec_mask[lane]) {
33686  vdst0[lane] = (reinterpret_cast<VecElemU64*>(
33687  gpuDynInst->d_data))[lane * 2];
33688  vdst1[lane] = (reinterpret_cast<VecElemU64*>(
33689  gpuDynInst->d_data))[lane * 2 + 1];
33690  }
33691  }
33692 
33693  vdst0.write();
33694  vdst1.write();
33695  }
33696 
33698  InFmt_DS *iFmt)
33699  : Inst_DS(iFmt, "ds_condxchg32_rtn_b64")
33700  {
33701  } // Inst_DS__DS_CONDXCHG32_RTN_B64
33702 
33704  {
33705  } // ~Inst_DS__DS_CONDXCHG32_RTN_B64
33706 
33707  // Conditional write exchange.
33708  void
33710  {
33712  }
33713 
33715  : Inst_DS(iFmt, "ds_add_src2_u32")
33716  {
33717  } // Inst_DS__DS_ADD_SRC2_U32
33718 
33720  {
33721  } // ~Inst_DS__DS_ADD_SRC2_U32
33722 
33723  // A = ADDR_BASE;
33724  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33725  // {offset1[6],offset1[6:0],offset0});
33726  // MEM[A] = MEM[A] + MEM[B].
33727  void
33729  {
33731  }
33732 
33734  : Inst_DS(iFmt, "ds_sub_src2_u32")
33735  {
33736  } // Inst_DS__DS_SUB_SRC2_U32
33737 
33739  {
33740  } // ~Inst_DS__DS_SUB_SRC2_U32
33741 
33742  // A = ADDR_BASE;
33743  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33744  // {offset1[6],offset1[6:0],offset0});
33745  // MEM[A] = MEM[A] - MEM[B].
33746  void
33748  {
33750  }
33751 
33753  : Inst_DS(iFmt, "ds_rsub_src2_u32")
33754  {
33755  } // Inst_DS__DS_RSUB_SRC2_U32
33756 
33758  {
33759  } // ~Inst_DS__DS_RSUB_SRC2_U32
33760 
33761  // A = ADDR_BASE;
33762  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33763  // {offset1[6],offset1[6:0],offset0});
33764  // MEM[A] = MEM[B] - MEM[A].
33765  void
33767  {
33769  }
33770 
33772  : Inst_DS(iFmt, "ds_inc_src2_u32")
33773  {
33774  } // Inst_DS__DS_INC_SRC2_U32
33775 
33777  {
33778  } // ~Inst_DS__DS_INC_SRC2_U32
33779 
33780  // A = ADDR_BASE;
33781  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33782  // {offset1[6],offset1[6:0],offset0});
33783  // MEM[A] = (MEM[A] >= MEM[B] ? 0 : MEM[A] + 1).
33784  void
33786  {
33788  }
33789 
33791  : Inst_DS(iFmt, "ds_dec_src2_u32")
33792  {
33793  } // Inst_DS__DS_DEC_SRC2_U32
33794 
33796  {
33797  } // ~Inst_DS__DS_DEC_SRC2_U32
33798 
33799  // A = ADDR_BASE;
33800  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33801  // {offset1[6],offset1[6:0],offset0});
33802  // MEM[A] = (MEM[A] == 0 || MEM[A] > MEM[B] ? MEM[B] : MEM[A] - 1).
33803  // Uint decrement.
33804  void
33806  {
33808  }
33809 
33811  : Inst_DS(iFmt, "ds_min_src2_i32")
33812  {
33813  } // Inst_DS__DS_MIN_SRC2_I32
33814 
33816  {
33817  } // ~Inst_DS__DS_MIN_SRC2_I32
33818 
33819  // A = ADDR_BASE;
33820  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33821  // {offset1[6],offset1[6:0],offset0});
33822  // MEM[A] = min(MEM[A], MEM[B]).
33823  void
33825  {
33827  }
33828 
33830  : Inst_DS(iFmt, "ds_max_src2_i32")
33831  {
33832  } // Inst_DS__DS_MAX_SRC2_I32
33833 
33835  {
33836  } // ~Inst_DS__DS_MAX_SRC2_I32
33837 
33838  // A = ADDR_BASE;
33839  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33840  // {offset1[6],offset1[6:0],offset0});
33841  // MEM[A] = max(MEM[A], MEM[B]).
33842  void
33844  {
33846  }
33847 
33849  : Inst_DS(iFmt, "ds_min_src2_u32")
33850  {
33851  } // Inst_DS__DS_MIN_SRC2_U32
33852 
33854  {
33855  } // ~Inst_DS__DS_MIN_SRC2_U32
33856 
33857  // A = ADDR_BASE;
33858  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33859  // {offset1[6],offset1[6:0],offset0});
33860  // MEM[A] = min(MEM[A], MEM[B]).
33861  void
33863  {
33865  }
33866 
33868  : Inst_DS(iFmt, "ds_max_src2_u32")
33869  {
33870  } // Inst_DS__DS_MAX_SRC2_U32
33871 
33873  {
33874  } // ~Inst_DS__DS_MAX_SRC2_U32
33875 
33876  // A = ADDR_BASE;
33877  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33878  // {offset1[6],offset1[6:0],offset0});
33879  // MEM[A] = max(MEM[A], MEM[B]).
33880  void
33882  {
33884  }
33885 
33887  : Inst_DS(iFmt, "ds_and_src2_b32")
33888  {
33889  } // Inst_DS__DS_AND_SRC2_B32
33890 
33892  {
33893  } // ~Inst_DS__DS_AND_SRC2_B32
33894 
33895  // A = ADDR_BASE;
33896  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33897  // {offset1[6],offset1[6:0],offset0});
33898  // MEM[A] = MEM[A] & MEM[B].
33899  void
33901  {
33903  }
33904 
33906  : Inst_DS(iFmt, "ds_or_src2_b32")
33907  {
33908  } // Inst_DS__DS_OR_SRC2_B32
33909 
33911  {
33912  } // ~Inst_DS__DS_OR_SRC2_B32
33913 
33914  // A = ADDR_BASE;
33915  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33916  // {offset1[6],offset1[6:0],offset0});
33917  // MEM[A] = MEM[A] | MEM[B].
33918  void
33920  {
33922  }
33923 
33925  : Inst_DS(iFmt, "ds_xor_src2_b32")
33926  {
33927  } // Inst_DS__DS_XOR_SRC2_B32
33928 
33930  {
33931  } // ~Inst_DS__DS_XOR_SRC2_B32
33932 
33933  // A = ADDR_BASE;
33934  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33935  // {offset1[6],offset1[6:0],offset0});
33936  // MEM[A] = MEM[A] ^ MEM[B].
33937  void
33939  {
33941  }
33942 
33944  : Inst_DS(iFmt, "ds_write_src2_b32")
33945  {
33946  setFlag(MemoryRef);
33947  setFlag(Store);
33948  } // Inst_DS__DS_WRITE_SRC2_B32
33949 
33951  {
33952  } // ~Inst_DS__DS_WRITE_SRC2_B32
33953 
33954  // A = ADDR_BASE;
33955  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33956  // {offset1[6],offset1[6:0],offset0});
33957  // MEM[A] = MEM[B].
33958  // Write dword.
33959  void
33961  {
33963  }
33964 
33966  : Inst_DS(iFmt, "ds_min_src2_f32")
33967  {
33968  setFlag(F32);
33969  } // Inst_DS__DS_MIN_SRC2_F32
33970 
33972  {
33973  } // ~Inst_DS__DS_MIN_SRC2_F32
33974 
33975  // A = ADDR_BASE;
33976  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33977  // {offset1[6],offset1[6:0],offset0});
33978  // MEM[A] = (MEM[B] < MEM[A]) ? MEM[B] : MEM[A].
33979  void
33981  {
33983  }
33984 
33986  : Inst_DS(iFmt, "ds_max_src2_f32")
33987  {
33988  setFlag(F32);
33989  } // Inst_DS__DS_MAX_SRC2_F32
33990 
33992  {
33993  } // ~Inst_DS__DS_MAX_SRC2_F32
33994 
33995  // A = ADDR_BASE;
33996  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
33997  // {offset1[6],offset1[6:0],offset0});
33998  // MEM[A] = (MEM[B] > MEM[A]) ? MEM[B] : MEM[A].
33999  void
34001  {
34003  }
34004 
34006  : Inst_DS(iFmt, "ds_add_src2_f32")
34007  {
34008  setFlag(F32);
34009  } // Inst_DS__DS_ADD_SRC2_F32
34010 
34012  {
34013  } // ~Inst_DS__DS_ADD_SRC2_F32
34014 
34015  // A = ADDR_BASE;
34016  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34017  // {offset1[6],offset1[6:0],offset0});
34018  // MEM[A] = MEM[B] + MEM[A].
34019  void
34021  {
34023  }
34024 
34026  InFmt_DS *iFmt)
34027  : Inst_DS(iFmt, "ds_gws_sema_release_all")
34028  {
34029  } // Inst_DS__DS_GWS_SEMA_RELEASE_ALL
34030 
34032  {
34033  } // ~Inst_DS__DS_GWS_SEMA_RELEASE_ALL
34034 
34035  void
34037  {
34039  }
34040 
34042  : Inst_DS(iFmt, "ds_gws_init")
34043  {
34044  } // Inst_DS__DS_GWS_INIT
34045 
34047  {
34048  } // ~Inst_DS__DS_GWS_INIT
34049 
34050  void
34052  {
34054  }
34055 
34057  : Inst_DS(iFmt, "ds_gws_sema_v")
34058  {
34059  } // Inst_DS__DS_GWS_SEMA_V
34060 
34062  {
34063  } // ~Inst_DS__DS_GWS_SEMA_V
34064 
34065  void
34067  {
34069  }
34070 
34072  : Inst_DS(iFmt, "ds_gws_sema_br")
34073  {
34074  } // Inst_DS__DS_GWS_SEMA_BR
34075 
34077  {
34078  } // ~Inst_DS__DS_GWS_SEMA_BR
34079 
34080  void
34082  {
34084  }
34085 
34087  : Inst_DS(iFmt, "ds_gws_sema_p")
34088  {
34089  } // Inst_DS__DS_GWS_SEMA_P
34090 
34092  {
34093  } // ~Inst_DS__DS_GWS_SEMA_P
34094 
34095  void
34097  {
34099  }
34100 
34102  : Inst_DS(iFmt, "ds_gws_barrier")
34103  {
34104  } // Inst_DS__DS_GWS_BARRIER
34105 
34107  {
34108  } // ~Inst_DS__DS_GWS_BARRIER
34109 
34110  void
34112  {
34114  }
34115 
34117  : Inst_DS(iFmt, "ds_consume")
34118  {
34119  } // Inst_DS__DS_CONSUME
34120 
34122  {
34123  } // ~Inst_DS__DS_CONSUME
34124 
34125  void
34127  {
34129  }
34130 
34132  : Inst_DS(iFmt, "ds_append")
34133  {
34134  } // Inst_DS__DS_APPEND
34135 
34137  {
34138  } // ~Inst_DS__DS_APPEND
34139 
34140  void
34142  {
34144  }
34145 
34147  : Inst_DS(iFmt, "ds_ordered_count")
34148  {
34149  } // Inst_DS__DS_ORDERED_COUNT
34150 
34152  {
34153  } // ~Inst_DS__DS_ORDERED_COUNT
34154 
34155  void
34157  {
34159  }
34160 
34162  : Inst_DS(iFmt, "ds_add_src2_u64")
34163  {
34164  } // Inst_DS__DS_ADD_SRC2_U64
34165 
34167  {
34168  } // ~Inst_DS__DS_ADD_SRC2_U64
34169 
34170  // A = ADDR_BASE;
34171  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34172  // {offset1[6],offset1[6:0],offset0});
34173  // MEM[A] = MEM[A] + MEM[B].
34174  void
34176  {
34178  }
34179 
34181  : Inst_DS(iFmt, "ds_sub_src2_u64")
34182  {
34183  } // Inst_DS__DS_SUB_SRC2_U64
34184 
34186  {
34187  } // ~Inst_DS__DS_SUB_SRC2_U64
34188 
34189  // A = ADDR_BASE;
34190  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34191  // {offset1[6],offset1[6:0],offset0});
34192  // MEM[A] = MEM[A] - MEM[B].
34193  void
34195  {
34197  }
34198 
34200  : Inst_DS(iFmt, "ds_rsub_src2_u64")
34201  {
34202  } // Inst_DS__DS_RSUB_SRC2_U64
34203 
34205  {
34206  } // ~Inst_DS__DS_RSUB_SRC2_U64
34207 
34208  // A = ADDR_BASE;
34209  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34210  // {offset1[6],offset1[6:0],offset0});
34211  // MEM[A] = MEM[B] - MEM[A].
34212  void
34214  {
34216  }
34217 
34219  : Inst_DS(iFmt, "ds_inc_src2_u64")
34220  {
34221  } // Inst_DS__DS_INC_SRC2_U64
34222 
34224  {
34225  } // ~Inst_DS__DS_INC_SRC2_U64
34226 
34227  // A = ADDR_BASE;
34228  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34229  // {offset1[6],offset1[6:0],offset0});
34230  // MEM[A] = (MEM[A] >= MEM[B] ? 0 : MEM[A] + 1).
34231  void
34233  {
34235  }
34236 
34238  : Inst_DS(iFmt, "ds_dec_src2_u64")
34239  {
34240  } // Inst_DS__DS_DEC_SRC2_U64
34241 
34243  {
34244  } // ~Inst_DS__DS_DEC_SRC2_U64
34245 
34246  // A = ADDR_BASE;
34247  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34248  // {offset1[6],offset1[6:0],offset0});
34249  // MEM[A] = (MEM[A] == 0 || MEM[A] > MEM[B] ? MEM[B] : MEM[A] - 1).
34250  // Uint decrement.
34251  void
34253  {
34255  }
34256 
34258  : Inst_DS(iFmt, "ds_min_src2_i64")
34259  {
34260  } // Inst_DS__DS_MIN_SRC2_I64
34261 
34263  {
34264  } // ~Inst_DS__DS_MIN_SRC2_I64
34265 
34266  // A = ADDR_BASE;
34267  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34268  // {offset1[6],offset1[6:0],offset0});
34269  // MEM[A] = min(MEM[A], MEM[B]).
34270  void
34272  {
34274  }
34275 
34277  : Inst_DS(iFmt, "ds_max_src2_i64")
34278  {
34279  } // Inst_DS__DS_MAX_SRC2_I64
34280 
34282  {
34283  } // ~Inst_DS__DS_MAX_SRC2_I64
34284 
34285  // A = ADDR_BASE;
34286  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34287  // {offset1[6],offset1[6:0],offset0});
34288  // MEM[A] = max(MEM[A], MEM[B]).
34289  void
34291  {
34293  }
34294 
34296  : Inst_DS(iFmt, "ds_min_src2_u64")
34297  {
34298  } // Inst_DS__DS_MIN_SRC2_U64
34299 
34301  {
34302  } // ~Inst_DS__DS_MIN_SRC2_U64
34303 
34304  // A = ADDR_BASE;
34305  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34306  // {offset1[6],offset1[6:0],offset0});
34307  // MEM[A] = min(MEM[A], MEM[B]).
34308  void
34310  {
34312  }
34313 
34315  : Inst_DS(iFmt, "ds_max_src2_u64")
34316  {
34317  } // Inst_DS__DS_MAX_SRC2_U64
34318 
34320  {
34321  } // ~Inst_DS__DS_MAX_SRC2_U64
34322 
34323  // A = ADDR_BASE;
34324  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34325  // {offset1[6],offset1[6:0],offset0});
34326  // MEM[A] = max(MEM[A], MEM[B]).
34327  void
34329  {
34331  }
34332 
34334  : Inst_DS(iFmt, "ds_and_src2_b64")
34335  {
34336  } // Inst_DS__DS_AND_SRC2_B64
34337 
34339  {
34340  } // ~Inst_DS__DS_AND_SRC2_B64
34341 
34342  // A = ADDR_BASE;
34343  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34344  // {offset1[6],offset1[6:0],offset0});
34345  // MEM[A] = MEM[A] & MEM[B].
34346  void
34348  {
34350  }
34351 
34353  : Inst_DS(iFmt, "ds_or_src2_b64")
34354  {
34355  } // Inst_DS__DS_OR_SRC2_B64
34356 
34358  {
34359  } // ~Inst_DS__DS_OR_SRC2_B64
34360 
34361  // A = ADDR_BASE;
34362  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34363  // {offset1[6],offset1[6:0],offset0});
34364  // MEM[A] = MEM[A] | MEM[B].
34365  void
34367  {
34369  }
34370 
34372  : Inst_DS(iFmt, "ds_xor_src2_b64")
34373  {
34374  } // Inst_DS__DS_XOR_SRC2_B64
34375 
34377  {
34378  } // ~Inst_DS__DS_XOR_SRC2_B64
34379 
34380  // A = ADDR_BASE;
34381  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34382  // {offset1[6],offset1[6:0],offset0});
34383  // MEM[A] = MEM[A] ^ MEM[B].
34384  void
34386  {
34388  }
34389 
34391  : Inst_DS(iFmt, "ds_write_src2_b64")
34392  {
34393  setFlag(MemoryRef);
34394  setFlag(Store);
34395  } // Inst_DS__DS_WRITE_SRC2_B64
34396 
34398  {
34399  } // ~Inst_DS__DS_WRITE_SRC2_B64
34400 
34401  // A = ADDR_BASE;
34402  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34403  // {offset1[6],offset1[6:0],offset0});
34404  // MEM[A] = MEM[B].
34405  // Write qword.
34406  void
34408  {
34410  }
34411 
34413  : Inst_DS(iFmt, "ds_min_src2_f64")
34414  {
34415  setFlag(F64);
34416  } // Inst_DS__DS_MIN_SRC2_F64
34417 
34419  {
34420  } // ~Inst_DS__DS_MIN_SRC2_F64
34421 
34422  // A = ADDR_BASE;
34423  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34424  // {offset1[6],offset1[6:0],offset0});
34425  // MEM[A] = (MEM[B] < MEM[A]) ? MEM[B] : MEM[A].
34426  void
34428  {
34430  }
34431 
34433  : Inst_DS(iFmt, "ds_max_src2_f64")
34434  {
34435  setFlag(F64);
34436  } // Inst_DS__DS_MAX_SRC2_F64
34437 
34439  {
34440  } // ~Inst_DS__DS_MAX_SRC2_F64
34441 
34442  // A = ADDR_BASE;
34443  // B = A + 4*(offset1[7] ? {A[31],A[31:17]} :
34444  // {offset1[6],offset1[6:0],offset0});
34445  // MEM[A] = (MEM[B] > MEM[A]) ? MEM[B] : MEM[A].
34446  void
34448  {
34450  }
34451 
34453  : Inst_DS(iFmt, "ds_write_b96")
34454  {
34455  setFlag(MemoryRef);
34456  setFlag(Store);
34457  } // Inst_DS__DS_WRITE_B96
34458 
34460  {
34461  } // ~Inst_DS__DS_WRITE_B96
34462 
34463  // {MEM[ADDR + 8], MEM[ADDR + 4], MEM[ADDR]} = DATA[95:0].
34464  // Tri-dword write.
34465  void
34467  {
34469  }
34470 
34472  : Inst_DS(iFmt, "ds_write_b128")
34473  {
34474  setFlag(MemoryRef);
34475  setFlag(Store);
34476  } // Inst_DS__DS_WRITE_B128
34477 
34479  {
34480  } // ~Inst_DS__DS_WRITE_B128
34481 
34482  // {MEM[ADDR + 12], MEM[ADDR + 8], MEM[ADDR + 4], MEM[ADDR]} = DATA[127:0].
34483  // Qword write.
34484  void
34486  {
34488  }
34489 
34491  : Inst_DS(iFmt, "ds_read_b96")
34492  {
34493  setFlag(MemoryRef);
34494  setFlag(Load);
34495  } // Inst_DS__DS_READ_B96
34496 
34498  {
34499  } // ~Inst_DS__DS_READ_B96
34500 
34501  // Tri-dword read.
34502  void
34504  {
34506  }
34507 
34509  : Inst_DS(iFmt, "ds_read_b128")
34510  {
34511  setFlag(MemoryRef);
34512  setFlag(Load);
34513  } // Inst_DS__DS_READ_B128
34514 
34516  {
34517  } // ~Inst_DS__DS_READ_B128
34518 
34519  // Qword read.
34520  void
34522  {
34524  }
34525 
34528  : Inst_MUBUF(iFmt, "buffer_load_format_x")
34529  {
34530  setFlag(MemoryRef);
34531  setFlag(Load);
34532  setFlag(GlobalSegment);
34533  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_X
34534 
34536  {
34537  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_X
34538 
34539  // Untyped buffer load 1 dword with format conversion.
34540  void
34542  {
34544  }
34545 
34546  void
34548  {
34549  } // initiateAcc
34550 
34551  void
34553  {
34554  }
34555 
34558  : Inst_MUBUF(iFmt, "buffer_load_format_xy")
34559  {
34560  setFlag(MemoryRef);
34561  setFlag(Load);
34562  setFlag(GlobalSegment);
34563  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_XY
34564 
34566  {
34567  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_XY
34568 
34569  // Untyped buffer load 2 dwords with format conversion.
34570  void
34572  {
34574  }
34575 
34576  void
34578  {
34579  } // initiateAcc
34580 
34581  void
34583  {
34584  }
34585 
34588  : Inst_MUBUF(iFmt, "buffer_load_format_xyz")
34589  {
34590  setFlag(MemoryRef);
34591  setFlag(Load);
34592  setFlag(GlobalSegment);
34593  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ
34594 
34596  {
34597  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ
34598 
34599  // Untyped buffer load 3 dwords with format conversion.
34600  void
34602  {
34604  }
34605 
34606  void
34608  {
34609  } // initiateAcc
34610 
34611  void
34613  {
34614  }
34615 
34618  : Inst_MUBUF(iFmt, "buffer_load_format_xyzw")
34619  {
34620  setFlag(MemoryRef);
34621  setFlag(Load);
34622  setFlag(GlobalSegment);
34623  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW
34624 
34626  {
34627  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW
34628 
34629  // Untyped buffer load 4 dwords with format conversion.
34630  void
34632  {
34634  }
34635 
34636  void
34638  {
34639  } // initiateAcc
34640 
34641  void
34643  {
34644  }
34645 
34648  : Inst_MUBUF(iFmt, "buffer_store_format_x")
34649  {
34650  setFlag(MemoryRef);
34651  setFlag(Store);
34652  setFlag(GlobalSegment);
34653  } // Inst_MUBUF__BUFFER_STORE_FORMAT_X
34654 
34656  {
34657  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_X
34658 
34659  // Untyped buffer store 1 dword with format conversion.
34660  void
34662  {
34664  }
34665 
34666  void
34668  {
34669  } // initiateAcc
34670 
34671  void
34673  {
34674  }
34675 
34678  : Inst_MUBUF(iFmt, "buffer_store_format_xy")
34679  {
34680  setFlag(MemoryRef);
34681  setFlag(Store);
34682  setFlag(GlobalSegment);
34683  } // Inst_MUBUF__BUFFER_STORE_FORMAT_XY
34684 
34686  {
34687  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_XY
34688 
34689  // Untyped buffer store 2 dwords with format conversion.
34690  void
34692  {
34694  }
34695 
34696  void
34698  {
34699  } // initiateAcc
34700 
34701  void
34703  {
34704  }
34705 
34708  : Inst_MUBUF(iFmt, "buffer_store_format_xyz")
34709  {
34710  setFlag(MemoryRef);
34711  setFlag(Store);
34712  setFlag(GlobalSegment);
34713  } // Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ
34714 
34716  {
34717  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ
34718 
34719  // Untyped buffer store 3 dwords with format conversion.
34720  void
34722  {
34724  }
34725 
34726  void
34728  {
34729  } // initiateAcc
34730 
34731  void
34733  {
34734  }
34735 
34738  : Inst_MUBUF(iFmt, "buffer_store_format_xyzw")
34739  {
34740  setFlag(MemoryRef);
34741  setFlag(Store);
34742  setFlag(GlobalSegment);
34743  } // Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW
34744 
34747  {
34748  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW
34749 
34750  // Untyped buffer store 4 dwords with format conversion.
34751  void
34753  {
34755  }
34756 
34757  void
34759  {
34760  } // initiateAcc
34761 
34762  void
34764  {
34765  }
34766 
34769  : Inst_MUBUF(iFmt, "buffer_load_format_d16_x")
34770  {
34771  setFlag(MemoryRef);
34772  setFlag(Load);
34773  setFlag(GlobalSegment);
34774  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X
34775 
34778  {
34779  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X
34780 
34781  // Untyped buffer load 1 dword with format conversion.
34782  void
34784  {
34786  }
34787 
34788  void
34790  {
34791  } // initiateAcc
34792 
34793  void
34795  {
34796  }
34797 
34800  : Inst_MUBUF(iFmt, "buffer_load_format_d16_xy")
34801  {
34802  setFlag(MemoryRef);
34803  setFlag(Load);
34804  setFlag(GlobalSegment);
34805  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY
34806 
34809  {
34810  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY
34811 
34812  // Untyped buffer load 2 dwords with format conversion.
34813  void
34815  {
34817  }
34818 
34819  void
34821  GPUDynInstPtr gpuDynInst)
34822  {
34823  } // initiateAcc
34824 
34825  void
34827  GPUDynInstPtr gpuDynInst)
34828  {
34829  }
34830 
34833  : Inst_MUBUF(iFmt, "buffer_load_format_d16_xyz")
34834  {
34835  setFlag(MemoryRef);
34836  setFlag(Load);
34837  setFlag(GlobalSegment);
34838  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ
34839 
34842  {
34843  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ
34844 
34845  // Untyped buffer load 3 dwords with format conversion.
34846  void
34848  {
34850  }
34851 
34852  void
34854  GPUDynInstPtr gpuDynInst)
34855  {
34856  } // initiateAcc
34857 
34858  void
34860  GPUDynInstPtr gpuDynInst)
34861  {
34862  }
34863 
34866  : Inst_MUBUF(iFmt, "buffer_load_format_d16_xyzw")
34867  {
34868  setFlag(MemoryRef);
34869  setFlag(Load);
34870  setFlag(GlobalSegment);
34871  } // Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW
34872 
34875  {
34876  } // ~Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW
34877 
34878  // Untyped buffer load 4 dwords with format conversion.
34879  void
34881  {
34883  }
34884 
34885  void
34887  GPUDynInstPtr gpuDynInst)
34888  {
34889  } // initiateAcc
34890 
34891  void
34893  GPUDynInstPtr gpuDynInst)
34894  {
34895  }
34896 
34899  : Inst_MUBUF(iFmt, "buffer_store_format_d16_x")
34900  {
34901  setFlag(MemoryRef);
34902  setFlag(Store);
34903  setFlag(GlobalSegment);
34904  } // Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X
34905 
34908  {
34909  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X
34910 
34911  // Untyped buffer store 1 dword with format conversion.
34912  void
34914  {
34916  }
34917 
34918  void
34920  GPUDynInstPtr gpuDynInst)
34921  {
34922  } // initiateAcc
34923 
34924  void
34926  GPUDynInstPtr gpuDynInst)
34927  {
34928  }
34929 
34932  : Inst_MUBUF(iFmt, "buffer_store_format_d16_xy")
34933  {
34934  setFlag(MemoryRef);
34935  setFlag(Store);
34936  setFlag(GlobalSegment);
34937  } // Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY
34938 
34941  {
34942  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY
34943 
34944  // Untyped buffer store 2 dwords with format conversion.
34945  void
34947  {
34949  }
34950 
34951  void
34953  GPUDynInstPtr gpuDynInst)
34954  {
34955  } // initiateAcc
34956 
34957  void
34959  GPUDynInstPtr gpuDynInst)
34960  {
34961  }
34962 
34965  : Inst_MUBUF(iFmt, "buffer_store_format_d16_xyz")
34966  {
34967  setFlag(MemoryRef);
34968  setFlag(Store);
34969  setFlag(GlobalSegment);
34970  } // Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ
34971 
34974  {
34975  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ
34976 
34977  // Untyped buffer store 3 dwords with format conversion.
34978  void
34980  {
34982  }
34983 
34984  void
34986  GPUDynInstPtr gpuDynInst)
34987  {
34988  } // initiateAcc
34989 
34990  void
34992  GPUDynInstPtr gpuDynInst)
34993  {
34994  }
34995 
34998  : Inst_MUBUF(iFmt, "buffer_store_format_d16_xyzw")
34999  {
35000  setFlag(MemoryRef);
35001  setFlag(Store);
35002  setFlag(GlobalSegment);
35003  } // Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW
35004 
35007  {
35008  } // ~Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW
35009 
35010  // Untyped buffer store 4 dwords with format conversion.
35011  void
35013  {
35015  }
35016 
35017  void
35019  GPUDynInstPtr gpuDynInst)
35020  {
35021  } // initiateAcc
35022 
35023  void
35025  GPUDynInstPtr gpuDynInst)
35026  {
35027  }
35028 
35031  : Inst_MUBUF(iFmt, "buffer_load_ubyte")
35032  {
35033  setFlag(MemoryRef);
35034  setFlag(Load);
35035  if (instData.LDS) {
35036  setFlag(GroupSegment);
35037  } else {
35038  setFlag(GlobalSegment);
35039  }
35040  } // Inst_MUBUF__BUFFER_LOAD_UBYTE
35041 
35043  {
35044  } // ~Inst_MUBUF__BUFFER_LOAD_UBYTE
35045 
35046  // Untyped buffer load unsigned byte (zero extend to VGPR destination).
35047  void
35049  {
35050  Wavefront *wf = gpuDynInst->wavefront();
35051  gpuDynInst->execUnitId = wf->execUnitId;
35052  gpuDynInst->exec_mask = wf->execMask();
35053  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35054  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
35055 
35056  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
35057  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
35058  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
35060 
35061  rsrcDesc.read();
35062  offset.read();
35063 
35064  int inst_offset = instData.OFFSET;
35065 
35066  if (!instData.IDXEN && !instData.OFFEN) {
35069  addr0, addr1, rsrcDesc, offset, inst_offset);
35070  } else if (!instData.IDXEN && instData.OFFEN) {
35071  addr0.read();
35074  addr0, addr1, rsrcDesc, offset, inst_offset);
35075  } else if (instData.IDXEN && !instData.OFFEN) {
35076  addr0.read();
35079  addr1, addr0, rsrcDesc, offset, inst_offset);
35080  } else {
35081  addr0.read();
35082  addr1.read();
35085  addr1, addr0, rsrcDesc, offset, inst_offset);
35086  }
35087 
35088  if (isLocalMem()) {
35089  gpuDynInst->computeUnit()->localMemoryPipe.
35090  issueRequest(gpuDynInst);
35091  wf->rdLmReqsInPipe--;
35092  wf->outstandingReqsRdLm++;
35093  } else {
35094  gpuDynInst->computeUnit()->globalMemoryPipe.
35095  issueRequest(gpuDynInst);
35096  wf->rdGmReqsInPipe--;
35097  wf->outstandingReqsRdGm++;
35098  }
35099 
35100  wf->outstandingReqs++;
35102  }
35103 
35104  void
35106  {
35107  initMemRead<VecElemU8>(gpuDynInst);
35108  } // initiateAcc
35109 
35110  void
35112  {
35113  VecOperandU32 vdst(gpuDynInst, extData.VDATA);
35114 
35115  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35116  if (gpuDynInst->exec_mask[lane]) {
35117  if (!oobMask[lane]) {
35118  vdst[lane] = (VecElemU32)((reinterpret_cast<VecElemU8*>(
35119  gpuDynInst->d_data))[lane]);
35120  } else {
35121  vdst[lane] = 0;
35122  }
35123  }
35124  }
35125 
35126  vdst.write();
35127  }
35128 
35129 
35132  : Inst_MUBUF(iFmt, "buffer_load_sbyte")
35133  {
35134  setFlag(MemoryRef);
35135  setFlag(Load);
35136  setFlag(GlobalSegment);
35137  } // Inst_MUBUF__BUFFER_LOAD_SBYTE
35138 
35140  {
35141  } // ~Inst_MUBUF__BUFFER_LOAD_SBYTE
35142 
35143  // Untyped buffer load signed byte (sign extend to VGPR destination).
35144  void
35146  {
35148  }
35149 
35150  void
35152  {
35153  } // initiateAcc
35154 
35155  void
35157  {
35158  }
35159 
35162  : Inst_MUBUF(iFmt, "buffer_load_ushort")
35163  {
35164  setFlag(MemoryRef);
35165  setFlag(Load);
35166  if (instData.LDS) {
35167  setFlag(GroupSegment);
35168  } else {
35169  setFlag(GlobalSegment);
35170  }
35171  } // Inst_MUBUF__BUFFER_LOAD_USHORT
35172 
35174  {
35175  } // ~Inst_MUBUF__BUFFER_LOAD_USHORT
35176 
35177  // Untyped buffer load unsigned short (zero extend to VGPR destination).
35178  void
35180  {
35181  Wavefront *wf = gpuDynInst->wavefront();
35182  gpuDynInst->execUnitId = wf->execUnitId;
35183  gpuDynInst->exec_mask = wf->execMask();
35184  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35185  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
35186 
35187  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
35188  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
35189  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
35191 
35192  rsrcDesc.read();
35193  offset.read();
35194 
35195  int inst_offset = instData.OFFSET;
35196 
35197  if (!instData.IDXEN && !instData.OFFEN) {
35200  addr0, addr1, rsrcDesc, offset, inst_offset);
35201  } else if (!instData.IDXEN && instData.OFFEN) {
35202  addr0.read();
35205  addr0, addr1, rsrcDesc, offset, inst_offset);
35206  } else if (instData.IDXEN && !instData.OFFEN) {
35207  addr0.read();
35210  addr1, addr0, rsrcDesc, offset, inst_offset);
35211  } else {
35212  addr0.read();
35213  addr1.read();
35216  addr1, addr0, rsrcDesc, offset, inst_offset);
35217  }
35218 
35219  if (isLocalMem()) {
35220  gpuDynInst->computeUnit()->localMemoryPipe
35221  .issueRequest(gpuDynInst);
35222  wf->rdLmReqsInPipe--;
35223  wf->outstandingReqsRdLm++;
35224  } else {
35225  gpuDynInst->computeUnit()->globalMemoryPipe
35226  .issueRequest(gpuDynInst);
35227  wf->rdGmReqsInPipe--;
35228  wf->outstandingReqsRdGm++;
35229  }
35230 
35231  wf->outstandingReqs++;
35233  }
35234 
35235  void
35237  {
35238  initMemRead<VecElemU16>(gpuDynInst);
35239  } // initiateAcc
35240 
35241  void
35243  {
35244  VecOperandU32 vdst(gpuDynInst, extData.VDATA);
35245 
35246  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35247  if (gpuDynInst->exec_mask[lane]) {
35248  if (!oobMask[lane]) {
35249  vdst[lane] = (VecElemU32)((reinterpret_cast<VecElemU16*>(
35250  gpuDynInst->d_data))[lane]);
35251  } else {
35252  vdst[lane] = 0;
35253  }
35254  }
35255  }
35256 
35257  vdst.write();
35258  }
35259 
35260 
35263  : Inst_MUBUF(iFmt, "buffer_load_sshort")
35264  {
35265  setFlag(MemoryRef);
35266  setFlag(Load);
35267  setFlag(GlobalSegment);
35268  } // Inst_MUBUF__BUFFER_LOAD_SSHORT
35269 
35271  {
35272  } // ~Inst_MUBUF__BUFFER_LOAD_SSHORT
35273 
35274  // Untyped buffer load signed short (sign extend to VGPR destination).
35275  void
35277  {
35279  }
35280 
35281  void
35283  {
35284  } // initiateAcc
35285 
35286  void
35288  {
35289  }
35290 
35293  : Inst_MUBUF(iFmt, "buffer_load_dword")
35294  {
35295  setFlag(MemoryRef);
35296  setFlag(Load);
35297  if (instData.LDS) {
35298  setFlag(GroupSegment);
35299  } else {
35300  setFlag(GlobalSegment);
35301  }
35302  } // Inst_MUBUF__BUFFER_LOAD_DWORD
35303 
35305  {
35306  } // ~Inst_MUBUF__BUFFER_LOAD_DWORD
35307 
35308  // Untyped buffer load dword.
35309  void
35311  {
35312  Wavefront *wf = gpuDynInst->wavefront();
35313  gpuDynInst->execUnitId = wf->execUnitId;
35314  gpuDynInst->exec_mask = wf->execMask();
35315  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35316  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
35317 
35318  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
35319  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
35320  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
35322 
35323  rsrcDesc.read();
35324  offset.read();
35325 
35326  int inst_offset = instData.OFFSET;
35327 
35328  if (!instData.IDXEN && !instData.OFFEN) {
35331  addr0, addr1, rsrcDesc, offset, inst_offset);
35332  } else if (!instData.IDXEN && instData.OFFEN) {
35333  addr0.read();
35336  addr0, addr1, rsrcDesc, offset, inst_offset);
35337  } else if (instData.IDXEN && !instData.OFFEN) {
35338  addr0.read();
35341  addr1, addr0, rsrcDesc, offset, inst_offset);
35342  } else {
35343  addr0.read();
35344  addr1.read();
35347  addr1, addr0, rsrcDesc, offset, inst_offset);
35348  }
35349 
35350  if (isLocalMem()) {
35351  gpuDynInst->computeUnit()->localMemoryPipe
35352  .issueRequest(gpuDynInst);
35353  wf->rdLmReqsInPipe--;
35354  wf->outstandingReqsRdLm++;
35355  } else {
35356  gpuDynInst->computeUnit()->globalMemoryPipe
35357  .issueRequest(gpuDynInst);
35358  wf->rdGmReqsInPipe--;
35359  wf->outstandingReqsRdGm++;
35360  }
35361 
35362  wf->outstandingReqs++;
35364  }
35365 
35366  void
35368  {
35369  initMemRead<VecElemU32>(gpuDynInst);
35370  } // initiateAcc
35371 
35372  void
35374  {
35375  VecOperandU32 vdst(gpuDynInst, extData.VDATA);
35376 
35377  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35378  if (gpuDynInst->exec_mask[lane]) {
35379  if (!oobMask[lane]) {
35380  vdst[lane] = (reinterpret_cast<VecElemU32*>(
35381  gpuDynInst->d_data))[lane];
35382  } else {
35383  vdst[lane] = 0;
35384  }
35385  }
35386  }
35387 
35388  vdst.write();
35389  } // completeAcc
35390 
35393  : Inst_MUBUF(iFmt, "buffer_load_dwordx2")
35394  {
35395  setFlag(MemoryRef);
35396  setFlag(Load);
35397  if (instData.LDS) {
35398  setFlag(GroupSegment);
35399  } else {
35400  setFlag(GlobalSegment);
35401  }
35402  } // Inst_MUBUF__BUFFER_LOAD_DWORDX2
35403 
35405  {
35406  } // ~Inst_MUBUF__BUFFER_LOAD_DWORDX2
35407 
35408  // Untyped buffer load 2 dwords.
35409  void
35411  {
35412  Wavefront *wf = gpuDynInst->wavefront();
35413  gpuDynInst->execUnitId = wf->execUnitId;
35414  gpuDynInst->exec_mask = wf->execMask();
35415  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35416  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
35417 
35418  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
35419  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
35420  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
35422 
35423  rsrcDesc.read();
35424  offset.read();
35425 
35426  int inst_offset = instData.OFFSET;
35427 
35428  if (!instData.IDXEN && !instData.OFFEN) {
35431  addr0, addr1, rsrcDesc, offset, inst_offset);
35432  } else if (!instData.IDXEN && instData.OFFEN) {
35433  addr0.read();
35436  addr0, addr1, rsrcDesc, offset, inst_offset);
35437  } else if (instData.IDXEN && !instData.OFFEN) {
35438  addr0.read();
35441  addr1, addr0, rsrcDesc, offset, inst_offset);
35442  } else {
35443  addr0.read();
35444  addr1.read();
35447  addr1, addr0, rsrcDesc, offset, inst_offset);
35448  }
35449 
35450  if (isLocalMem()) {
35451  gpuDynInst->computeUnit()->localMemoryPipe
35452  .issueRequest(gpuDynInst);
35453  wf->rdLmReqsInPipe--;
35454  wf->outstandingReqsRdLm++;
35455  } else {
35456  gpuDynInst->computeUnit()->globalMemoryPipe
35457  .issueRequest(gpuDynInst);
35458  wf->rdGmReqsInPipe--;
35459  wf->outstandingReqsRdGm++;
35460  }
35461 
35462  wf->outstandingReqs++;
35464  } // execute
35465 
35466  void
35468  {
35469  initMemRead<2>(gpuDynInst);
35470  } // initiateAcc
35471 
35472  void
35474  {
35475  VecOperandU32 vdst0(gpuDynInst, extData.VDATA);
35476  VecOperandU32 vdst1(gpuDynInst, extData.VDATA + 1);
35477 
35478  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35479  if (gpuDynInst->exec_mask[lane]) {
35480  if (!oobMask[lane]) {
35481  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
35482  gpuDynInst->d_data))[lane * 2];
35483  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
35484  gpuDynInst->d_data))[lane * 2 + 1];
35485  } else {
35486  vdst0[lane] = 0;
35487  vdst1[lane] = 0;
35488  }
35489  }
35490  }
35491 
35492  vdst0.write();
35493  vdst1.write();
35494  } // completeAcc
35495 
35498  : Inst_MUBUF(iFmt, "buffer_load_dwordx3")
35499  {
35500  setFlag(MemoryRef);
35501  setFlag(Load);
35502  if (instData.LDS) {
35503  setFlag(GroupSegment);
35504  } else {
35505  setFlag(GlobalSegment);
35506  }
35507  } // Inst_MUBUF__BUFFER_LOAD_DWORDX3
35508 
35510  {
35511  } // ~Inst_MUBUF__BUFFER_LOAD_DWORDX3
35512 
35513  // Untyped buffer load 3 dwords.
35514  void
35516  {
35517  Wavefront *wf = gpuDynInst->wavefront();
35518  gpuDynInst->execUnitId = wf->execUnitId;
35519  gpuDynInst->exec_mask = wf->execMask();
35520  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35521  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
35522 
35523  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
35524  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
35525  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
35527 
35528  rsrcDesc.read();
35529  offset.read();
35530 
35531  int inst_offset = instData.OFFSET;
35532 
35533  if (!instData.IDXEN && !instData.OFFEN) {
35536  addr0, addr1, rsrcDesc, offset, inst_offset);
35537  } else if (!instData.IDXEN && instData.OFFEN) {
35538  addr0.read();
35541  addr0, addr1, rsrcDesc, offset, inst_offset);
35542  } else if (instData.IDXEN && !instData.OFFEN) {
35543  addr0.read();
35546  addr1, addr0, rsrcDesc, offset, inst_offset);
35547  } else {
35548  addr0.read();
35549  addr1.read();
35552  addr1, addr0, rsrcDesc, offset, inst_offset);
35553  }
35554 
35555  if (isLocalMem()) {
35556  gpuDynInst->computeUnit()->localMemoryPipe
35557  .issueRequest(gpuDynInst);
35558  wf->rdLmReqsInPipe--;
35559  wf->outstandingReqsRdLm++;
35560  } else {
35561  gpuDynInst->computeUnit()->globalMemoryPipe
35562  .issueRequest(gpuDynInst);
35563  wf->rdGmReqsInPipe--;
35564  wf->outstandingReqsRdGm++;
35565  }
35566 
35567  wf->outstandingReqs++;
35569  } // execute
35570 
35571  void
35573  {
35574  initMemRead<3>(gpuDynInst);
35575  } // initiateAcc
35576 
35577  void
35579  {
35580  VecOperandU32 vdst0(gpuDynInst, extData.VDATA);
35581  VecOperandU32 vdst1(gpuDynInst, extData.VDATA + 1);
35582  VecOperandU32 vdst2(gpuDynInst, extData.VDATA + 2);
35583 
35584  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35585  if (gpuDynInst->exec_mask[lane]) {
35586  if (!oobMask[lane]) {
35587  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
35588  gpuDynInst->d_data))[lane * 3];
35589  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
35590  gpuDynInst->d_data))[lane * 3 + 1];
35591  vdst2[lane] = (reinterpret_cast<VecElemU32*>(
35592  gpuDynInst->d_data))[lane * 3 + 2];
35593  } else {
35594  vdst0[lane] = 0;
35595  vdst1[lane] = 0;
35596  vdst2[lane] = 0;
35597  }
35598  }
35599  }
35600 
35601  vdst0.write();
35602  vdst1.write();
35603  vdst2.write();
35604  } // completeAcc
35605 
35608  : Inst_MUBUF(iFmt, "buffer_load_dwordx4")
35609  {
35610  setFlag(MemoryRef);
35611  setFlag(Load);
35612  if (instData.LDS) {
35613  setFlag(GroupSegment);
35614  } else {
35615  setFlag(GlobalSegment);
35616  }
35617  } // Inst_MUBUF__BUFFER_LOAD_DWORDX4
35618 
35620  {
35621  } // ~Inst_MUBUF__BUFFER_LOAD_DWORDX4
35622 
35623  // Untyped buffer load 4 dwords.
35624  void
35626  {
35627  Wavefront *wf = gpuDynInst->wavefront();
35628  gpuDynInst->execUnitId = wf->execUnitId;
35629  gpuDynInst->exec_mask = wf->execMask();
35630  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35631  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
35632 
35633  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
35634  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
35635  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
35637 
35638  rsrcDesc.read();
35639  offset.read();
35640 
35641  int inst_offset = instData.OFFSET;
35642 
35643  if (!instData.IDXEN && !instData.OFFEN) {
35646  addr0, addr1, rsrcDesc, offset, inst_offset);
35647  } else if (!instData.IDXEN && instData.OFFEN) {
35648  addr0.read();
35651  addr0, addr1, rsrcDesc, offset, inst_offset);
35652  } else if (instData.IDXEN && !instData.OFFEN) {
35653  addr0.read();
35656  addr1, addr0, rsrcDesc, offset, inst_offset);
35657  } else {
35658  addr0.read();
35659  addr1.read();
35662  addr1, addr0, rsrcDesc, offset, inst_offset);
35663  }
35664 
35665  if (isLocalMem()) {
35666  gpuDynInst->computeUnit()->localMemoryPipe
35667  .issueRequest(gpuDynInst);
35668  wf->rdLmReqsInPipe--;
35669  wf->outstandingReqsRdLm++;
35670  } else {
35671  gpuDynInst->computeUnit()->globalMemoryPipe
35672  .issueRequest(gpuDynInst);
35673  wf->rdGmReqsInPipe--;
35674  wf->outstandingReqsRdGm++;
35675  }
35676 
35677  wf->outstandingReqs++;
35679  } // execute
35680 
35681  void
35683  {
35684  initMemRead<4>(gpuDynInst);
35685  } // initiateAcc
35686 
35687  void
35689  {
35690  VecOperandU32 vdst0(gpuDynInst, extData.VDATA);
35691  VecOperandU32 vdst1(gpuDynInst, extData.VDATA + 1);
35692  VecOperandU32 vdst2(gpuDynInst, extData.VDATA + 2);
35693  VecOperandU32 vdst3(gpuDynInst, extData.VDATA + 3);
35694 
35695  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35696  if (gpuDynInst->exec_mask[lane]) {
35697  if (!oobMask[lane]) {
35698  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
35699  gpuDynInst->d_data))[lane * 4];
35700  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
35701  gpuDynInst->d_data))[lane * 4 + 1];
35702  vdst2[lane] = (reinterpret_cast<VecElemU32*>(
35703  gpuDynInst->d_data))[lane * 4 + 2];
35704  vdst3[lane] = (reinterpret_cast<VecElemU32*>(
35705  gpuDynInst->d_data))[lane * 4 + 3];
35706  } else {
35707  vdst0[lane] = 0;
35708  vdst1[lane] = 0;
35709  vdst2[lane] = 0;
35710  vdst3[lane] = 0;
35711  }
35712  }
35713  }
35714 
35715  vdst0.write();
35716  vdst1.write();
35717  vdst2.write();
35718  vdst3.write();
35719  } // completeAcc
35720 
35723  : Inst_MUBUF(iFmt, "buffer_store_byte")
35724  {
35725  setFlag(MemoryRef);
35726  setFlag(Store);
35727  if (instData.LDS) {
35728  setFlag(GroupSegment);
35729  } else {
35730  setFlag(GlobalSegment);
35731  }
35732  } // Inst_MUBUF__BUFFER_STORE_BYTE
35733 
35735  {
35736  } // ~Inst_MUBUF__BUFFER_STORE_BYTE
35737 
35738  // Untyped buffer store byte.
35739  void
35741  {
35742  Wavefront *wf = gpuDynInst->wavefront();
35743  gpuDynInst->execUnitId = wf->execUnitId;
35744  gpuDynInst->exec_mask = wf->execMask();
35745  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35746  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
35747 
35748  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
35749  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
35750  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
35752 
35753  rsrcDesc.read();
35754  offset.read();
35755 
35756  int inst_offset = instData.OFFSET;
35757 
35758  if (!instData.IDXEN && !instData.OFFEN) {
35761  addr0, addr1, rsrcDesc, offset, inst_offset);
35762  } else if (!instData.IDXEN && instData.OFFEN) {
35763  addr0.read();
35766  addr0, addr1, rsrcDesc, offset, inst_offset);
35767  } else if (instData.IDXEN && !instData.OFFEN) {
35768  addr0.read();
35771  addr1, addr0, rsrcDesc, offset, inst_offset);
35772  } else {
35773  addr0.read();
35774  addr1.read();
35777  addr1, addr0, rsrcDesc, offset, inst_offset);
35778  }
35779 
35780  if (isLocalMem()) {
35781  gpuDynInst->computeUnit()->localMemoryPipe
35782  .issueRequest(gpuDynInst);
35783  wf->wrLmReqsInPipe--;
35784  wf->outstandingReqsWrLm++;
35785  } else {
35786  gpuDynInst->computeUnit()->globalMemoryPipe
35787  .issueRequest(gpuDynInst);
35788  wf->wrGmReqsInPipe--;
35789  wf->outstandingReqsWrGm++;
35790  }
35791 
35792  wf->outstandingReqs++;
35794  }
35795 
35796  void
35798  {
35799  ConstVecOperandI8 data(gpuDynInst, extData.VDATA);
35800  data.read();
35801 
35802  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35803  if (gpuDynInst->exec_mask[lane]) {
35804  (reinterpret_cast<VecElemI8*>(gpuDynInst->d_data))[lane]
35805  = data[lane];
35806  }
35807  }
35808 
35809  initMemWrite<VecElemI8>(gpuDynInst);
35810  } // initiateAcc
35811 
35812  void
35814  {
35815  }
35816 
35819  : Inst_MUBUF(iFmt, "buffer_store_short")
35820  {
35821  setFlag(MemoryRef);
35822  setFlag(Store);
35823  if (instData.LDS) {
35824  setFlag(GroupSegment);
35825  } else {
35826  setFlag(GlobalSegment);
35827  }
35828  } // Inst_MUBUF__BUFFER_STORE_SHORT
35829 
35831  {
35832  } // ~Inst_MUBUF__BUFFER_STORE_SHORT
35833 
35834  // Untyped buffer store short.
35835  void
35837  {
35838  Wavefront *wf = gpuDynInst->wavefront();
35839  gpuDynInst->execUnitId = wf->execUnitId;
35840  gpuDynInst->exec_mask = wf->execMask();
35841  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35842  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
35843 
35844  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
35845  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
35846  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
35848 
35849  rsrcDesc.read();
35850  offset.read();
35851 
35852  int inst_offset = instData.OFFSET;
35853 
35854  if (!instData.IDXEN && !instData.OFFEN) {
35857  addr0, addr1, rsrcDesc, offset, inst_offset);
35858  } else if (!instData.IDXEN && instData.OFFEN) {
35859  addr0.read();
35862  addr0, addr1, rsrcDesc, offset, inst_offset);
35863  } else if (instData.IDXEN && !instData.OFFEN) {
35864  addr0.read();
35867  addr1, addr0, rsrcDesc, offset, inst_offset);
35868  } else {
35869  addr0.read();
35870  addr1.read();
35873  addr1, addr0, rsrcDesc, offset, inst_offset);
35874  }
35875 
35876  if (isLocalMem()) {
35877  gpuDynInst->computeUnit()->localMemoryPipe
35878  .issueRequest(gpuDynInst);
35879  wf->wrLmReqsInPipe--;
35880  wf->outstandingReqsWrLm++;
35881  } else {
35882  gpuDynInst->computeUnit()->globalMemoryPipe
35883  .issueRequest(gpuDynInst);
35884  wf->wrGmReqsInPipe--;
35885  wf->outstandingReqsWrGm++;
35886  }
35887 
35888  wf->outstandingReqs++;
35890  }
35891 
35892  void
35894  {
35895  ConstVecOperandI16 data(gpuDynInst, extData.VDATA);
35896  data.read();
35897 
35898  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35899  if (gpuDynInst->exec_mask[lane]) {
35900  (reinterpret_cast<VecElemI16*>(gpuDynInst->d_data))[lane]
35901  = data[lane];
35902  }
35903  }
35904 
35905  initMemWrite<VecElemI16>(gpuDynInst);
35906  } // initiateAcc
35907 
35908  void
35910  {
35911  }
35912 
35915  : Inst_MUBUF(iFmt, "buffer_store_dword")
35916  {
35917  setFlag(MemoryRef);
35918  setFlag(Store);
35919  if (instData.LDS) {
35920  setFlag(GroupSegment);
35921  } else {
35922  setFlag(GlobalSegment);
35923  }
35924  } // Inst_MUBUF__BUFFER_STORE_DWORD
35925 
35927  {
35928  } // ~Inst_MUBUF__BUFFER_STORE_DWORD
35929 
35930  // Untyped buffer store dword.
35931  void
35933  {
35934  Wavefront *wf = gpuDynInst->wavefront();
35935  gpuDynInst->execUnitId = wf->execUnitId;
35936  gpuDynInst->exec_mask = wf->execMask();
35937  gpuDynInst->latency.init(gpuDynInst->computeUnit());
35938  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
35939 
35940  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
35941  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
35942  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
35944 
35945  rsrcDesc.read();
35946  offset.read();
35947 
35948  int inst_offset = instData.OFFSET;
35949 
35950  if (!instData.IDXEN && !instData.OFFEN) {
35953  addr0, addr1, rsrcDesc, offset, inst_offset);
35954  } else if (!instData.IDXEN && instData.OFFEN) {
35955  addr0.read();
35958  addr0, addr1, rsrcDesc, offset, inst_offset);
35959  } else if (instData.IDXEN && !instData.OFFEN) {
35960  addr0.read();
35963  addr1, addr0, rsrcDesc, offset, inst_offset);
35964  } else {
35965  addr0.read();
35966  addr1.read();
35969  addr1, addr0, rsrcDesc, offset, inst_offset);
35970  }
35971 
35972  if (isLocalMem()) {
35973  gpuDynInst->computeUnit()->localMemoryPipe
35974  .issueRequest(gpuDynInst);
35975  wf->wrLmReqsInPipe--;
35976  wf->outstandingReqsWrLm++;
35977  } else {
35978  gpuDynInst->computeUnit()->globalMemoryPipe
35979  .issueRequest(gpuDynInst);
35980  wf->wrGmReqsInPipe--;
35981  wf->outstandingReqsWrGm++;
35982  }
35983 
35984  wf->outstandingReqs++;
35986  }
35987 
35988  void
35990  {
35991  ConstVecOperandU32 data(gpuDynInst, extData.VDATA);
35992  data.read();
35993 
35994  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
35995  if (gpuDynInst->exec_mask[lane]) {
35996  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane]
35997  = data[lane];
35998  }
35999  }
36000 
36001  initMemWrite<VecElemU32>(gpuDynInst);
36002  } // initiateAcc
36003 
36004  void
36006  {
36007  } // completeAcc
36008 
36011  : Inst_MUBUF(iFmt, "buffer_store_dwordx2")
36012  {
36013  setFlag(MemoryRef);
36014  setFlag(Store);
36015  if (instData.LDS) {
36016  setFlag(GroupSegment);
36017  } else {
36018  setFlag(GlobalSegment);
36019  }
36020  } // Inst_MUBUF__BUFFER_STORE_DWORDX2
36021 
36023  {
36024  } // ~Inst_MUBUF__BUFFER_STORE_DWORDX2
36025 
36026  // Untyped buffer store 2 dwords.
36027  void
36029  {
36030  Wavefront *wf = gpuDynInst->wavefront();
36031  gpuDynInst->execUnitId = wf->execUnitId;
36032  gpuDynInst->exec_mask = wf->execMask();
36033  gpuDynInst->latency.init(gpuDynInst->computeUnit());
36034  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
36035 
36036  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
36037  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
36038  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
36040  ConstVecOperandU32 data0(gpuDynInst, extData.VDATA);
36041  ConstVecOperandU32 data1(gpuDynInst, extData.VDATA + 1);
36042 
36043  rsrcDesc.read();
36044  offset.read();
36045  data0.read();
36046  data1.read();
36047 
36048  int inst_offset = instData.OFFSET;
36049 
36050  if (!instData.IDXEN && !instData.OFFEN) {
36053  addr0, addr1, rsrcDesc, offset, inst_offset);
36054  } else if (!instData.IDXEN && instData.OFFEN) {
36055  addr0.read();
36058  addr0, addr1, rsrcDesc, offset, inst_offset);
36059  } else if (instData.IDXEN && !instData.OFFEN) {
36060  addr0.read();
36063  addr1, addr0, rsrcDesc, offset, inst_offset);
36064  } else {
36065  addr0.read();
36066  addr1.read();
36069  addr1, addr0, rsrcDesc, offset, inst_offset);
36070  }
36071 
36072  if (isLocalMem()) {
36073  gpuDynInst->computeUnit()->localMemoryPipe
36074  .issueRequest(gpuDynInst);
36075  wf->wrLmReqsInPipe--;
36076  wf->outstandingReqsWrLm++;
36077  } else {
36078  gpuDynInst->computeUnit()->globalMemoryPipe
36079  .issueRequest(gpuDynInst);
36080  wf->wrGmReqsInPipe--;
36081  wf->outstandingReqsWrGm++;
36082  }
36083 
36084  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
36085  if (gpuDynInst->exec_mask[lane]) {
36086  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane * 4]
36087  = data0[lane];
36088  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane*4 + 1]
36089  = data1[lane];
36090  }
36091  }
36092 
36093  wf->outstandingReqs++;
36095  } // execute
36096 
36097  void
36099  {
36100  initMemWrite<2>(gpuDynInst);
36101  } // initiateAcc
36102 
36103  void
36105  {
36106  } // completeAcc
36107 
36110  : Inst_MUBUF(iFmt, "buffer_store_dwordx3")
36111  {
36112  setFlag(MemoryRef);
36113  setFlag(Store);
36114  if (instData.LDS) {
36115  setFlag(GroupSegment);
36116  } else {
36117  setFlag(GlobalSegment);
36118  }
36119  } // Inst_MUBUF__BUFFER_STORE_DWORDX3
36120 
36122  {
36123  } // ~Inst_MUBUF__BUFFER_STORE_DWORDX3
36124 
36125  // Untyped buffer store 3 dwords.
36126  void
36128  {
36129  Wavefront *wf = gpuDynInst->wavefront();
36130  gpuDynInst->execUnitId = wf->execUnitId;
36131  gpuDynInst->exec_mask = wf->execMask();
36132  gpuDynInst->latency.init(gpuDynInst->computeUnit());
36133  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
36134 
36135  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
36136  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
36137  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
36139  ConstVecOperandU32 data0(gpuDynInst, extData.VDATA);
36140  ConstVecOperandU32 data1(gpuDynInst, extData.VDATA + 1);
36141  ConstVecOperandU32 data2(gpuDynInst, extData.VDATA + 2);
36142 
36143  rsrcDesc.read();
36144  offset.read();
36145  data0.read();
36146  data1.read();
36147  data2.read();
36148 
36149  int inst_offset = instData.OFFSET;
36150 
36151  if (!instData.IDXEN && !instData.OFFEN) {
36154  addr0, addr1, rsrcDesc, offset, inst_offset);
36155  } else if (!instData.IDXEN && instData.OFFEN) {
36156  addr0.read();
36159  addr0, addr1, rsrcDesc, offset, inst_offset);
36160  } else if (instData.IDXEN && !instData.OFFEN) {
36161  addr0.read();
36164  addr1, addr0, rsrcDesc, offset, inst_offset);
36165  } else {
36166  addr0.read();
36167  addr1.read();
36170  addr1, addr0, rsrcDesc, offset, inst_offset);
36171  }
36172 
36173  if (isLocalMem()) {
36174  gpuDynInst->computeUnit()->localMemoryPipe
36175  .issueRequest(gpuDynInst);
36176  wf->wrLmReqsInPipe--;
36177  wf->outstandingReqsWrLm++;
36178  } else {
36179  gpuDynInst->computeUnit()->globalMemoryPipe
36180  .issueRequest(gpuDynInst);
36181  wf->wrGmReqsInPipe--;
36182  wf->outstandingReqsWrGm++;
36183  }
36184 
36185  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
36186  if (gpuDynInst->exec_mask[lane]) {
36187  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane * 4]
36188  = data0[lane];
36189  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane*4 + 1]
36190  = data1[lane];
36191  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane*4 + 2]
36192  = data2[lane];
36193  }
36194  }
36195 
36196  wf->outstandingReqs++;
36198  } // execute
36199 
36200  void
36202  {
36203  initMemWrite<3>(gpuDynInst);
36204  } // initiateAcc
36205 
36206  void
36208  {
36209  } // completeAcc
36210 
36213  : Inst_MUBUF(iFmt, "buffer_store_dwordx4")
36214  {
36215  setFlag(MemoryRef);
36216  setFlag(Store);
36217  if (instData.LDS) {
36218  setFlag(GroupSegment);
36219  } else {
36220  setFlag(GlobalSegment);
36221  }
36222  } // Inst_MUBUF__BUFFER_STORE_DWORDX4
36223 
36225  {
36226  } // ~Inst_MUBUF__BUFFER_STORE_DWORDX4
36227 
36228  // Untyped buffer store 4 dwords.
36229  void
36231  {
36232  Wavefront *wf = gpuDynInst->wavefront();
36233  gpuDynInst->execUnitId = wf->execUnitId;
36234  gpuDynInst->exec_mask = wf->execMask();
36235  gpuDynInst->latency.init(gpuDynInst->computeUnit());
36236  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
36237 
36238  ConstVecOperandU32 addr0(gpuDynInst, extData.VADDR);
36239  ConstVecOperandU32 addr1(gpuDynInst, extData.VADDR + 1);
36240  ConstScalarOperandU128 rsrcDesc(gpuDynInst, extData.SRSRC * 4);
36242  ConstVecOperandU32 data0(gpuDynInst, extData.VDATA);
36243  ConstVecOperandU32 data1(gpuDynInst, extData.VDATA + 1);
36244  ConstVecOperandU32 data2(gpuDynInst, extData.VDATA + 2);
36245  ConstVecOperandU32 data3(gpuDynInst, extData.VDATA + 3);
36246 
36247  rsrcDesc.read();
36248  offset.read();
36249  data0.read();
36250  data1.read();
36251  data2.read();
36252  data3.read();
36253 
36254  int inst_offset = instData.OFFSET;
36255 
36256  if (!instData.IDXEN && !instData.OFFEN) {
36259  addr0, addr1, rsrcDesc, offset, inst_offset);
36260  } else if (!instData.IDXEN && instData.OFFEN) {
36261  addr0.read();
36264  addr0, addr1, rsrcDesc, offset, inst_offset);
36265  } else if (instData.IDXEN && !instData.OFFEN) {
36266  addr0.read();
36269  addr1, addr0, rsrcDesc, offset, inst_offset);
36270  } else {
36271  addr0.read();
36272  addr1.read();
36275  addr1, addr0, rsrcDesc, offset, inst_offset);
36276  }
36277 
36278  if (isLocalMem()) {
36279  gpuDynInst->computeUnit()->localMemoryPipe
36280  .issueRequest(gpuDynInst);
36281  wf->wrLmReqsInPipe--;
36282  wf->outstandingReqsWrLm++;
36283  } else {
36284  gpuDynInst->computeUnit()->globalMemoryPipe
36285  .issueRequest(gpuDynInst);
36286  wf->wrGmReqsInPipe--;
36287  wf->outstandingReqsWrGm++;
36288  }
36289 
36290  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
36291  if (gpuDynInst->exec_mask[lane]) {
36292  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane * 4]
36293  = data0[lane];
36294  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane*4 + 1]
36295  = data1[lane];
36296  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane*4 + 2]
36297  = data2[lane];
36298  (reinterpret_cast<VecElemU32*>(gpuDynInst->d_data))[lane*4 + 3]
36299  = data3[lane];
36300  }
36301  }
36302 
36303  wf->outstandingReqs++;
36305  } // execute
36306 
36307  void
36309  {
36310  initMemWrite<4>(gpuDynInst);
36311  } // initiateAcc
36312 
36313  void
36315  {
36316  } // completeAcc
36317 
36320  : Inst_MUBUF(iFmt, "buffer_store_lds_dword")
36321  {
36322  setFlag(GlobalSegment);
36323  } // Inst_MUBUF__BUFFER_STORE_LDS_DWORD
36324 
36326  {
36327  } // ~Inst_MUBUF__BUFFER_STORE_LDS_DWORD
36328 
36329  // Store one DWORD from LDS memory to system memory without utilizing
36330  // VGPRs.
36331  void
36333  {
36335  }
36336 
36338  : Inst_MUBUF(iFmt, "buffer_wbinvl1")
36339  {
36340  setFlag(MemoryRef);
36341  setFlag(GPUStaticInst::MemSync);
36342  setFlag(GlobalSegment);
36343  setFlag(MemSync);
36344  } // Inst_MUBUF__BUFFER_WBINVL1
36345 
36347  {
36348  } // ~Inst_MUBUF__BUFFER_WBINVL1
36349 
36350  // Write back and invalidate the shader L1.
36351  // Always returns ACK to shader.
36352  void
36354  {
36355  Wavefront *wf = gpuDynInst->wavefront();
36356  gpuDynInst->execUnitId = wf->execUnitId;
36357  gpuDynInst->exec_mask = wf->execMask();
36358  gpuDynInst->latency.init(gpuDynInst->computeUnit());
36359  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
36360 
36361  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
36362  gpuDynInst->computeUnit()->globalMemoryPipe.
36363  issueRequest(gpuDynInst);
36364  wf->wrGmReqsInPipe--;
36365  wf->rdGmReqsInPipe--;
36366 
36367  wf->outstandingReqsWrGm++;
36368  wf->outstandingReqsRdGm++;
36369  } else {
36370  fatal("Non global flat instructions not implemented yet.\n");
36371  }
36372 
36373  wf->outstandingReqs++;
36375  }
36376 
36377  void
36379  {
36380  injectGlobalMemFence(gpuDynInst);
36381  } // initiateAcc
36382 
36383  void
36385  {
36386  } // completeAcc
36387 
36390  : Inst_MUBUF(iFmt, "buffer_wbinvl1_vol") {
36398  setFlag(MemoryRef);
36399  setFlag(GPUStaticInst::MemSync);
36400  setFlag(GlobalSegment);
36401  setFlag(MemSync);
36402  } // Inst_MUBUF__BUFFER_WBINVL1_VOL
36403 
36405  {
36406  } // ~Inst_MUBUF__BUFFER_WBINVL1_VOL
36407 
36408  // Write back and invalidate the shader L1 only for lines that are marked
36409  // volatile. Always returns ACK to shader.
36410  void
36412  {
36413  Wavefront *wf = gpuDynInst->wavefront();
36414  gpuDynInst->execUnitId = wf->execUnitId;
36415  gpuDynInst->exec_mask = wf->execMask();
36416  gpuDynInst->latency.init(gpuDynInst->computeUnit());
36417  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
36418 
36419  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
36420  gpuDynInst->computeUnit()->globalMemoryPipe.
36421  issueRequest(gpuDynInst);
36422  wf->wrGmReqsInPipe--;
36423  wf->rdGmReqsInPipe--;
36424 
36425  wf->outstandingReqsWrGm++;
36426  wf->outstandingReqsRdGm++;
36427  } else {
36428  fatal("Non global flat instructions not implemented yet.\n");
36429  }
36430 
36431  wf->outstandingReqs++;
36433  }
36434  void
36436  {
36437  injectGlobalMemFence(gpuDynInst);
36438  } // initiateAcc
36439  void
36441  {
36442  } // completeAcc
36443 
36446  : Inst_MUBUF(iFmt, "buffer_atomic_swap")
36447  {
36448  setFlag(AtomicExch);
36449  if (instData.GLC) {
36450  setFlag(AtomicReturn);
36451  } else {
36452  setFlag(AtomicNoReturn);
36453  } // if
36454  setFlag(MemoryRef);
36455  setFlag(GlobalSegment);
36456  } // Inst_MUBUF__BUFFER_ATOMIC_SWAP
36457 
36459  {
36460  } // ~Inst_MUBUF__BUFFER_ATOMIC_SWAP
36461 
36462  // tmp = MEM[ADDR];
36463  // MEM[ADDR] = DATA;
36464  // RETURN_DATA = tmp.
36465  void
36467  {
36469  }
36470 
36473  : Inst_MUBUF(iFmt, "buffer_atomic_cmpswap")
36474  {
36475  setFlag(AtomicCAS);
36476  if (instData.GLC) {
36477  setFlag(AtomicReturn);
36478  } else {
36479  setFlag(AtomicNoReturn);
36480  }
36481  setFlag(MemoryRef);
36482  setFlag(GlobalSegment);
36483  } // Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP
36484 
36486  {
36487  } // ~Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP
36488 
36489  // tmp = MEM[ADDR];
36490  // src = DATA[0];
36491  // cmp = DATA[1];
36492  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
36493  // RETURN_DATA[0] = tmp.
36494  void
36496  {
36498  }
36499 
36502  : Inst_MUBUF(iFmt, "buffer_atomic_add")
36503  {
36504  setFlag(AtomicAdd);
36505  if (instData.GLC) {
36506  setFlag(AtomicReturn);
36507  } else {
36508  setFlag(AtomicNoReturn);
36509  } // if
36510  setFlag(MemoryRef);
36511  setFlag(GlobalSegment);
36512  } // Inst_MUBUF__BUFFER_ATOMIC_ADD
36513 
36515  {
36516  } // ~Inst_MUBUF__BUFFER_ATOMIC_ADD
36517 
36518  // tmp = MEM[ADDR];
36519  // MEM[ADDR] += DATA;
36520  // RETURN_DATA = tmp.
36521  void
36523  {
36525  }
36526 
36529  : Inst_MUBUF(iFmt, "buffer_atomic_sub")
36530  {
36531  setFlag(AtomicSub);
36532  if (instData.GLC) {
36533  setFlag(AtomicReturn);
36534  } else {
36535  setFlag(AtomicNoReturn);
36536  }
36537  setFlag(MemoryRef);
36538  setFlag(GlobalSegment);
36539  } // Inst_MUBUF__BUFFER_ATOMIC_SUB
36540 
36542  {
36543  } // ~Inst_MUBUF__BUFFER_ATOMIC_SUB
36544 
36545  // tmp = MEM[ADDR];
36546  // MEM[ADDR] -= DATA;
36547  // RETURN_DATA = tmp.
36548  void
36550  {
36552  }
36553 
36556  : Inst_MUBUF(iFmt, "buffer_atomic_smin")
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_SMIN
36567 
36569  {
36570  } // ~Inst_MUBUF__BUFFER_ATOMIC_SMIN
36571 
36572  // tmp = MEM[ADDR];
36573  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (signed compare);
36574  // RETURN_DATA = tmp.
36575  void
36577  {
36579  }
36580 
36583  : Inst_MUBUF(iFmt, "buffer_atomic_umin")
36584  {
36585  setFlag(AtomicMin);
36586  if (instData.GLC) {
36587  setFlag(AtomicReturn);
36588  } else {
36589  setFlag(AtomicNoReturn);
36590  }
36591  setFlag(MemoryRef);
36592  setFlag(GlobalSegment);
36593  } // Inst_MUBUF__BUFFER_ATOMIC_UMIN
36594 
36596  {
36597  } // ~Inst_MUBUF__BUFFER_ATOMIC_UMIN
36598 
36599  // tmp = MEM[ADDR];
36600  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (unsigned compare);
36601  // RETURN_DATA = tmp.
36602  void
36604  {
36606  }
36607 
36610  : Inst_MUBUF(iFmt, "buffer_atomic_smax")
36611  {
36612  setFlag(AtomicMax);
36613  if (instData.GLC) {
36614  setFlag(AtomicReturn);
36615  } else {
36616  setFlag(AtomicNoReturn);
36617  }
36618  setFlag(MemoryRef);
36619  setFlag(GlobalSegment);
36620  } // Inst_MUBUF__BUFFER_ATOMIC_SMAX
36621 
36623  {
36624  } // ~Inst_MUBUF__BUFFER_ATOMIC_SMAX
36625 
36626  // tmp = MEM[ADDR];
36627  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (signed compare);
36628  // RETURN_DATA = tmp.
36629  void
36631  {
36633  }
36634 
36637  : Inst_MUBUF(iFmt, "buffer_atomic_umax")
36638  {
36639  setFlag(AtomicMax);
36640  if (instData.GLC) {
36641  setFlag(AtomicReturn);
36642  } else {
36643  setFlag(AtomicNoReturn);
36644  } // if
36645  setFlag(MemoryRef);
36646  setFlag(GlobalSegment);
36647  } // Inst_MUBUF__BUFFER_ATOMIC_UMAX
36648 
36650  {
36651  } // ~Inst_MUBUF__BUFFER_ATOMIC_UMAX
36652 
36653  // tmp = MEM[ADDR];
36654  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (unsigned compare);
36655  // RETURN_DATA = tmp.
36656  void
36658  {
36660  }
36661 
36664  : Inst_MUBUF(iFmt, "buffer_atomic_and")
36665  {
36666  setFlag(AtomicAnd);
36667  if (instData.GLC) {
36668  setFlag(AtomicReturn);
36669  } else {
36670  setFlag(AtomicNoReturn);
36671  }
36672  setFlag(MemoryRef);
36673  setFlag(GlobalSegment);
36674  } // Inst_MUBUF__BUFFER_ATOMIC_AND
36675 
36677  {
36678  } // ~Inst_MUBUF__BUFFER_ATOMIC_AND
36679 
36680  // tmp = MEM[ADDR];
36681  // MEM[ADDR] &= DATA;
36682  // RETURN_DATA = tmp.
36683  void
36685  {
36687  }
36688 
36691  : Inst_MUBUF(iFmt, "buffer_atomic_or")
36692  {
36693  setFlag(AtomicOr);
36694  if (instData.GLC) {
36695  setFlag(AtomicReturn);
36696  } else {
36697  setFlag(AtomicNoReturn);
36698  }
36699  setFlag(MemoryRef);
36700  setFlag(GlobalSegment);
36701  } // Inst_MUBUF__BUFFER_ATOMIC_OR
36702 
36704  {
36705  } // ~Inst_MUBUF__BUFFER_ATOMIC_OR
36706 
36707  // tmp = MEM[ADDR];
36708  // MEM[ADDR] |= DATA;
36709  // RETURN_DATA = tmp.
36710  void
36712  {
36714  }
36715 
36718  : Inst_MUBUF(iFmt, "buffer_atomic_xor")
36719  {
36720  setFlag(AtomicXor);
36721  if (instData.GLC) {
36722  setFlag(AtomicReturn);
36723  } else {
36724  setFlag(AtomicNoReturn);
36725  }
36726  setFlag(MemoryRef);
36727  setFlag(GlobalSegment);
36728  } // Inst_MUBUF__BUFFER_ATOMIC_XOR
36729 
36731  {
36732  } // ~Inst_MUBUF__BUFFER_ATOMIC_XOR
36733 
36734  // tmp = MEM[ADDR];
36735  // MEM[ADDR] ^= DATA;
36736  // RETURN_DATA = tmp.
36737  void
36739  {
36741  }
36742 
36745  : Inst_MUBUF(iFmt, "buffer_atomic_inc")
36746  {
36747  setFlag(AtomicInc);
36748  if (instData.GLC) {
36749  setFlag(AtomicReturn);
36750  } else {
36751  setFlag(AtomicNoReturn);
36752  }
36753  setFlag(MemoryRef);
36754  setFlag(GlobalSegment);
36755  } // Inst_MUBUF__BUFFER_ATOMIC_INC
36756 
36758  {
36759  } // ~Inst_MUBUF__BUFFER_ATOMIC_INC
36760 
36761  // tmp = MEM[ADDR];
36762  // MEM[ADDR] = (tmp >= DATA) ? 0 : tmp + 1 (unsigned compare);
36763  // RETURN_DATA = tmp.
36764  void
36766  {
36768  }
36769 
36772  : Inst_MUBUF(iFmt, "buffer_atomic_dec")
36773  {
36774  setFlag(AtomicDec);
36775  if (instData.GLC) {
36776  setFlag(AtomicReturn);
36777  } else {
36778  setFlag(AtomicNoReturn);
36779  }
36780  setFlag(MemoryRef);
36781  setFlag(GlobalSegment);
36782  } // Inst_MUBUF__BUFFER_ATOMIC_DEC
36783 
36785  {
36786  } // ~Inst_MUBUF__BUFFER_ATOMIC_DEC
36787 
36788  // tmp = MEM[ADDR];
36789  // MEM[ADDR] = (tmp == 0 || tmp > DATA) ? DATA : tmp - 1
36790  // (unsigned compare); RETURN_DATA = tmp.
36791  void
36793  {
36795  }
36796 
36799  : Inst_MUBUF(iFmt, "buffer_atomic_swap_x2")
36800  {
36801  setFlag(AtomicExch);
36802  if (instData.GLC) {
36803  setFlag(AtomicReturn);
36804  } else {
36805  setFlag(AtomicNoReturn);
36806  }
36807  setFlag(MemoryRef);
36808  setFlag(GlobalSegment);
36809  } // Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2
36810 
36812  {
36813  } // ~Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2
36814 
36815  // tmp = MEM[ADDR];
36816  // MEM[ADDR] = DATA[0:1];
36817  // RETURN_DATA[0:1] = tmp.
36818  void
36820  {
36822  }
36823 
36826  : Inst_MUBUF(iFmt, "buffer_atomic_cmpswap_x2")
36827  {
36828  setFlag(AtomicCAS);
36829  if (instData.GLC) {
36830  setFlag(AtomicReturn);
36831  } else {
36832  setFlag(AtomicNoReturn);
36833  }
36834  setFlag(MemoryRef);
36835  setFlag(GlobalSegment);
36836  } // Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2
36837 
36840  {
36841  } // ~Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2
36842 
36843  // tmp = MEM[ADDR];
36844  // src = DATA[0:1];
36845  // cmp = DATA[2:3];
36846  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
36847  // RETURN_DATA[0:1] = tmp.
36848  void
36850  {
36852  }
36853 
36856  : Inst_MUBUF(iFmt, "buffer_atomic_add_x2")
36857  {
36858  setFlag(AtomicAdd);
36859  if (instData.GLC) {
36860  setFlag(AtomicReturn);
36861  } else {
36862  setFlag(AtomicNoReturn);
36863  }
36864  setFlag(MemoryRef);
36865  setFlag(GlobalSegment);
36866  } // Inst_MUBUF__BUFFER_ATOMIC_ADD_X2
36867 
36869  {
36870  } // ~Inst_MUBUF__BUFFER_ATOMIC_ADD_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_sub_x2")
36884  {
36885  setFlag(AtomicSub);
36886  if (instData.GLC) {
36887  setFlag(AtomicReturn);
36888  } else {
36889  setFlag(AtomicNoReturn);
36890  }
36891  setFlag(MemoryRef);
36892  setFlag(GlobalSegment);
36893  } // Inst_MUBUF__BUFFER_ATOMIC_SUB_X2
36894 
36896  {
36897  } // ~Inst_MUBUF__BUFFER_ATOMIC_SUB_X2
36898 
36899  // tmp = MEM[ADDR];
36900  // MEM[ADDR] -= DATA[0:1];
36901  // RETURN_DATA[0:1] = tmp.
36902  void
36904  {
36906  }
36907 
36910  : Inst_MUBUF(iFmt, "buffer_atomic_smin_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_SMIN_X2
36921 
36923  {
36924  } // ~Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2
36925 
36926  // tmp = MEM[ADDR];
36927  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (signed compare);
36928  // RETURN_DATA[0:1] = tmp.
36929  void
36931  {
36933  }
36934 
36937  : Inst_MUBUF(iFmt, "buffer_atomic_umin_x2")
36938  {
36939  setFlag(AtomicMin);
36940  if (instData.GLC) {
36941  setFlag(AtomicReturn);
36942  } else {
36943  setFlag(AtomicNoReturn);
36944  }
36945  setFlag(MemoryRef);
36946  setFlag(GlobalSegment);
36947  } // Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2
36948 
36950  {
36951  } // ~Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2
36952 
36953  // tmp = MEM[ADDR];
36954  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (unsigned compare);
36955  // RETURN_DATA[0:1] = tmp.
36956  void
36958  {
36960  }
36961 
36964  : Inst_MUBUF(iFmt, "buffer_atomic_smax_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_SMAX_X2
36975 
36977  {
36978  } // ~Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2
36979 
36980  // tmp = MEM[ADDR];
36981  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (signed compare);
36982  // RETURN_DATA[0:1] = tmp.
36983  void
36985  {
36987  }
36988 
36991  : Inst_MUBUF(iFmt, "buffer_atomic_umax_x2")
36992  {
36993  setFlag(AtomicMax);
36994  if (instData.GLC) {
36995  setFlag(AtomicReturn);
36996  } else {
36997  setFlag(AtomicNoReturn);
36998  }
36999  setFlag(MemoryRef);
37000  setFlag(GlobalSegment);
37001  } // Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2
37002 
37004  {
37005  } // ~Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2
37006 
37007  // tmp = MEM[ADDR];
37008  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (unsigned compare);
37009  // RETURN_DATA[0:1] = tmp.
37010  void
37012  {
37014  }
37015 
37018  : Inst_MUBUF(iFmt, "buffer_atomic_and_x2")
37019  {
37020  setFlag(AtomicAnd);
37021  if (instData.GLC) {
37022  setFlag(AtomicReturn);
37023  } else {
37024  setFlag(AtomicNoReturn);
37025  }
37026  setFlag(MemoryRef);
37027  setFlag(GlobalSegment);
37028  } // Inst_MUBUF__BUFFER_ATOMIC_AND_X2
37029 
37031  {
37032  } // ~Inst_MUBUF__BUFFER_ATOMIC_AND_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_or_x2")
37046  {
37047  setFlag(AtomicOr);
37048  if (instData.GLC) {
37049  setFlag(AtomicReturn);
37050  } else {
37051  setFlag(AtomicNoReturn);
37052  }
37053  setFlag(MemoryRef);
37054  setFlag(GlobalSegment);
37055  } // Inst_MUBUF__BUFFER_ATOMIC_OR_X2
37056 
37058  {
37059  } // ~Inst_MUBUF__BUFFER_ATOMIC_OR_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_xor_x2")
37073  {
37074  setFlag(AtomicXor);
37075  if (instData.GLC) {
37076  setFlag(AtomicReturn);
37077  } else {
37078  setFlag(AtomicNoReturn);
37079  }
37080  setFlag(MemoryRef);
37081  setFlag(GlobalSegment);
37082  } // Inst_MUBUF__BUFFER_ATOMIC_XOR_X2
37083 
37085  {
37086  } // ~Inst_MUBUF__BUFFER_ATOMIC_XOR_X2
37087 
37088  // tmp = MEM[ADDR];
37089  // MEM[ADDR] ^= DATA[0:1];
37090  // RETURN_DATA[0:1] = tmp.
37091  void
37093  {
37095  }
37096 
37099  : Inst_MUBUF(iFmt, "buffer_atomic_inc_x2")
37100  {
37101  setFlag(AtomicInc);
37102  if (instData.GLC) {
37103  setFlag(AtomicReturn);
37104  } else {
37105  setFlag(AtomicNoReturn);
37106  }
37107  setFlag(MemoryRef);
37108  setFlag(GlobalSegment);
37109  } // Inst_MUBUF__BUFFER_ATOMIC_INC_X2
37110 
37112  {
37113  } // ~Inst_MUBUF__BUFFER_ATOMIC_INC_X2
37114 
37115  // tmp = MEM[ADDR];
37116  // MEM[ADDR] = (tmp >= DATA[0:1]) ? 0 : tmp + 1 (unsigned compare);
37117  // RETURN_DATA[0:1] = tmp.
37118  void
37120  {
37122  }
37123 
37126  : Inst_MUBUF(iFmt, "buffer_atomic_dec_x2")
37127  {
37128  setFlag(AtomicDec);
37129  if (instData.GLC) {
37130  setFlag(AtomicReturn);
37131  } else {
37132  setFlag(AtomicNoReturn);
37133  }
37134  setFlag(MemoryRef);
37135  setFlag(GlobalSegment);
37136  } // Inst_MUBUF__BUFFER_ATOMIC_DEC_X2
37137 
37139  {
37140  } // ~Inst_MUBUF__BUFFER_ATOMIC_DEC_X2
37141 
37142  // tmp = MEM[ADDR];
37143  // MEM[ADDR] = (tmp == 0 || tmp > DATA[0:1]) ? DATA[0:1] : tmp - 1
37144  // (unsigned compare);
37145  // RETURN_DATA[0:1] = tmp.
37146  void
37148  {
37150  }
37151 
37154  : Inst_MTBUF(iFmt, "tbuffer_load_format_x")
37155  {
37156  setFlag(MemoryRef);
37157  setFlag(Load);
37158  setFlag(GlobalSegment);
37159  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_X
37160 
37162  {
37163  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_X
37164 
37165  // Typed buffer load 1 dword with format conversion.
37166  void
37168  {
37170  }
37171 
37172  void
37174  {
37175  } // initiateAcc
37176 
37177  void
37179  {
37180  }
37181 
37184  : Inst_MTBUF(iFmt, "tbuffer_load_format_xy")
37185  {
37186  setFlag(MemoryRef);
37187  setFlag(Load);
37188  setFlag(GlobalSegment);
37189  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY
37190 
37192  {
37193  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY
37194 
37195  // Typed buffer load 2 dwords with format conversion.
37196  void
37198  {
37200  }
37201 
37202  void
37204  {
37205  } // initiateAcc
37206 
37207  void
37209  {
37210  }
37211 
37214  : Inst_MTBUF(iFmt, "tbuffer_load_format_xyz")
37215  {
37216  setFlag(MemoryRef);
37217  setFlag(Load);
37218  setFlag(GlobalSegment);
37219  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ
37220 
37222  {
37223  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ
37224 
37225  // Typed buffer load 3 dwords with format conversion.
37226  void
37228  {
37230  }
37231 
37232  void
37234  {
37235  } // initiateAcc
37236 
37237  void
37239  {
37240  }
37241 
37244  : Inst_MTBUF(iFmt, "tbuffer_load_format_xyzw")
37245  {
37246  setFlag(MemoryRef);
37247  setFlag(Load);
37248  setFlag(GlobalSegment);
37249  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW
37250 
37253  {
37254  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW
37255 
37256  // Typed buffer load 4 dwords with format conversion.
37257  void
37259  {
37261  }
37262 
37263  void
37265  {
37266  } // initiateAcc
37267 
37268  void
37270  {
37271  }
37272 
37275  : Inst_MTBUF(iFmt, "tbuffer_store_format_x")
37276  {
37277  setFlag(MemoryRef);
37278  setFlag(Store);
37279  setFlag(GlobalSegment);
37280  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_X
37281 
37283  {
37284  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_X
37285 
37286  // Typed buffer store 1 dword with format conversion.
37287  void
37289  {
37291  }
37292 
37293  void
37295  {
37296  } // initiateAcc
37297 
37298  void
37300  {
37301  }
37302 
37305  : Inst_MTBUF(iFmt, "tbuffer_store_format_xy")
37306  {
37307  setFlag(MemoryRef);
37308  setFlag(Store);
37309  setFlag(GlobalSegment);
37310  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_XY
37311 
37313  {
37314  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_XY
37315 
37316  // Typed buffer store 2 dwords with format conversion.
37317  void
37319  {
37321  }
37322 
37323  void
37325  {
37326  } // initiateAcc
37327 
37328  void
37330  {
37331  }
37332 
37335  : Inst_MTBUF(iFmt, "tbuffer_store_format_xyz")
37336  {
37337  setFlag(MemoryRef);
37338  setFlag(Store);
37339  setFlag(GlobalSegment);
37340  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ
37341 
37344  {
37345  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ
37346 
37347  // Typed buffer store 3 dwords with format conversion.
37348  void
37350  {
37352  }
37353 
37354  void
37356  {
37357  } // initiateAcc
37358 
37359  void
37361  {
37362  }
37363 
37366  : Inst_MTBUF(iFmt, "tbuffer_store_format_xyzw")
37367  {
37368  setFlag(MemoryRef);
37369  setFlag(Store);
37370  setFlag(GlobalSegment);
37371  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW
37372 
37375  {
37376  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW
37377 
37378  // Typed buffer store 4 dwords with format conversion.
37379  void
37381  {
37383  }
37384 
37385  void
37387  GPUDynInstPtr gpuDynInst)
37388  {
37389  } // initiateAcc
37390 
37391  void
37393  GPUDynInstPtr gpuDynInst)
37394  {
37395  }
37396 
37399  : Inst_MTBUF(iFmt, "tbuffer_load_format_d16_x")
37400  {
37401  setFlag(MemoryRef);
37402  setFlag(Load);
37403  setFlag(GlobalSegment);
37404  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X
37405 
37408  {
37409  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X
37410 
37411  // Typed buffer load 1 dword with format conversion.
37412  void
37414  {
37416  }
37417 
37418  void
37420  GPUDynInstPtr gpuDynInst)
37421  {
37422  } // initiateAcc
37423 
37424  void
37426  GPUDynInstPtr gpuDynInst)
37427  {
37428  }
37429 
37432  : Inst_MTBUF(iFmt, "tbuffer_load_format_d16_xy")
37433  {
37434  setFlag(MemoryRef);
37435  setFlag(Load);
37436  setFlag(GlobalSegment);
37437  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY
37438 
37441  {
37442  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY
37443 
37444  // Typed buffer load 2 dwords with format conversion.
37445  void
37447  {
37449  }
37450 
37451  void
37453  GPUDynInstPtr gpuDynInst)
37454  {
37455  } // initiateAcc
37456 
37457  void
37459  GPUDynInstPtr gpuDynInst)
37460  {
37461  }
37462 
37465  InFmt_MTBUF *iFmt)
37466  : Inst_MTBUF(iFmt, "tbuffer_load_format_d16_xyz")
37467  {
37468  setFlag(MemoryRef);
37469  setFlag(Load);
37470  setFlag(GlobalSegment);
37471  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ
37472 
37475  {
37476  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ
37477 
37478  // Typed buffer load 3 dwords with format conversion.
37479  void
37481  {
37483  }
37484 
37485  void
37487  GPUDynInstPtr gpuDynInst)
37488  {
37489  } // initiateAcc
37490 
37491  void
37493  GPUDynInstPtr gpuDynInst)
37494  {
37495  }
37496 
37499  InFmt_MTBUF *iFmt)
37500  : Inst_MTBUF(iFmt, "tbuffer_load_format_d16_xyzw")
37501  {
37502  setFlag(MemoryRef);
37503  setFlag(Load);
37504  setFlag(GlobalSegment);
37505  } // Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW
37506 
37509  {
37510  } // ~Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW
37511 
37512  // Typed buffer load 4 dwords with format conversion.
37513  void
37515  {
37517  }
37518 
37519  void
37521  GPUDynInstPtr gpuDynInst)
37522  {
37523  } // initiateAcc
37524 
37525  void
37527  GPUDynInstPtr gpuDynInst)
37528  {
37529  }
37530 
37533  : Inst_MTBUF(iFmt, "tbuffer_store_format_d16_x")
37534  {
37535  setFlag(MemoryRef);
37536  setFlag(Store);
37537  setFlag(GlobalSegment);
37538  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X
37539 
37542  {
37543  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X
37544 
37545  // Typed buffer store 1 dword with format conversion.
37546  void
37548  {
37550  }
37551 
37552  void
37554  GPUDynInstPtr gpuDynInst)
37555  {
37556  } // initiateAcc
37557 
37558  void
37560  GPUDynInstPtr gpuDynInst)
37561  {
37562  }
37563 
37566  : Inst_MTBUF(iFmt, "tbuffer_store_format_d16_xy")
37567  {
37568  setFlag(MemoryRef);
37569  setFlag(Store);
37570  setFlag(GlobalSegment);
37571  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY
37572 
37575  {
37576  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY
37577 
37578  // Typed buffer store 2 dwords with format conversion.
37579  void
37581  {
37583  }
37584 
37585  void
37587  GPUDynInstPtr gpuDynInst)
37588  {
37589  } // initiateAcc
37590 
37591  void
37593  GPUDynInstPtr gpuDynInst)
37594  {
37595  }
37596 
37599  : Inst_MTBUF(iFmt, "tbuffer_store_format_d16_xyz")
37600  {
37601  setFlag(MemoryRef);
37602  setFlag(Store);
37603  setFlag(GlobalSegment);
37604  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ
37605 
37608  {
37609  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ
37610 
37611  // Typed buffer store 3 dwords with format conversion.
37612  void
37614  {
37616  }
37617 
37618  void
37620  GPUDynInstPtr gpuDynInst)
37621  {
37622  } // initiateAcc
37623 
37624  void
37626  GPUDynInstPtr gpuDynInst)
37627  {
37628  }
37629 
37632  : Inst_MTBUF(iFmt, "tbuffer_store_format_d16_xyzw")
37633  {
37634  setFlag(MemoryRef);
37635  setFlag(Store);
37636  setFlag(GlobalSegment);
37637  } // Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW
37638 
37641  {
37642  } // ~Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW
37643 
37644  // Typed buffer store 4 dwords with format conversion.
37645  void
37647  GPUDynInstPtr gpuDynInst)
37648  {
37650  }
37651 
37652  void
37654  GPUDynInstPtr gpuDynInst)
37655  {
37656  } // initiateAcc
37657 
37658  void
37660  GPUDynInstPtr gpuDynInst)
37661  {
37662  }
37663 
37665  : Inst_MIMG(iFmt, "image_load")
37666  {
37667  setFlag(MemoryRef);
37668  setFlag(Load);
37669  setFlag(GlobalSegment);
37670  } // Inst_MIMG__IMAGE_LOAD
37671 
37673  {
37674  } // ~Inst_MIMG__IMAGE_LOAD
37675 
37676  // Image memory load with format conversion specified
37677  void
37679  {
37681  }
37682 
37683  void
37685  {
37686  } // initiateAcc
37687 
37688  void
37690  {
37691  }
37692 
37694  : Inst_MIMG(iFmt, "image_load_mip")
37695  {
37696  setFlag(MemoryRef);
37697  setFlag(Load);
37698  setFlag(GlobalSegment);
37699  } // Inst_MIMG__IMAGE_LOAD_MIP
37700 
37702  {
37703  } // ~Inst_MIMG__IMAGE_LOAD_MIP
37704 
37705  void
37707  {
37709  }
37710 
37711  void
37713  {
37714  } // initiateAcc
37715 
37716  void
37718  {
37719  }
37720 
37722  : Inst_MIMG(iFmt, "image_load_pck")
37723  {
37724  setFlag(MemoryRef);
37725  setFlag(Load);
37726  setFlag(GlobalSegment);
37727  } // Inst_MIMG__IMAGE_LOAD_PCK
37728 
37730  {
37731  } // ~Inst_MIMG__IMAGE_LOAD_PCK
37732 
37733  void
37735  {
37737  }
37738 
37739  void
37741  {
37742  } // initiateAcc
37743 
37744  void
37746  {
37747  }
37748 
37750  InFmt_MIMG *iFmt)
37751  : Inst_MIMG(iFmt, "image_load_pck_sgn")
37752  {
37753  setFlag(MemoryRef);
37754  setFlag(Load);
37755  setFlag(GlobalSegment);
37756  } // Inst_MIMG__IMAGE_LOAD_PCK_SGN
37757 
37759  {
37760  } // ~Inst_MIMG__IMAGE_LOAD_PCK_SGN
37761 
37762  // Image memory load with with no format conversion and sign extension
37763  void
37765  {
37767  }
37768 
37769  void
37771  {
37772  } // initiateAcc
37773 
37774  void
37776  {
37777  }
37778 
37780  InFmt_MIMG *iFmt)
37781  : Inst_MIMG(iFmt, "image_load_mip_pck")
37782  {
37783  setFlag(MemoryRef);
37784  setFlag(Load);
37785  setFlag(GlobalSegment);
37786  } // Inst_MIMG__IMAGE_LOAD_MIP_PCK
37787 
37789  {
37790  } // ~Inst_MIMG__IMAGE_LOAD_MIP_PCK
37791 
37792  // Image memory load with user-supplied mip level, no format conversion
37793  void
37795  {
37797  }
37798 
37799  void
37801  {
37802  } // initiateAcc
37803 
37804  void
37806  {
37807  }
37808 
37810  InFmt_MIMG *iFmt)
37811  : Inst_MIMG(iFmt, "image_load_mip_pck_sgn")
37812  {
37813  setFlag(MemoryRef);
37814  setFlag(Load);
37815  setFlag(GlobalSegment);
37816  } // Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN
37817 
37819  {
37820  } // ~Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN
37821 
37822  // Image memory load with user-supplied mip level, no format conversion.
37823  void
37825  {
37827  }
37828 
37829  void
37831  {
37832  } // initiateAcc
37833 
37834  void
37836  {
37837  }
37838 
37840  : Inst_MIMG(iFmt, "image_store")
37841  {
37842  setFlag(MemoryRef);
37843  setFlag(Store);
37844  setFlag(GlobalSegment);
37845  } // Inst_MIMG__IMAGE_STORE
37846 
37848  {
37849  } // ~Inst_MIMG__IMAGE_STORE
37850 
37851  // Image memory store with format conversion specified
37852  void
37854  {
37856  }
37857 
37858  void
37860  {
37861  } // initiateAcc
37862 
37863  void
37865  {
37866  }
37867 
37869  : Inst_MIMG(iFmt, "image_store_mip")
37870  {
37871  setFlag(MemoryRef);
37872  setFlag(Store);
37873  setFlag(GlobalSegment);
37874  } // Inst_MIMG__IMAGE_STORE_MIP
37875 
37877  {
37878  } // ~Inst_MIMG__IMAGE_STORE_MIP
37879 
37880  void
37882  {
37884  }
37885 
37886  void
37888  {
37889  } // initiateAcc
37890 
37891  void
37893  {
37894  }
37895 
37897  : Inst_MIMG(iFmt, "image_store_pck")
37898  {
37899  setFlag(MemoryRef);
37900  setFlag(Store);
37901  setFlag(GlobalSegment);
37902  } // Inst_MIMG__IMAGE_STORE_PCK
37903 
37905  {
37906  } // ~Inst_MIMG__IMAGE_STORE_PCK
37907 
37908  // Image memory store of packed data without format conversion.
37909  void
37911  {
37913  }
37914 
37915  void
37917  {
37918  } // initiateAcc
37919 
37920  void
37922  {
37923  }
37924 
37926  InFmt_MIMG *iFmt)
37927  : Inst_MIMG(iFmt, "image_store_mip_pck")
37928  {
37929  setFlag(MemoryRef);
37930  setFlag(Store);
37931  setFlag(GlobalSegment);
37932  } // Inst_MIMG__IMAGE_STORE_MIP_PCK
37933 
37935  {
37936  } // ~Inst_MIMG__IMAGE_STORE_MIP_PCK
37937 
37938  // Image memory store of packed data without format conversion
37939  void
37941  {
37943  }
37944 
37945  void
37947  {
37948  } // initiateAcc
37949 
37950  void
37952  {
37953  }
37954 
37956  InFmt_MIMG *iFmt)
37957  : Inst_MIMG(iFmt, "image_get_resinfo")
37958  {
37959  setFlag(GlobalSegment);
37960  } // Inst_MIMG__IMAGE_GET_RESINFO
37961 
37963  {
37964  } // ~Inst_MIMG__IMAGE_GET_RESINFO
37965 
37966  void
37968  {
37970  }
37971 
37973  InFmt_MIMG *iFmt)
37974  : Inst_MIMG(iFmt, "image_atomic_swap")
37975  {
37976  setFlag(AtomicExch);
37977  if (instData.GLC) {
37978  setFlag(AtomicReturn);
37979  } else {
37980  setFlag(AtomicNoReturn);
37981  }
37982  setFlag(MemoryRef);
37983  setFlag(GlobalSegment);
37984  } // Inst_MIMG__IMAGE_ATOMIC_SWAP
37985 
37987  {
37988  } // ~Inst_MIMG__IMAGE_ATOMIC_SWAP
37989 
37990  // tmp = MEM[ADDR];
37991  // MEM[ADDR] = DATA;
37992  // RETURN_DATA = tmp.
37993  void
37995  {
37997  }
37998 
38000  InFmt_MIMG *iFmt)
38001  : Inst_MIMG(iFmt, "image_atomic_cmpswap")
38002  {
38003  setFlag(AtomicCAS);
38004  if (instData.GLC) {
38005  setFlag(AtomicReturn);
38006  } else {
38007  setFlag(AtomicNoReturn);
38008  }
38009  setFlag(MemoryRef);
38010  setFlag(GlobalSegment);
38011  } // Inst_MIMG__IMAGE_ATOMIC_CMPSWAP
38012 
38014  {
38015  } // ~Inst_MIMG__IMAGE_ATOMIC_CMPSWAP
38016 
38017  // tmp = MEM[ADDR];
38018  // src = DATA[0];
38019  // cmp = DATA[1];
38020  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
38021  // RETURN_DATA[0] = tmp.
38022  void
38024  {
38026  }
38027 
38029  : Inst_MIMG(iFmt, "image_atomic_add")
38030  {
38031  setFlag(AtomicAdd);
38032  if (instData.GLC) {
38033  setFlag(AtomicReturn);
38034  } else {
38035  setFlag(AtomicNoReturn);
38036  }
38037  setFlag(MemoryRef);
38038  setFlag(GlobalSegment);
38039  } // Inst_MIMG__IMAGE_ATOMIC_ADD
38040 
38042  {
38043  } // ~Inst_MIMG__IMAGE_ATOMIC_ADD
38044 
38045  // tmp = MEM[ADDR];
38046  // MEM[ADDR] += DATA;
38047  // RETURN_DATA = tmp.
38048  void
38050  {
38052  }
38053 
38055  : Inst_MIMG(iFmt, "image_atomic_sub")
38056  {
38057  setFlag(AtomicSub);
38058  if (instData.GLC) {
38059  setFlag(AtomicReturn);
38060  } else {
38061  setFlag(AtomicNoReturn);
38062  }
38063  setFlag(MemoryRef);
38064  setFlag(GlobalSegment);
38065  } // Inst_MIMG__IMAGE_ATOMIC_SUB
38066 
38068  {
38069  } // ~Inst_MIMG__IMAGE_ATOMIC_SUB
38070 
38071  // tmp = MEM[ADDR];
38072  // MEM[ADDR] -= DATA;
38073  // RETURN_DATA = tmp.
38074  void
38076  {
38078  }
38079 
38081  InFmt_MIMG *iFmt)
38082  : Inst_MIMG(iFmt, "image_atomic_smin")
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_SMIN
38093 
38095  {
38096  } // ~Inst_MIMG__IMAGE_ATOMIC_SMIN
38097 
38098  // tmp = MEM[ADDR];
38099  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (signed compare);
38100  // RETURN_DATA = tmp.
38101  void
38103  {
38105  }
38106 
38108  InFmt_MIMG *iFmt)
38109  : Inst_MIMG(iFmt, "image_atomic_umin")
38110  {
38111  setFlag(AtomicMin);
38112  if (instData.GLC) {
38113  setFlag(AtomicReturn);
38114  } else {
38115  setFlag(AtomicNoReturn);
38116  }
38117  setFlag(MemoryRef);
38118  setFlag(GlobalSegment);
38119  } // Inst_MIMG__IMAGE_ATOMIC_UMIN
38120 
38122  {
38123  } // ~Inst_MIMG__IMAGE_ATOMIC_UMIN
38124 
38125  // tmp = MEM[ADDR];
38126  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (unsigned compare);
38127  // RETURN_DATA = tmp.
38128  void
38130  {
38132  }
38133 
38135  InFmt_MIMG *iFmt)
38136  : Inst_MIMG(iFmt, "image_atomic_smax")
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_SMAX
38147 
38149  {
38150  } // ~Inst_MIMG__IMAGE_ATOMIC_SMAX
38151 
38152  // tmp = MEM[ADDR];
38153  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (signed compare);
38154  // RETURN_DATA = tmp.
38155  void
38157  {
38159  }
38160 
38162  InFmt_MIMG *iFmt)
38163  : Inst_MIMG(iFmt, "image_atomic_umax")
38164  {
38165  setFlag(AtomicMax);
38166  if (instData.GLC) {
38167  setFlag(AtomicReturn);
38168  } else {
38169  setFlag(AtomicNoReturn);
38170  }
38171  setFlag(MemoryRef);
38172  setFlag(GlobalSegment);
38173  } // Inst_MIMG__IMAGE_ATOMIC_UMAX
38174 
38176  {
38177  } // ~Inst_MIMG__IMAGE_ATOMIC_UMAX
38178 
38179  // tmp = MEM[ADDR];
38180  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (unsigned compare);
38181  // RETURN_DATA = tmp.
38182  void
38184  {
38186  }
38187 
38189  : Inst_MIMG(iFmt, "image_atomic_and")
38190  {
38191  setFlag(AtomicAnd);
38192  if (instData.GLC) {
38193  setFlag(AtomicReturn);
38194  } else {
38195  setFlag(AtomicNoReturn);
38196  }
38197  setFlag(MemoryRef);
38198  setFlag(GlobalSegment);
38199  } // Inst_MIMG__IMAGE_ATOMIC_AND
38200 
38202  {
38203  } // ~Inst_MIMG__IMAGE_ATOMIC_AND
38204 
38205  // tmp = MEM[ADDR];
38206  // MEM[ADDR] &= DATA;
38207  // RETURN_DATA = tmp.
38208  void
38210  {
38212  }
38213 
38215  : Inst_MIMG(iFmt, "image_atomic_or")
38216  {
38217  setFlag(AtomicOr);
38218  if (instData.GLC) {
38219  setFlag(AtomicReturn);
38220  } else {
38221  setFlag(AtomicNoReturn);
38222  }
38223  setFlag(MemoryRef);
38224  setFlag(GlobalSegment);
38225  } // Inst_MIMG__IMAGE_ATOMIC_OR
38226 
38228  {
38229  } // ~Inst_MIMG__IMAGE_ATOMIC_OR
38230 
38231  // tmp = MEM[ADDR];
38232  // MEM[ADDR] |= DATA;
38233  // RETURN_DATA = tmp.
38234  void
38236  {
38238  }
38239 
38241  : Inst_MIMG(iFmt, "image_atomic_xor")
38242  {
38243  setFlag(AtomicXor);
38244  if (instData.GLC) {
38245  setFlag(AtomicReturn);
38246  } else {
38247  setFlag(AtomicNoReturn);
38248  }
38249  setFlag(MemoryRef);
38250  setFlag(GlobalSegment);
38251  } // Inst_MIMG__IMAGE_ATOMIC_XOR
38252 
38254  {
38255  } // ~Inst_MIMG__IMAGE_ATOMIC_XOR
38256 
38257  // tmp = MEM[ADDR];
38258  // MEM[ADDR] ^= DATA;
38259  // RETURN_DATA = tmp.
38260  void
38262  {
38264  }
38265 
38267  : Inst_MIMG(iFmt, "image_atomic_inc")
38268  {
38269  setFlag(AtomicInc);
38270  if (instData.GLC) {
38271  setFlag(AtomicReturn);
38272  } else {
38273  setFlag(AtomicNoReturn);
38274  }
38275  setFlag(MemoryRef);
38276  setFlag(GlobalSegment);
38277  } // Inst_MIMG__IMAGE_ATOMIC_INC
38278 
38280  {
38281  } // ~Inst_MIMG__IMAGE_ATOMIC_INC
38282 
38283  // tmp = MEM[ADDR];
38284  // MEM[ADDR] = (tmp >= DATA) ? 0 : tmp + 1 (unsigned compare);
38285  // RETURN_DATA = tmp.
38286  void
38288  {
38290  }
38291 
38293  : Inst_MIMG(iFmt, "image_atomic_dec")
38294  {
38295  setFlag(AtomicDec);
38296  if (instData.GLC) {
38297  setFlag(AtomicReturn);
38298  } else {
38299  setFlag(AtomicNoReturn);
38300  }
38301  setFlag(MemoryRef);
38302  setFlag(GlobalSegment);
38303  } // Inst_MIMG__IMAGE_ATOMIC_DEC
38304 
38306  {
38307  } // ~Inst_MIMG__IMAGE_ATOMIC_DEC
38308 
38309  // tmp = MEM[ADDR];
38310  // MEM[ADDR] = (tmp == 0 || tmp > DATA) ? DATA : tmp - 1
38311  // (unsigned compare); RETURN_DATA = tmp.
38312  void
38314  {
38316  }
38317 
38319  : Inst_MIMG(iFmt, "image_sample")
38320  {
38321  setFlag(GlobalSegment);
38322  } // Inst_MIMG__IMAGE_SAMPLE
38323 
38325  {
38326  } // ~Inst_MIMG__IMAGE_SAMPLE
38327 
38328  void
38330  {
38332  }
38333 
38335  : Inst_MIMG(iFmt, "image_sample_cl")
38336  {
38337  setFlag(GlobalSegment);
38338  } // Inst_MIMG__IMAGE_SAMPLE_CL
38339 
38341  {
38342  } // ~Inst_MIMG__IMAGE_SAMPLE_CL
38343 
38344  void
38346  {
38348  }
38349 
38351  : Inst_MIMG(iFmt, "image_sample_d")
38352  {
38353  setFlag(GlobalSegment);
38354  } // Inst_MIMG__IMAGE_SAMPLE_D
38355 
38357  {
38358  } // ~Inst_MIMG__IMAGE_SAMPLE_D
38359 
38360  void
38362  {
38364  }
38365 
38367  InFmt_MIMG *iFmt)
38368  : Inst_MIMG(iFmt, "image_sample_d_cl")
38369  {
38370  setFlag(GlobalSegment);
38371  } // Inst_MIMG__IMAGE_SAMPLE_D_CL
38372 
38374  {
38375  } // ~Inst_MIMG__IMAGE_SAMPLE_D_CL
38376 
38377  void
38379  {
38381  }
38382 
38384  : Inst_MIMG(iFmt, "image_sample_l")
38385  {
38386  setFlag(GlobalSegment);
38387  } // Inst_MIMG__IMAGE_SAMPLE_L
38388 
38390  {
38391  } // ~Inst_MIMG__IMAGE_SAMPLE_L
38392 
38393  void
38395  {
38397  }
38398 
38400  : Inst_MIMG(iFmt, "image_sample_b")
38401  {
38402  setFlag(GlobalSegment);
38403  } // Inst_MIMG__IMAGE_SAMPLE_B
38404 
38406  {
38407  } // ~Inst_MIMG__IMAGE_SAMPLE_B
38408 
38409  void
38411  {
38413  }
38414 
38416  InFmt_MIMG *iFmt)
38417  : Inst_MIMG(iFmt, "image_sample_b_cl")
38418  {
38419  setFlag(GlobalSegment);
38420  } // Inst_MIMG__IMAGE_SAMPLE_B_CL
38421 
38423  {
38424  } // ~Inst_MIMG__IMAGE_SAMPLE_B_CL
38425 
38426  void
38428  {
38430  }
38431 
38433  : Inst_MIMG(iFmt, "image_sample_lz")
38434  {
38435  setFlag(GlobalSegment);
38436  } // Inst_MIMG__IMAGE_SAMPLE_LZ
38437 
38439  {
38440  } // ~Inst_MIMG__IMAGE_SAMPLE_LZ
38441 
38442  void
38444  {
38446  }
38447 
38449  : Inst_MIMG(iFmt, "image_sample_c")
38450  {
38451  setFlag(GlobalSegment);
38452  } // Inst_MIMG__IMAGE_SAMPLE_C
38453 
38455  {
38456  } // ~Inst_MIMG__IMAGE_SAMPLE_C
38457 
38458  void
38460  {
38462  }
38463 
38465  InFmt_MIMG *iFmt)
38466  : Inst_MIMG(iFmt, "image_sample_c_cl")
38467  {
38468  setFlag(GlobalSegment);
38469  } // Inst_MIMG__IMAGE_SAMPLE_C_CL
38470 
38472  {
38473  } // ~Inst_MIMG__IMAGE_SAMPLE_C_CL
38474 
38475  void
38477  {
38479  }
38480 
38482  : Inst_MIMG(iFmt, "image_sample_c_d")
38483  {
38484  setFlag(GlobalSegment);
38485  } // Inst_MIMG__IMAGE_SAMPLE_C_D
38486 
38488  {
38489  } // ~Inst_MIMG__IMAGE_SAMPLE_C_D
38490 
38491  void
38493  {
38495  }
38496 
38498  InFmt_MIMG *iFmt)
38499  : Inst_MIMG(iFmt, "image_sample_c_d_cl")
38500  {
38501  setFlag(GlobalSegment);
38502  } // Inst_MIMG__IMAGE_SAMPLE_C_D_CL
38503 
38505  {
38506  } // ~Inst_MIMG__IMAGE_SAMPLE_C_D_CL
38507 
38508  void
38510  {
38512  }
38513 
38515  : Inst_MIMG(iFmt, "image_sample_c_l")
38516  {
38517  setFlag(GlobalSegment);
38518  } // Inst_MIMG__IMAGE_SAMPLE_C_L
38519 
38521  {
38522  } // ~Inst_MIMG__IMAGE_SAMPLE_C_L
38523 
38524  void
38526  {
38528  }
38529 
38531  : Inst_MIMG(iFmt, "image_sample_c_b")
38532  {
38533  setFlag(GlobalSegment);
38534  } // Inst_MIMG__IMAGE_SAMPLE_C_B
38535 
38537  {
38538  } // ~Inst_MIMG__IMAGE_SAMPLE_C_B
38539 
38540  void
38542  {
38544  }
38545 
38547  InFmt_MIMG *iFmt)
38548  : Inst_MIMG(iFmt, "image_sample_c_b_cl")
38549  {
38550  setFlag(GlobalSegment);
38551  } // Inst_MIMG__IMAGE_SAMPLE_C_B_CL
38552 
38554  {
38555  } // ~Inst_MIMG__IMAGE_SAMPLE_C_B_CL
38556 
38557  void
38559  {
38561  }
38562 
38564  InFmt_MIMG *iFmt)
38565  : Inst_MIMG(iFmt, "image_sample_c_lz")
38566  {
38567  setFlag(GlobalSegment);
38568  } // Inst_MIMG__IMAGE_SAMPLE_C_LZ
38569 
38571  {
38572  } // ~Inst_MIMG__IMAGE_SAMPLE_C_LZ
38573 
38574  void
38576  {
38578  }
38579 
38581  : Inst_MIMG(iFmt, "image_sample_o")
38582  {
38583  setFlag(GlobalSegment);
38584  } // Inst_MIMG__IMAGE_SAMPLE_O
38585 
38587  {
38588  } // ~Inst_MIMG__IMAGE_SAMPLE_O
38589 
38590  void
38592  {
38594  }
38595 
38597  InFmt_MIMG *iFmt)
38598  : Inst_MIMG(iFmt, "image_sample_cl_o")
38599  {
38600  setFlag(GlobalSegment);
38601  } // Inst_MIMG__IMAGE_SAMPLE_CL_O
38602 
38604  {
38605  } // ~Inst_MIMG__IMAGE_SAMPLE_CL_O
38606 
38607  void
38609  {
38611  }
38612 
38614  : Inst_MIMG(iFmt, "image_sample_d_o")
38615  {
38616  setFlag(GlobalSegment);
38617  } // Inst_MIMG__IMAGE_SAMPLE_D_O
38618 
38620  {
38621  } // ~Inst_MIMG__IMAGE_SAMPLE_D_O
38622 
38623  void
38625  {
38627  }
38628 
38630  InFmt_MIMG *iFmt)
38631  : Inst_MIMG(iFmt, "image_sample_d_cl_o")
38632  {
38633  setFlag(GlobalSegment);
38634  } // Inst_MIMG__IMAGE_SAMPLE_D_CL_O
38635 
38637  {
38638  } // ~Inst_MIMG__IMAGE_SAMPLE_D_CL_O
38639 
38640  void
38642  {
38644  }
38645 
38647  : Inst_MIMG(iFmt, "image_sample_l_o")
38648  {
38649  setFlag(GlobalSegment);
38650  } // Inst_MIMG__IMAGE_SAMPLE_L_O
38651 
38653  {
38654  } // ~Inst_MIMG__IMAGE_SAMPLE_L_O
38655 
38656  void
38658  {
38660  }
38661 
38663  : Inst_MIMG(iFmt, "image_sample_b_o")
38664  {
38665  setFlag(GlobalSegment);
38666  } // Inst_MIMG__IMAGE_SAMPLE_B_O
38667 
38669  {
38670  } // ~Inst_MIMG__IMAGE_SAMPLE_B_O
38671 
38672  void
38674  {
38676  }
38677 
38679  InFmt_MIMG *iFmt)
38680  : Inst_MIMG(iFmt, "image_sample_b_cl_o")
38681  {
38682  setFlag(GlobalSegment);
38683  } // Inst_MIMG__IMAGE_SAMPLE_B_CL_O
38684 
38686  {
38687  } // ~Inst_MIMG__IMAGE_SAMPLE_B_CL_O
38688 
38689  void
38691  {
38693  }
38694 
38696  InFmt_MIMG *iFmt)
38697  : Inst_MIMG(iFmt, "image_sample_lz_o")
38698  {
38699  setFlag(GlobalSegment);
38700  } // Inst_MIMG__IMAGE_SAMPLE_LZ_O
38701 
38703  {
38704  } // ~Inst_MIMG__IMAGE_SAMPLE_LZ_O
38705 
38706  void
38708  {
38710  }
38711 
38713  : Inst_MIMG(iFmt, "image_sample_c_o")
38714  {
38715  setFlag(GlobalSegment);
38716  } // Inst_MIMG__IMAGE_SAMPLE_C_O
38717 
38719  {
38720  } // ~Inst_MIMG__IMAGE_SAMPLE_C_O
38721 
38722  void
38724  {
38726  }
38727 
38729  InFmt_MIMG *iFmt)
38730  : Inst_MIMG(iFmt, "image_sample_c_cl_o")
38731  {
38732  setFlag(GlobalSegment);
38733  } // Inst_MIMG__IMAGE_SAMPLE_C_CL_O
38734 
38736  {
38737  } // ~Inst_MIMG__IMAGE_SAMPLE_C_CL_O
38738 
38739  void
38741  {
38743  }
38744 
38746  InFmt_MIMG *iFmt)
38747  : Inst_MIMG(iFmt, "image_sample_c_d_o")
38748  {
38749  setFlag(GlobalSegment);
38750  } // Inst_MIMG__IMAGE_SAMPLE_C_D_O
38751 
38753  {
38754  } // ~Inst_MIMG__IMAGE_SAMPLE_C_D_O
38755 
38756  void
38758  {
38760  }
38761 
38763  InFmt_MIMG *iFmt)
38764  : Inst_MIMG(iFmt, "image_sample_c_d_cl_o")
38765  {
38766  setFlag(GlobalSegment);
38767  } // Inst_MIMG__IMAGE_SAMPLE_C_D_CL_O
38768 
38770  {
38771  } // ~Inst_MIMG__IMAGE_SAMPLE_C_D_CL_O
38772 
38773  void
38775  {
38777  }
38778 
38780  InFmt_MIMG *iFmt)
38781  : Inst_MIMG(iFmt, "image_sample_c_l_o")
38782  {
38783  setFlag(GlobalSegment);
38784  } // Inst_MIMG__IMAGE_SAMPLE_C_L_O
38785 
38787  {
38788  } // ~Inst_MIMG__IMAGE_SAMPLE_C_L_O
38789 
38790  void
38792  {
38794  }
38795 
38797  InFmt_MIMG *iFmt)
38798  : Inst_MIMG(iFmt, "image_sample_c_b_o")
38799  {
38800  setFlag(GlobalSegment);
38801  } // Inst_MIMG__IMAGE_SAMPLE_C_B_O
38802 
38804  {
38805  } // ~Inst_MIMG__IMAGE_SAMPLE_C_B_O
38806 
38807  void
38809  {
38811  }
38812 
38814  InFmt_MIMG *iFmt)
38815  : Inst_MIMG(iFmt, "image_sample_c_b_cl_o")
38816  {
38817  setFlag(GlobalSegment);
38818  } // Inst_MIMG__IMAGE_SAMPLE_C_B_CL_O
38819 
38821  {
38822  } // ~Inst_MIMG__IMAGE_SAMPLE_C_B_CL_O
38823 
38824  void
38826  {
38828  }
38829 
38831  InFmt_MIMG *iFmt)
38832  : Inst_MIMG(iFmt, "image_sample_c_lz_o")
38833  {
38834  setFlag(GlobalSegment);
38835  } // Inst_MIMG__IMAGE_SAMPLE_C_LZ_O
38836 
38838  {
38839  } // ~Inst_MIMG__IMAGE_SAMPLE_C_LZ_O
38840 
38841  void
38843  {
38845  }
38846 
38848  : Inst_MIMG(iFmt, "image_gather4")
38849  {
38850  setFlag(GlobalSegment);
38851  } // Inst_MIMG__IMAGE_GATHER4
38852 
38854  {
38855  } // ~Inst_MIMG__IMAGE_GATHER4
38856 
38857  void
38859  {
38861  }
38862 
38864  : Inst_MIMG(iFmt, "image_gather4_cl")
38865  {
38866  setFlag(GlobalSegment);
38867  } // Inst_MIMG__IMAGE_GATHER4_CL
38868 
38870  {
38871  } // ~Inst_MIMG__IMAGE_GATHER4_CL
38872 
38873  void
38875  {
38877  }
38878 
38880  : Inst_MIMG(iFmt, "image_gather4_l")
38881  {
38882  setFlag(GlobalSegment);
38883  } // Inst_MIMG__IMAGE_GATHER4_L
38884 
38886  {
38887  } // ~Inst_MIMG__IMAGE_GATHER4_L
38888 
38889  void
38891  {
38893  }
38894 
38896  : Inst_MIMG(iFmt, "image_gather4_b")
38897  {
38898  setFlag(GlobalSegment);
38899  } // Inst_MIMG__IMAGE_GATHER4_B
38900 
38902  {
38903  } // ~Inst_MIMG__IMAGE_GATHER4_B
38904 
38905  void
38907  {
38909  }
38910 
38912  InFmt_MIMG *iFmt)
38913  : Inst_MIMG(iFmt, "image_gather4_b_cl")
38914  {
38915  setFlag(GlobalSegment);
38916  } // Inst_MIMG__IMAGE_GATHER4_B_CL
38917 
38919  {
38920  } // ~Inst_MIMG__IMAGE_GATHER4_B_CL
38921 
38922  void
38924  {
38926  }
38927 
38929  : Inst_MIMG(iFmt, "image_gather4_lz")
38930  {
38931  setFlag(GlobalSegment);
38932  } // Inst_MIMG__IMAGE_GATHER4_LZ
38933 
38935  {
38936  } // ~Inst_MIMG__IMAGE_GATHER4_LZ
38937 
38938  void
38940  {
38942  }
38943 
38945  : Inst_MIMG(iFmt, "image_gather4_c")
38946  {
38947  setFlag(GlobalSegment);
38948  } // Inst_MIMG__IMAGE_GATHER4_C
38949 
38951  {
38952  } // ~Inst_MIMG__IMAGE_GATHER4_C
38953 
38954  void
38956  {
38958  }
38959 
38961  InFmt_MIMG *iFmt)
38962  : Inst_MIMG(iFmt, "image_gather4_c_cl")
38963  {
38964  setFlag(GlobalSegment);
38965  } // Inst_MIMG__IMAGE_GATHER4_C_CL
38966 
38968  {
38969  } // ~Inst_MIMG__IMAGE_GATHER4_C_CL
38970 
38971  void
38973  {
38975  }
38976 
38978  InFmt_MIMG *iFmt)
38979  : Inst_MIMG(iFmt, "image_gather4_c_l")
38980  {
38981  setFlag(GlobalSegment);
38982  } // Inst_MIMG__IMAGE_GATHER4_C_L
38983 
38985  {
38986  } // ~Inst_MIMG__IMAGE_GATHER4_C_L
38987 
38988  void
38990  {
38992  }
38993 
38995  InFmt_MIMG *iFmt)
38996  : Inst_MIMG(iFmt, "image_gather4_c_b")
38997  {
38998  setFlag(GlobalSegment);
38999  } // Inst_MIMG__IMAGE_GATHER4_C_B
39000 
39002  {
39003  } // ~Inst_MIMG__IMAGE_GATHER4_C_B
39004 
39005  void
39007  {
39009  }
39010 
39012  InFmt_MIMG *iFmt)
39013  : Inst_MIMG(iFmt, "image_gather4_c_b_cl")
39014  {
39015  setFlag(GlobalSegment);
39016  } // Inst_MIMG__IMAGE_GATHER4_C_B_CL
39017 
39019  {
39020  } // ~Inst_MIMG__IMAGE_GATHER4_C_B_CL
39021 
39022  void
39024  {
39026  }
39027 
39029  InFmt_MIMG *iFmt)
39030  : Inst_MIMG(iFmt, "image_gather4_c_lz")
39031  {
39032  setFlag(GlobalSegment);
39033  } // Inst_MIMG__IMAGE_GATHER4_C_LZ
39034 
39036  {
39037  } // ~Inst_MIMG__IMAGE_GATHER4_C_LZ
39038 
39039  void
39041  {
39043  }
39044 
39046  : Inst_MIMG(iFmt, "image_gather4_o")
39047  {
39048  setFlag(GlobalSegment);
39049  } // Inst_MIMG__IMAGE_GATHER4_O
39050 
39052  {
39053  } // ~Inst_MIMG__IMAGE_GATHER4_O
39054 
39055  void
39057  {
39059  }
39060 
39062  InFmt_MIMG *iFmt)
39063  : Inst_MIMG(iFmt, "image_gather4_cl_o")
39064  {
39065  setFlag(GlobalSegment);
39066  } // Inst_MIMG__IMAGE_GATHER4_CL_O
39067 
39069  {
39070  } // ~Inst_MIMG__IMAGE_GATHER4_CL_O
39071 
39072  void
39074  {
39076  }
39077 
39079  InFmt_MIMG *iFmt)
39080  : Inst_MIMG(iFmt, "image_gather4_l_o")
39081  {
39082  setFlag(GlobalSegment);
39083  } // Inst_MIMG__IMAGE_GATHER4_L_O
39084 
39086  {
39087  } // ~Inst_MIMG__IMAGE_GATHER4_L_O
39088 
39089  void
39091  {
39093  }
39094 
39096  InFmt_MIMG *iFmt)
39097  : Inst_MIMG(iFmt, "image_gather4_b_o")
39098  {
39099  setFlag(GlobalSegment);
39100  } // Inst_MIMG__IMAGE_GATHER4_B_O
39101 
39103  {
39104  } // ~Inst_MIMG__IMAGE_GATHER4_B_O
39105 
39106  void
39108  {
39110  }
39111 
39113  InFmt_MIMG *iFmt)
39114  : Inst_MIMG(iFmt, "image_gather4_b_cl_o")
39115  {
39116  setFlag(GlobalSegment);
39117  } // Inst_MIMG__IMAGE_GATHER4_B_CL_O
39118 
39120  {
39121  } // ~Inst_MIMG__IMAGE_GATHER4_B_CL_O
39122 
39123  void
39125  {
39127  }
39128 
39130  InFmt_MIMG *iFmt)
39131  : Inst_MIMG(iFmt, "image_gather4_lz_o")
39132  {
39133  setFlag(GlobalSegment);
39134  } // Inst_MIMG__IMAGE_GATHER4_LZ_O
39135 
39137  {
39138  } // ~Inst_MIMG__IMAGE_GATHER4_LZ_O
39139 
39140  void
39142  {
39144  }
39145 
39147  InFmt_MIMG *iFmt)
39148  : Inst_MIMG(iFmt, "image_gather4_c_o")
39149  {
39150  setFlag(GlobalSegment);
39151  } // Inst_MIMG__IMAGE_GATHER4_C_O
39152 
39154  {
39155  } // ~Inst_MIMG__IMAGE_GATHER4_C_O
39156 
39157  void
39159  {
39161  }
39162 
39164  InFmt_MIMG *iFmt)
39165  : Inst_MIMG(iFmt, "image_gather4_c_cl_o")
39166  {
39167  setFlag(GlobalSegment);
39168  } // Inst_MIMG__IMAGE_GATHER4_C_CL_O
39169 
39171  {
39172  } // ~Inst_MIMG__IMAGE_GATHER4_C_CL_O
39173 
39174  void
39176  {
39178  }
39179 
39181  InFmt_MIMG *iFmt)
39182  : Inst_MIMG(iFmt, "image_gather4_c_l_o")
39183  {
39184  setFlag(GlobalSegment);
39185  } // Inst_MIMG__IMAGE_GATHER4_C_L_O
39186 
39188  {
39189  } // ~Inst_MIMG__IMAGE_GATHER4_C_L_O
39190 
39191  void
39193  {
39195  }
39196 
39198  InFmt_MIMG *iFmt)
39199  : Inst_MIMG(iFmt, "image_gather4_c_b_o")
39200  {
39201  setFlag(GlobalSegment);
39202  } // Inst_MIMG__IMAGE_GATHER4_C_B_O
39203 
39205  {
39206  } // ~Inst_MIMG__IMAGE_GATHER4_C_B_O
39207 
39208  void
39210  {
39212  }
39213 
39215  InFmt_MIMG *iFmt)
39216  : Inst_MIMG(iFmt, "image_gather4_c_b_cl_o")
39217  {
39218  setFlag(GlobalSegment);
39219  } // Inst_MIMG__IMAGE_GATHER4_C_B_CL_O
39220 
39222  {
39223  } // ~Inst_MIMG__IMAGE_GATHER4_C_B_CL_O
39224 
39225  void
39227  {
39229  }
39230 
39232  InFmt_MIMG *iFmt)
39233  : Inst_MIMG(iFmt, "image_gather4_c_lz_o")
39234  {
39235  setFlag(GlobalSegment);
39236  } // Inst_MIMG__IMAGE_GATHER4_C_LZ_O
39237 
39239  {
39240  } // ~Inst_MIMG__IMAGE_GATHER4_C_LZ_O
39241 
39242  void
39244  {
39246  }
39247 
39249  : Inst_MIMG(iFmt, "image_get_lod")
39250  {
39251  setFlag(GlobalSegment);
39252  } // Inst_MIMG__IMAGE_GET_LOD
39253 
39255  {
39256  } // ~Inst_MIMG__IMAGE_GET_LOD
39257 
39258  void
39260  {
39262  }
39263 
39265  : Inst_MIMG(iFmt, "image_sample_cd")
39266  {
39267  setFlag(GlobalSegment);
39268  } // Inst_MIMG__IMAGE_SAMPLE_CD
39269 
39271  {
39272  } // ~Inst_MIMG__IMAGE_SAMPLE_CD
39273 
39274  void
39276  {
39278  }
39279 
39281  InFmt_MIMG *iFmt)
39282  : Inst_MIMG(iFmt, "image_sample_cd_cl")
39283  {
39284  setFlag(GlobalSegment);
39285  } // Inst_MIMG__IMAGE_SAMPLE_CD_CL
39286 
39288  {
39289  } // ~Inst_MIMG__IMAGE_SAMPLE_CD_CL
39290 
39291  void
39293  {
39295  }
39296 
39298  InFmt_MIMG *iFmt)
39299  : Inst_MIMG(iFmt, "image_sample_c_cd")
39300  {
39301  setFlag(GlobalSegment);
39302  } // Inst_MIMG__IMAGE_SAMPLE_C_CD
39303 
39305  {
39306  } // ~Inst_MIMG__IMAGE_SAMPLE_C_CD
39307 
39308  void
39310  {
39312  }
39313 
39315  InFmt_MIMG *iFmt)
39316  : Inst_MIMG(iFmt, "image_sample_c_cd_cl")
39317  {
39318  setFlag(GlobalSegment);
39319  } // Inst_MIMG__IMAGE_SAMPLE_C_CD_CL
39320 
39322  {
39323  } // ~Inst_MIMG__IMAGE_SAMPLE_C_CD_CL
39324 
39325  void
39327  {
39329  }
39330 
39332  InFmt_MIMG *iFmt)
39333  : Inst_MIMG(iFmt, "image_sample_cd_o")
39334  {
39335  setFlag(GlobalSegment);
39336  } // Inst_MIMG__IMAGE_SAMPLE_CD_O
39337 
39339  {
39340  } // ~Inst_MIMG__IMAGE_SAMPLE_CD_O
39341 
39342  void
39344  {
39346  }
39347 
39349  InFmt_MIMG *iFmt)
39350  : Inst_MIMG(iFmt, "image_sample_cd_cl_o")
39351  {
39352  setFlag(GlobalSegment);
39353  } // Inst_MIMG__IMAGE_SAMPLE_CD_CL_O
39354 
39356  {
39357  } // ~Inst_MIMG__IMAGE_SAMPLE_CD_CL_O
39358 
39359  void
39361  {
39363  }
39364 
39366  InFmt_MIMG *iFmt)
39367  : Inst_MIMG(iFmt, "image_sample_c_cd_o")
39368  {
39369  setFlag(GlobalSegment);
39370  } // Inst_MIMG__IMAGE_SAMPLE_C_CD_O
39371 
39373  {
39374  } // ~Inst_MIMG__IMAGE_SAMPLE_C_CD_O
39375 
39376  void
39378  {
39380  }
39381 
39383  InFmt_MIMG *iFmt)
39384  : Inst_MIMG(iFmt, "image_sample_c_cd_cl_o")
39385  {
39386  setFlag(GlobalSegment);
39387  } // Inst_MIMG__IMAGE_SAMPLE_C_CD_CL_O
39388 
39390  {
39391  } // ~Inst_MIMG__IMAGE_SAMPLE_C_CD_CL_O
39392 
39393  void
39395  {
39397  }
39398 
39400  : Inst_EXP(iFmt, "exp")
39401  {
39402  } // Inst_EXP__EXP
39403 
39405  {
39406  } // ~Inst_EXP__EXP
39407 
39408  void
39410  {
39412  }
39413 
39415  : Inst_FLAT(iFmt, "flat_load_ubyte")
39416  {
39417  setFlag(MemoryRef);
39418  setFlag(Load);
39419  } // Inst_FLAT__FLAT_LOAD_UBYTE
39420 
39422  {
39423  } // ~Inst_FLAT__FLAT_LOAD_UBYTE
39424 
39425  // Untyped buffer load unsigned byte (zero extend to VGPR destination).
39426  void
39428  {
39429  Wavefront *wf = gpuDynInst->wavefront();
39430 
39431  if (wf->execMask().none()) {
39432  wf->decVMemInstsIssued();
39433  wf->decLGKMInstsIssued();
39434  wf->rdGmReqsInPipe--;
39435  wf->rdLmReqsInPipe--;
39436  gpuDynInst->exec_mask = wf->execMask();
39437  wf->computeUnit->vrf[wf->simdId]->
39438  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
39439  return;
39440  }
39441 
39442  gpuDynInst->execUnitId = wf->execUnitId;
39443  gpuDynInst->exec_mask = gpuDynInst->wavefront()->execMask();
39444  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39445  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39446 
39447  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
39448 
39449  addr.read();
39450 
39451  calcAddr(gpuDynInst, addr);
39452 
39453  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
39454  gpuDynInst->computeUnit()->globalMemoryPipe
39455  .issueRequest(gpuDynInst);
39456  wf->rdGmReqsInPipe--;
39457  wf->outstandingReqsRdGm++;
39458  } else {
39459  fatal("Non global flat instructions not implemented yet.\n");
39460  }
39461 
39462  gpuDynInst->wavefront()->outstandingReqs++;
39463  gpuDynInst->wavefront()->validateRequestCounters();
39464  } // execute
39465 
39466  void
39468  {
39469  initMemRead<VecElemU8>(gpuDynInst);
39470  } // initiateAcc
39471 
39472  void
39474  {
39475  VecOperandU32 vdst(gpuDynInst, extData.VDST);
39476 
39477  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39478  if (gpuDynInst->exec_mask[lane]) {
39479  vdst[lane] = (VecElemU32)((reinterpret_cast<VecElemU8*>(
39480  gpuDynInst->d_data))[lane]);
39481  }
39482  }
39483  vdst.write();
39484  } // execute
39485  // --- Inst_FLAT__FLAT_LOAD_SBYTE class methods ---
39486 
39488  : Inst_FLAT(iFmt, "flat_load_sbyte")
39489  {
39490  setFlag(MemoryRef);
39491  setFlag(Load);
39492  } // Inst_FLAT__FLAT_LOAD_SBYTE
39493 
39495  {
39496  } // ~Inst_FLAT__FLAT_LOAD_SBYTE
39497 
39498  // Untyped buffer load signed byte (sign extend to VGPR destination).
39499  void
39501  {
39502  Wavefront *wf = gpuDynInst->wavefront();
39503 
39504  if (wf->execMask().none()) {
39505  wf->decVMemInstsIssued();
39506  wf->decLGKMInstsIssued();
39507  wf->rdGmReqsInPipe--;
39508  wf->rdLmReqsInPipe--;
39509  gpuDynInst->exec_mask = wf->execMask();
39510  wf->computeUnit->vrf[wf->simdId]->
39511  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
39512  return;
39513  }
39514 
39515  gpuDynInst->execUnitId = wf->execUnitId;
39516  gpuDynInst->exec_mask = gpuDynInst->wavefront()->execMask();
39517  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39518  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39519 
39520  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
39521 
39522  addr.read();
39523 
39524  calcAddr(gpuDynInst, addr);
39525 
39526  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
39527  gpuDynInst->computeUnit()->globalMemoryPipe
39528  .issueRequest(gpuDynInst);
39529  wf->rdGmReqsInPipe--;
39530  wf->outstandingReqsRdGm++;
39531  } else {
39532  fatal("Non global flat instructions not implemented yet.\n");
39533  }
39534 
39535  gpuDynInst->wavefront()->outstandingReqs++;
39536  gpuDynInst->wavefront()->validateRequestCounters();
39537  }
39538 
39539  void
39541  {
39542  initMemRead<VecElemI8>(gpuDynInst);
39543  } // initiateAcc
39544 
39545  void
39547  {
39548  VecOperandI32 vdst(gpuDynInst, extData.VDST);
39549 
39550  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39551  if (gpuDynInst->exec_mask[lane]) {
39552  vdst[lane] = (VecElemI32)((reinterpret_cast<VecElemI8*>(
39553  gpuDynInst->d_data))[lane]);
39554  }
39555  }
39556  vdst.write();
39557  }
39558 
39560  : Inst_FLAT(iFmt, "flat_load_ushort")
39561  {
39562  setFlag(MemoryRef);
39563  setFlag(Load);
39564  } // Inst_FLAT__FLAT_LOAD_USHORT
39565 
39567  {
39568  } // ~Inst_FLAT__FLAT_LOAD_USHORT
39569 
39570  // Untyped buffer load unsigned short (zero extend to VGPR destination).
39571  void
39573  {
39574  Wavefront *wf = gpuDynInst->wavefront();
39575 
39576  if (wf->execMask().none()) {
39577  wf->decVMemInstsIssued();
39578  wf->decLGKMInstsIssued();
39579  wf->rdGmReqsInPipe--;
39580  wf->rdLmReqsInPipe--;
39581  gpuDynInst->exec_mask = wf->execMask();
39582  wf->computeUnit->vrf[wf->simdId]->
39583  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
39584  return;
39585  }
39586 
39587  gpuDynInst->execUnitId = wf->execUnitId;
39588  gpuDynInst->exec_mask = gpuDynInst->wavefront()->execMask();
39589  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39590  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39591 
39592  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
39593 
39594  addr.read();
39595 
39596  calcAddr(gpuDynInst, addr);
39597 
39598  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
39599  gpuDynInst->computeUnit()->globalMemoryPipe
39600  .issueRequest(gpuDynInst);
39601  wf->rdGmReqsInPipe--;
39602  wf->outstandingReqsRdGm++;
39603  } else {
39604  fatal("Non global flat instructions not implemented yet.\n");
39605  }
39606 
39607  gpuDynInst->wavefront()->outstandingReqs++;
39608  gpuDynInst->wavefront()->validateRequestCounters();
39609  }
39610 
39611  void
39613  {
39614  initMemRead<VecElemU16>(gpuDynInst);
39615  } // initiateAcc
39616 
39617  void
39619  {
39620  VecOperandU32 vdst(gpuDynInst, extData.VDST);
39621 
39622  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39623  if (gpuDynInst->exec_mask[lane]) {
39624  vdst[lane] = (VecElemU32)((reinterpret_cast<VecElemU16*>(
39625  gpuDynInst->d_data))[lane]);
39626  }
39627  }
39628  vdst.write();
39629  }
39630 
39631 
39633  : Inst_FLAT(iFmt, "flat_load_sshort")
39634  {
39635  setFlag(MemoryRef);
39636  setFlag(Load);
39637  } // Inst_FLAT__FLAT_LOAD_SSHORT
39638 
39640  {
39641  } // ~Inst_FLAT__FLAT_LOAD_SSHORT
39642 
39643  // Untyped buffer load signed short (sign extend to VGPR destination).
39644  void
39646  {
39648  }
39649 
39650  void
39652  {
39653  } // initiateAcc
39654 
39655  void
39657  {
39658  }
39659 
39661  : Inst_FLAT(iFmt, "flat_load_dword")
39662  {
39663  setFlag(MemoryRef);
39664  setFlag(Load);
39665  } // Inst_FLAT__FLAT_LOAD_DWORD
39666 
39668  {
39669  } // ~Inst_FLAT__FLAT_LOAD_DWORD
39670 
39671  // Untyped buffer load dword.
39672  void
39674  {
39675  Wavefront *wf = gpuDynInst->wavefront();
39676 
39677  if (wf->execMask().none()) {
39678  wf->decVMemInstsIssued();
39679  wf->decLGKMInstsIssued();
39680  wf->rdGmReqsInPipe--;
39681  wf->rdLmReqsInPipe--;
39682  gpuDynInst->exec_mask = wf->execMask();
39683  wf->computeUnit->vrf[wf->simdId]->
39684  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
39685  return;
39686  }
39687 
39688  gpuDynInst->execUnitId = wf->execUnitId;
39689  gpuDynInst->exec_mask = gpuDynInst->wavefront()->execMask();
39690  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39691  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39692 
39693  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
39694 
39695  addr.read();
39696 
39697  calcAddr(gpuDynInst, addr);
39698 
39699  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
39700  gpuDynInst->computeUnit()->globalMemoryPipe
39701  .issueRequest(gpuDynInst);
39702  wf->rdGmReqsInPipe--;
39703  wf->outstandingReqsRdGm++;
39704  } else {
39705  fatal("Non global flat instructions not implemented yet.\n");
39706  }
39707 
39708  gpuDynInst->wavefront()->outstandingReqs++;
39709  gpuDynInst->wavefront()->validateRequestCounters();
39710  }
39711 
39712  void
39714  {
39715  initMemRead<VecElemU32>(gpuDynInst);
39716  } // initiateAcc
39717 
39718  void
39720  {
39721  VecOperandU32 vdst(gpuDynInst, extData.VDST);
39722 
39723  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39724  if (gpuDynInst->exec_mask[lane]) {
39725  vdst[lane] = (reinterpret_cast<VecElemU32*>(
39726  gpuDynInst->d_data))[lane];
39727  }
39728  }
39729  vdst.write();
39730  } // completeAcc
39731 
39733  InFmt_FLAT *iFmt)
39734  : Inst_FLAT(iFmt, "flat_load_dwordx2")
39735  {
39736  setFlag(MemoryRef);
39737  setFlag(Load);
39738  } // Inst_FLAT__FLAT_LOAD_DWORDX2
39739 
39741  {
39742  } // ~Inst_FLAT__FLAT_LOAD_DWORDX2
39743 
39744  // Untyped buffer load 2 dwords.
39745  void
39747  {
39748  Wavefront *wf = gpuDynInst->wavefront();
39749 
39750  if (wf->execMask().none()) {
39751  wf->decVMemInstsIssued();
39752  wf->decLGKMInstsIssued();
39753  wf->rdGmReqsInPipe--;
39754  wf->rdLmReqsInPipe--;
39755  gpuDynInst->exec_mask = wf->execMask();
39756  wf->computeUnit->vrf[wf->simdId]->
39757  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
39758  return;
39759  }
39760 
39761  gpuDynInst->execUnitId = wf->execUnitId;
39762  gpuDynInst->exec_mask = gpuDynInst->wavefront()->execMask();
39763  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39764  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39765 
39766  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
39767 
39768  addr.read();
39769 
39770  calcAddr(gpuDynInst, addr);
39771 
39772  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
39773  gpuDynInst->computeUnit()->globalMemoryPipe
39774  .issueRequest(gpuDynInst);
39775  wf->rdGmReqsInPipe--;
39776  wf->outstandingReqsRdGm++;
39777  } else {
39778  fatal("Non global flat instructions not implemented yet.\n");
39779  }
39780 
39781  gpuDynInst->wavefront()->outstandingReqs++;
39782  gpuDynInst->wavefront()->validateRequestCounters();
39783  }
39784 
39785  void
39787  {
39788  initMemRead<VecElemU64>(gpuDynInst);
39789  } // initiateAcc
39790 
39791  void
39793  {
39794  VecOperandU64 vdst(gpuDynInst, extData.VDST);
39795 
39796  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39797  if (gpuDynInst->exec_mask[lane]) {
39798  vdst[lane] = (reinterpret_cast<VecElemU64*>(
39799  gpuDynInst->d_data))[lane];
39800  }
39801  }
39802  vdst.write();
39803  } // completeAcc
39804 
39806  InFmt_FLAT *iFmt)
39807  : Inst_FLAT(iFmt, "flat_load_dwordx3")
39808  {
39809  setFlag(MemoryRef);
39810  setFlag(Load);
39811  } // Inst_FLAT__FLAT_LOAD_DWORDX3
39812 
39814  {
39815  } // ~Inst_FLAT__FLAT_LOAD_DWORDX3
39816 
39817  // Untyped buffer load 3 dwords.
39818  void
39820  {
39821  Wavefront *wf = gpuDynInst->wavefront();
39822 
39823  if (wf->execMask().none()) {
39824  wf->decVMemInstsIssued();
39825  wf->decLGKMInstsIssued();
39826  wf->rdGmReqsInPipe--;
39827  wf->rdLmReqsInPipe--;
39828  gpuDynInst->exec_mask = wf->execMask();
39829  wf->computeUnit->vrf[wf->simdId]->
39830  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
39831  return;
39832  }
39833 
39834  gpuDynInst->execUnitId = wf->execUnitId;
39835  gpuDynInst->exec_mask = wf->execMask();
39836  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39837  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39838 
39839  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
39840 
39841  addr.read();
39842 
39843  calcAddr(gpuDynInst, addr);
39844 
39845  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
39846  gpuDynInst->computeUnit()->globalMemoryPipe
39847  .issueRequest(gpuDynInst);
39848  wf->rdGmReqsInPipe--;
39849  wf->outstandingReqsRdGm++;
39850  } else {
39851  fatal("Non global flat instructions not implemented yet.\n");
39852  }
39853 
39854  gpuDynInst->wavefront()->outstandingReqs++;
39855  gpuDynInst->wavefront()->validateRequestCounters();
39856  }
39857 
39858  void
39860  {
39861  initMemRead<3>(gpuDynInst);
39862  } // initiateAcc
39863 
39864  void
39866  {
39867  VecOperandU32 vdst0(gpuDynInst, extData.VDST);
39868  VecOperandU32 vdst1(gpuDynInst, extData.VDST + 1);
39869  VecOperandU32 vdst2(gpuDynInst, extData.VDST + 2);
39870 
39871  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39872  if (gpuDynInst->exec_mask[lane]) {
39873  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
39874  gpuDynInst->d_data))[lane * 3];
39875  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
39876  gpuDynInst->d_data))[lane * 3 + 1];
39877  vdst2[lane] = (reinterpret_cast<VecElemU32*>(
39878  gpuDynInst->d_data))[lane * 3 + 2];
39879  }
39880  }
39881 
39882  vdst0.write();
39883  vdst1.write();
39884  vdst2.write();
39885  } // completeAcc
39886 
39888  InFmt_FLAT *iFmt)
39889  : Inst_FLAT(iFmt, "flat_load_dwordx4")
39890  {
39891  setFlag(MemoryRef);
39892  setFlag(Load);
39893  } // Inst_FLAT__FLAT_LOAD_DWORDX4
39894 
39896  {
39897  } // ~Inst_FLAT__FLAT_LOAD_DWORDX4
39898 
39899  // Untyped buffer load 4 dwords.
39900  void
39902  {
39903  Wavefront *wf = gpuDynInst->wavefront();
39904 
39905  if (wf->execMask().none()) {
39906  wf->decVMemInstsIssued();
39907  wf->decLGKMInstsIssued();
39908  wf->rdGmReqsInPipe--;
39909  wf->rdLmReqsInPipe--;
39910  gpuDynInst->exec_mask = wf->execMask();
39911  wf->computeUnit->vrf[wf->simdId]->
39912  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
39913  return;
39914  }
39915 
39916  gpuDynInst->execUnitId = wf->execUnitId;
39917  gpuDynInst->exec_mask = wf->execMask();
39918  gpuDynInst->latency.init(gpuDynInst->computeUnit());
39919  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
39920 
39921  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
39922 
39923  addr.read();
39924 
39925  calcAddr(gpuDynInst, addr);
39926 
39927  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
39928  gpuDynInst->computeUnit()->globalMemoryPipe
39929  .issueRequest(gpuDynInst);
39930  wf->rdGmReqsInPipe--;
39931  wf->outstandingReqsRdGm++;
39932  } else {
39933  fatal("Non global flat instructions not implemented yet.\n");
39934  }
39935 
39936  gpuDynInst->wavefront()->outstandingReqs++;
39937  gpuDynInst->wavefront()->validateRequestCounters();
39938  }
39939 
39940  void
39942  {
39943  initMemRead<4>(gpuDynInst);
39944  } // initiateAcc
39945 
39946  void
39948  {
39949  VecOperandU32 vdst0(gpuDynInst, extData.VDST);
39950  VecOperandU32 vdst1(gpuDynInst, extData.VDST + 1);
39951  VecOperandU32 vdst2(gpuDynInst, extData.VDST + 2);
39952  VecOperandU32 vdst3(gpuDynInst, extData.VDST + 3);
39953 
39954  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
39955  if (gpuDynInst->exec_mask[lane]) {
39956  vdst0[lane] = (reinterpret_cast<VecElemU32*>(
39957  gpuDynInst->d_data))[lane * 4];
39958  vdst1[lane] = (reinterpret_cast<VecElemU32*>(
39959  gpuDynInst->d_data))[lane * 4 + 1];
39960  vdst2[lane] = (reinterpret_cast<VecElemU32*>(
39961  gpuDynInst->d_data))[lane * 4 + 2];
39962  vdst3[lane] = (reinterpret_cast<VecElemU32*>(
39963  gpuDynInst->d_data))[lane * 4 + 3];
39964  }
39965  }
39966 
39967  vdst0.write();
39968  vdst1.write();
39969  vdst2.write();
39970  vdst3.write();
39971  } // completeAcc
39972 
39974  : Inst_FLAT(iFmt, "flat_store_byte")
39975  {
39976  setFlag(MemoryRef);
39977  setFlag(Store);
39978  } // Inst_FLAT__FLAT_STORE_BYTE
39979 
39981  {
39982  } // ~Inst_FLAT__FLAT_STORE_BYTE
39983 
39984  // Untyped buffer store byte.
39985  void
39987  {
39988  Wavefront *wf = gpuDynInst->wavefront();
39989 
39990  if (wf->execMask().none()) {
39991  wf->decVMemInstsIssued();
39992  wf->decLGKMInstsIssued();
39993  wf->wrGmReqsInPipe--;
39994  wf->wrLmReqsInPipe--;
39995  return;
39996  }
39997 
39998  gpuDynInst->execUnitId = wf->execUnitId;
39999  gpuDynInst->exec_mask = wf->execMask();
40000  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40001  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40002 
40003  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
40004 
40005  addr.read();
40006 
40007  calcAddr(gpuDynInst, addr);
40008 
40009  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
40010  gpuDynInst->computeUnit()->globalMemoryPipe
40011  .issueRequest(gpuDynInst);
40012  wf->wrGmReqsInPipe--;
40013  wf->outstandingReqsWrGm++;
40014  } else {
40015  fatal("Non global flat instructions not implemented yet.\n");
40016  }
40017 
40018  gpuDynInst->wavefront()->outstandingReqs++;
40019  gpuDynInst->wavefront()->validateRequestCounters();
40020  } // execute
40021 
40022  void
40024  {
40025  ConstVecOperandU8 data(gpuDynInst, extData.DATA);
40026  data.read();
40027 
40028  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40029  if (gpuDynInst->exec_mask[lane]) {
40030  (reinterpret_cast<VecElemU8*>(gpuDynInst->d_data))[lane]
40031  = data[lane];
40032  }
40033  }
40034 
40035  initMemWrite<VecElemU8>(gpuDynInst);
40036  } // initiateAcc
40037 
40038  void
40040  {
40041  }
40042 
40044  : Inst_FLAT(iFmt, "flat_store_short")
40045  {
40046  setFlag(MemoryRef);
40047  setFlag(Store);
40048  } // Inst_FLAT__FLAT_STORE_SHORT
40049 
40051  {
40052  } // ~Inst_FLAT__FLAT_STORE_SHORT
40053 
40054  // Untyped buffer store short.
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  ConstVecOperandU16 data(gpuDynInst, extData.DATA);
40096 
40097  data.read();
40098 
40099  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40100  if (gpuDynInst->exec_mask[lane]) {
40101  (reinterpret_cast<VecElemU16*>(gpuDynInst->d_data))[lane]
40102  = data[lane];
40103  }
40104  }
40105 
40106  initMemWrite<VecElemU16>(gpuDynInst);
40107  } // initiateAcc
40108 
40109  void
40111  {
40112  } // completeAcc
40113 
40115  : Inst_FLAT(iFmt, "flat_store_dword")
40116  {
40117  setFlag(MemoryRef);
40118  setFlag(Store);
40119  } // Inst_FLAT__FLAT_STORE_DWORD
40120 
40122  {
40123  } // ~Inst_FLAT__FLAT_STORE_DWORD
40124 
40125  // Untyped buffer store dword.
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  gpuDynInst->wavefront()->outstandingReqs++;
40160  gpuDynInst->wavefront()->validateRequestCounters();
40161  }
40162 
40163  void
40165  {
40166  ConstVecOperandU32 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<VecElemU32*>(gpuDynInst->d_data))[lane]
40172  = data[lane];
40173  }
40174  }
40175 
40176  initMemWrite<VecElemU32>(gpuDynInst);
40177  } // initiateAcc
40178 
40179  void
40181  {
40182  } // completeAcc
40183 
40185  InFmt_FLAT *iFmt)
40186  : Inst_FLAT(iFmt, "flat_store_dwordx2")
40187  {
40188  setFlag(MemoryRef);
40189  setFlag(Store);
40190  } // Inst_FLAT__FLAT_STORE_DWORDX2
40191 
40193  {
40194  } // ~Inst_FLAT__FLAT_STORE_DWORDX2
40195 
40196  // Untyped buffer store 2 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  wf->outstandingReqs++;
40232  }
40233 
40234  void
40236  {
40237  ConstVecOperandU64 data(gpuDynInst, extData.DATA);
40238  data.read();
40239 
40240  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40241  if (gpuDynInst->exec_mask[lane]) {
40242  (reinterpret_cast<VecElemU64*>(gpuDynInst->d_data))[lane]
40243  = data[lane];
40244  }
40245  }
40246 
40247  initMemWrite<VecElemU64>(gpuDynInst);
40248  } // initiateAcc
40249 
40250  void
40252  {
40253  } // completeAcc
40254 
40256  InFmt_FLAT *iFmt)
40257  : Inst_FLAT(iFmt, "flat_store_dwordx3")
40258  {
40259  setFlag(MemoryRef);
40260  setFlag(Store);
40261  } // Inst_FLAT__FLAT_STORE_DWORDX3
40262 
40264  {
40265  } // ~Inst_FLAT__FLAT_STORE_DWORDX3
40266 
40267  // Untyped buffer store 3 dwords.
40268  void
40270  {
40271  Wavefront *wf = gpuDynInst->wavefront();
40272 
40273  if (wf->execMask().none()) {
40274  wf->decVMemInstsIssued();
40275  wf->decLGKMInstsIssued();
40276  wf->wrGmReqsInPipe--;
40277  wf->wrLmReqsInPipe--;
40278  return;
40279  }
40280 
40281  gpuDynInst->execUnitId = wf->execUnitId;
40282  gpuDynInst->exec_mask = wf->execMask();
40283  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40284  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40285 
40286  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
40287 
40288  addr.read();
40289 
40290  calcAddr(gpuDynInst, addr);
40291 
40292  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
40293  gpuDynInst->computeUnit()->globalMemoryPipe
40294  .issueRequest(gpuDynInst);
40295  wf->wrGmReqsInPipe--;
40296  wf->outstandingReqsWrGm++;
40297  } else {
40298  fatal("Non global flat instructions not implemented yet.\n");
40299  }
40300 
40301  gpuDynInst->wavefront()->outstandingReqs++;
40302  gpuDynInst->wavefront()->validateRequestCounters();
40303  }
40304 
40305  void
40307  {
40308  ConstVecOperandU32 data0(gpuDynInst, extData.DATA);
40309  ConstVecOperandU32 data1(gpuDynInst, extData.DATA + 1);
40310  ConstVecOperandU32 data2(gpuDynInst, extData.DATA + 2);
40311 
40312  data0.read();
40313  data1.read();
40314  data2.read();
40315 
40316  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40317  if (gpuDynInst->exec_mask[lane]) {
40318  (reinterpret_cast<VecElemU32*>(
40319  gpuDynInst->d_data))[lane * 3] = data0[lane];
40320  (reinterpret_cast<VecElemU32*>(
40321  gpuDynInst->d_data))[lane * 3 + 1] = data1[lane];
40322  (reinterpret_cast<VecElemU32*>(
40323  gpuDynInst->d_data))[lane * 3 + 2] = data2[lane];
40324  }
40325  }
40326 
40327  initMemWrite<3>(gpuDynInst);
40328  } // initiateAcc
40329 
40330  void
40332  {
40333  } // completeAcc
40334 
40336  InFmt_FLAT *iFmt)
40337  : Inst_FLAT(iFmt, "flat_store_dwordx4")
40338  {
40339  setFlag(MemoryRef);
40340  setFlag(Store);
40341  } // Inst_FLAT__FLAT_STORE_DWORDX4
40342 
40344  {
40345  } // ~Inst_FLAT__FLAT_STORE_DWORDX4
40346 
40347  // Untyped buffer store 4 dwords.
40348  void
40350  {
40351  Wavefront *wf = gpuDynInst->wavefront();
40352 
40353  if (wf->execMask().none()) {
40354  wf->decVMemInstsIssued();
40355  wf->decLGKMInstsIssued();
40356  wf->wrGmReqsInPipe--;
40357  wf->wrLmReqsInPipe--;
40358  return;
40359  }
40360 
40361  gpuDynInst->execUnitId = wf->execUnitId;
40362  gpuDynInst->exec_mask = wf->execMask();
40363  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40364  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40365 
40366  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
40367 
40368  addr.read();
40369 
40370  calcAddr(gpuDynInst, addr);
40371 
40372  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
40373  gpuDynInst->computeUnit()->globalMemoryPipe
40374  .issueRequest(gpuDynInst);
40375  wf->wrGmReqsInPipe--;
40376  wf->outstandingReqsWrGm++;
40377  } else {
40378  fatal("Non global flat instructions not implemented yet.\n");
40379  }
40380 
40381  gpuDynInst->wavefront()->outstandingReqs++;
40382  gpuDynInst->wavefront()->validateRequestCounters();
40383  }
40384 
40385  void
40387  {
40388  ConstVecOperandU32 data0(gpuDynInst, extData.DATA);
40389  ConstVecOperandU32 data1(gpuDynInst, extData.DATA + 1);
40390  ConstVecOperandU32 data2(gpuDynInst, extData.DATA + 2);
40391  ConstVecOperandU32 data3(gpuDynInst, extData.DATA + 3);
40392 
40393  data0.read();
40394  data1.read();
40395  data2.read();
40396  data3.read();
40397 
40398  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40399  if (gpuDynInst->exec_mask[lane]) {
40400  (reinterpret_cast<VecElemU32*>(
40401  gpuDynInst->d_data))[lane * 4] = data0[lane];
40402  (reinterpret_cast<VecElemU32*>(
40403  gpuDynInst->d_data))[lane * 4 + 1] = data1[lane];
40404  (reinterpret_cast<VecElemU32*>(
40405  gpuDynInst->d_data))[lane * 4 + 2] = data2[lane];
40406  (reinterpret_cast<VecElemU32*>(
40407  gpuDynInst->d_data))[lane * 4 + 3] = data3[lane];
40408  }
40409  }
40410 
40411  initMemWrite<4>(gpuDynInst);
40412  } // initiateAcc
40413 
40414  void
40416  {
40417  } // completeAcc
40418 
40420  : Inst_FLAT(iFmt, "flat_atomic_swap")
40421  {
40422  setFlag(AtomicExch);
40423  if (instData.GLC) {
40424  setFlag(AtomicReturn);
40425  } else {
40426  setFlag(AtomicNoReturn);
40427  } // if
40428  setFlag(MemoryRef);
40429  } // Inst_FLAT__FLAT_ATOMIC_SWAP
40430 
40432  {
40433  } // ~Inst_FLAT__FLAT_ATOMIC_SWAP
40434 
40435  // tmp = MEM[ADDR];
40436  // MEM[ADDR] = DATA;
40437  // RETURN_DATA = tmp.
40438  void
40440  {
40441  Wavefront *wf = gpuDynInst->wavefront();
40442 
40443  if (wf->execMask().none()) {
40444  wf->decVMemInstsIssued();
40445  wf->decLGKMInstsIssued();
40446  wf->wrGmReqsInPipe--;
40447  wf->rdGmReqsInPipe--;
40448  wf->wrLmReqsInPipe--;
40449  wf->rdLmReqsInPipe--;
40450  if (instData.GLC) {
40451  gpuDynInst->exec_mask = wf->execMask();
40452  wf->computeUnit->vrf[wf->simdId]->
40453  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
40454  }
40455  return;
40456  }
40457 
40458  gpuDynInst->execUnitId = wf->execUnitId;
40459  gpuDynInst->exec_mask = wf->execMask();
40460  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40461  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40462 
40463  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
40464 
40465  addr.read();
40466 
40467  calcAddr(gpuDynInst, addr);
40468 
40469  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL ||
40470  gpuDynInst->executedAs() == Enums::SC_PRIVATE) {
40471  // TODO: additional address computation required for scratch
40472  panic_if(gpuDynInst->executedAs() == Enums::SC_PRIVATE,
40473  "Flats to private aperture not tested yet\n");
40474  gpuDynInst->computeUnit()->globalMemoryPipe.
40475  issueRequest(gpuDynInst);
40476  wf->wrGmReqsInPipe--;
40477  wf->outstandingReqsWrGm++;
40478  wf->rdGmReqsInPipe--;
40479  wf->outstandingReqsRdGm++;
40480  } else {
40481  fatal("Non global flat instructions not implemented yet.\n");
40482  }
40483 
40484  gpuDynInst->wavefront()->outstandingReqs++;
40485  gpuDynInst->wavefront()->validateRequestCounters();
40486 
40487  ConstVecOperandU32 data(gpuDynInst, extData.DATA);
40488 
40489  data.read();
40490 
40491  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40492  if (gpuDynInst->exec_mask[lane]) {
40493  (reinterpret_cast<VecElemU32*>(gpuDynInst->a_data))[lane]
40494  = data[lane];
40495  }
40496  }
40497 
40498  } // execute
40499 
40500  void
40502  {
40503  initAtomicAccess<VecElemU32>(gpuDynInst);
40504  } // initiateAcc
40505 
40506  void
40508  {
40509  if (isAtomicRet()) {
40510  VecOperandU32 vdst(gpuDynInst, extData.VDST);
40511 
40512  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40513  if (gpuDynInst->exec_mask[lane]) {
40514  vdst[lane] = (reinterpret_cast<VecElemU32*>(
40515  gpuDynInst->d_data))[lane];
40516  }
40517  }
40518 
40519  vdst.write();
40520  }
40521  } // completeAcc
40522 
40523  // --- Inst_FLAT__FLAT_ATOMIC_CMPSWAP class methods ---
40524 
40527  : Inst_FLAT(iFmt, "flat_atomic_cmpswap")
40528  {
40529  setFlag(AtomicCAS);
40530  if (instData.GLC) {
40531  setFlag(AtomicReturn);
40532  } else {
40533  setFlag(AtomicNoReturn);
40534  } // if
40535  setFlag(MemoryRef);
40536  } // Inst_FLAT__FLAT_ATOMIC_CMPSWAP
40537 
40539  {
40540  } // ~Inst_FLAT__FLAT_ATOMIC_CMPSWAP
40541 
40542  // tmp = MEM[ADDR];
40543  // src = DATA[0];
40544  // cmp = DATA[1];
40545  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
40546  // RETURN_DATA[0] = tmp.
40547  void
40549  {
40550  Wavefront *wf = gpuDynInst->wavefront();
40551 
40552  if (wf->execMask().none()) {
40553  wf->decVMemInstsIssued();
40554  wf->decLGKMInstsIssued();
40555  wf->wrGmReqsInPipe--;
40556  wf->rdGmReqsInPipe--;
40557  wf->wrLmReqsInPipe--;
40558  wf->rdLmReqsInPipe--;
40559  if (instData.GLC) {
40560  gpuDynInst->exec_mask = wf->execMask();
40561  wf->computeUnit->vrf[wf->simdId]->
40562  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
40563  }
40564  return;
40565  }
40566 
40567  gpuDynInst->execUnitId = wf->execUnitId;
40568  gpuDynInst->exec_mask = wf->execMask();
40569  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40570  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40571 
40572  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
40573  ConstVecOperandU32 data(gpuDynInst, extData.DATA);
40574  ConstVecOperandU32 cmp(gpuDynInst, extData.DATA + 1);
40575 
40576  addr.read();
40577  data.read();
40578  cmp.read();
40579 
40580  calcAddr(gpuDynInst, addr);
40581 
40582  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40583  if (gpuDynInst->exec_mask[lane]) {
40584  (reinterpret_cast<VecElemU32*>(gpuDynInst->x_data))[lane]
40585  = data[lane];
40586  (reinterpret_cast<VecElemU32*>(gpuDynInst->a_data))[lane]
40587  = cmp[lane];
40588  }
40589  }
40590 
40591  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL ||
40592  gpuDynInst->executedAs() == Enums::SC_PRIVATE) {
40599  panic_if(gpuDynInst->executedAs() == Enums::SC_PRIVATE,
40600  "Flats to private aperture not tested yet\n");
40601  gpuDynInst->computeUnit()->globalMemoryPipe.
40602  issueRequest(gpuDynInst);
40603  wf->wrGmReqsInPipe--;
40604  wf->outstandingReqsWrGm++;
40605  wf->rdGmReqsInPipe--;
40606  wf->outstandingReqsRdGm++;
40607  } else {
40608  fatal("Non global flat instructions not implemented yet.\n");
40609  }
40610 
40611  gpuDynInst->wavefront()->outstandingReqs++;
40612  gpuDynInst->wavefront()->validateRequestCounters();
40613  }
40614 
40615  void
40617  {
40618  initAtomicAccess<VecElemU32>(gpuDynInst);
40619  } // initiateAcc
40620 
40621  void
40623  {
40624  if (isAtomicRet()) {
40625  VecOperandU32 vdst(gpuDynInst, extData.VDST);
40626 
40627  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40628  if (gpuDynInst->exec_mask[lane]) {
40629  vdst[lane] = (reinterpret_cast<VecElemU32*>(
40630  gpuDynInst->d_data))[lane];
40631  }
40632  }
40633 
40634  vdst.write();
40635  }
40636  } // completeAcc
40637 
40639  : Inst_FLAT(iFmt, "flat_atomic_add")
40640  {
40641  setFlag(AtomicAdd);
40642  if (instData.GLC) {
40643  setFlag(AtomicReturn);
40644  } else {
40645  setFlag(AtomicNoReturn);
40646  } // if
40647  setFlag(MemoryRef);
40648  } // Inst_FLAT__FLAT_ATOMIC_ADD
40649 
40651  {
40652  } // ~Inst_FLAT__FLAT_ATOMIC_ADD
40653 
40654  // tmp = MEM[ADDR];
40655  // MEM[ADDR] += DATA;
40656  // RETURN_DATA = tmp.
40657  void
40659  {
40660  Wavefront *wf = gpuDynInst->wavefront();
40661 
40662  if (wf->execMask().none()) {
40663  wf->decVMemInstsIssued();
40664  wf->decLGKMInstsIssued();
40665  wf->wrGmReqsInPipe--;
40666  wf->rdGmReqsInPipe--;
40667  wf->wrLmReqsInPipe--;
40668  wf->rdLmReqsInPipe--;
40669  if (instData.GLC) {
40670  gpuDynInst->exec_mask = wf->execMask();
40671  wf->computeUnit->vrf[wf->simdId]->
40672  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
40673  }
40674  return;
40675  }
40676 
40677  gpuDynInst->execUnitId = wf->execUnitId;
40678  gpuDynInst->exec_mask = wf->execMask();
40679  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40680  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40681 
40682  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
40683  ConstVecOperandU32 data(gpuDynInst, extData.DATA);
40684 
40685  addr.read();
40686  data.read();
40687 
40688  calcAddr(gpuDynInst, addr);
40689 
40690  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40691  if (gpuDynInst->exec_mask[lane]) {
40692  (reinterpret_cast<VecElemU32*>(gpuDynInst->a_data))[lane]
40693  = data[lane];
40694  }
40695  }
40696 
40697  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
40698  gpuDynInst->computeUnit()->globalMemoryPipe.
40699  issueRequest(gpuDynInst);
40700  wf->wrGmReqsInPipe--;
40701  wf->outstandingReqsWrGm++;
40702  wf->rdGmReqsInPipe--;
40703  wf->outstandingReqsRdGm++;
40704  } else {
40705  fatal("Non global flat instructions not implemented yet.\n");
40706  }
40707 
40708  gpuDynInst->wavefront()->outstandingReqs++;
40709  gpuDynInst->wavefront()->validateRequestCounters();
40710  }
40711 
40712  void
40714  {
40715  initAtomicAccess<VecElemU32>(gpuDynInst);
40716  } // initiateAcc
40717 
40718  void
40720  {
40721  if (isAtomicRet()) {
40722  VecOperandU32 vdst(gpuDynInst, extData.VDST);
40723 
40724  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40725  if (gpuDynInst->exec_mask[lane]) {
40726  vdst[lane] = (reinterpret_cast<VecElemU32*>(
40727  gpuDynInst->d_data))[lane];
40728  }
40729  }
40730 
40731  vdst.write();
40732  }
40733  } // completeAcc
40734 
40736  : Inst_FLAT(iFmt, "flat_atomic_sub")
40737  {
40738  setFlag(AtomicSub);
40739  if (instData.GLC) {
40740  setFlag(AtomicReturn);
40741  } else {
40742  setFlag(AtomicNoReturn);
40743  } // if
40744  setFlag(MemoryRef);
40745  } // Inst_FLAT__FLAT_ATOMIC_SUB
40746 
40748  {
40749  } // ~Inst_FLAT__FLAT_ATOMIC_SUB
40750 
40751  // tmp = MEM[ADDR];
40752  // MEM[ADDR] -= DATA;
40753  // RETURN_DATA = tmp.
40754  void
40756  {
40757  Wavefront *wf = gpuDynInst->wavefront();
40758 
40759  if (wf->execMask().none()) {
40760  wf->decVMemInstsIssued();
40761  wf->decLGKMInstsIssued();
40762  wf->wrGmReqsInPipe--;
40763  wf->rdGmReqsInPipe--;
40764  wf->wrLmReqsInPipe--;
40765  wf->rdLmReqsInPipe--;
40766  if (instData.GLC) {
40767  gpuDynInst->exec_mask = wf->execMask();
40768  wf->computeUnit->vrf[wf->simdId]->
40769  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
40770  }
40771  return;
40772  }
40773 
40774  gpuDynInst->execUnitId = wf->execUnitId;
40775  gpuDynInst->exec_mask = wf->execMask();
40776  gpuDynInst->latency.init(gpuDynInst->computeUnit());
40777  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
40778 
40779  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
40780  ConstVecOperandU32 data(gpuDynInst, extData.DATA);
40781 
40782  addr.read();
40783  data.read();
40784 
40785  calcAddr(gpuDynInst, addr);
40786 
40787  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40788  if (gpuDynInst->exec_mask[lane]) {
40789  (reinterpret_cast<VecElemU32*>(gpuDynInst->a_data))[lane]
40790  = data[lane];
40791  }
40792  }
40793 
40794  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
40795  gpuDynInst->computeUnit()->globalMemoryPipe.
40796  issueRequest(gpuDynInst);
40797  wf->wrGmReqsInPipe--;
40798  wf->outstandingReqsWrGm++;
40799  wf->rdGmReqsInPipe--;
40800  wf->outstandingReqsRdGm++;
40801  } else {
40802  fatal("Non global flat instructions not implemented yet.\n");
40803  }
40804 
40805  gpuDynInst->wavefront()->outstandingReqs++;
40806  gpuDynInst->wavefront()->validateRequestCounters();
40807  }
40808  void
40810  {
40811  initAtomicAccess<VecElemU32>(gpuDynInst);
40812  } // initiateAcc
40813 
40814  void
40816  {
40817  if (isAtomicRet()) {
40818  VecOperandU32 vdst(gpuDynInst, extData.VDST);
40819 
40820  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
40821  if (gpuDynInst->exec_mask[lane]) {
40822  vdst[lane] = (reinterpret_cast<VecElemU32*>(
40823  gpuDynInst->d_data))[lane];
40824  }
40825  }
40826 
40827  vdst.write();
40828  }
40829  } // completeAcc
40830 
40832  : Inst_FLAT(iFmt, "flat_atomic_smin")
40833  {
40834  setFlag(AtomicMin);
40835  if (instData.GLC) {
40836  setFlag(AtomicReturn);
40837  } else {
40838  setFlag(AtomicNoReturn);
40839  }
40840  setFlag(MemoryRef);
40841  } // Inst_FLAT__FLAT_ATOMIC_SMIN
40842 
40844  {
40845  } // ~Inst_FLAT__FLAT_ATOMIC_SMIN
40846 
40847  // tmp = MEM[ADDR];
40848  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (signed compare);
40849  // RETURN_DATA = tmp.
40850  void
40852  {
40854  }
40855 
40857  : Inst_FLAT(iFmt, "flat_atomic_umin")
40858  {
40859  setFlag(AtomicMin);
40860  if (instData.GLC) {
40861  setFlag(AtomicReturn);
40862  } else {
40863  setFlag(AtomicNoReturn);
40864  }
40865  setFlag(MemoryRef);
40866  } // Inst_FLAT__FLAT_ATOMIC_UMIN
40867 
40869  {
40870  } // ~Inst_FLAT__FLAT_ATOMIC_UMIN
40871 
40872  // tmp = MEM[ADDR];
40873  // MEM[ADDR] = (DATA < tmp) ? DATA : tmp (unsigned compare);
40874  // RETURN_DATA = tmp.
40875  void
40877  {
40879  }
40880 
40882  : Inst_FLAT(iFmt, "flat_atomic_smax")
40883  {
40884  setFlag(AtomicMax);
40885  if (instData.GLC) {
40886  setFlag(AtomicReturn);
40887  } else {
40888  setFlag(AtomicNoReturn);
40889  }
40890  setFlag(MemoryRef);
40891  } // Inst_FLAT__FLAT_ATOMIC_SMAX
40892 
40894  {
40895  } // ~Inst_FLAT__FLAT_ATOMIC_SMAX
40896 
40897  // tmp = MEM[ADDR];
40898  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (signed compare);
40899  // RETURN_DATA = tmp.
40900  void
40902  {
40904  }
40905 
40907  : Inst_FLAT(iFmt, "flat_atomic_umax")
40908  {
40909  setFlag(AtomicMax);
40910  if (instData.GLC) {
40911  setFlag(AtomicReturn);
40912  } else {
40913  setFlag(AtomicNoReturn);
40914  }
40915  setFlag(MemoryRef);
40916  } // Inst_FLAT__FLAT_ATOMIC_UMAX
40917 
40919  {
40920  } // ~Inst_FLAT__FLAT_ATOMIC_UMAX
40921 
40922  // tmp = MEM[ADDR];
40923  // MEM[ADDR] = (DATA > tmp) ? DATA : tmp (unsigned compare);
40924  // RETURN_DATA = tmp.
40925  void
40927  {
40929  }
40930 
40932  : Inst_FLAT(iFmt, "flat_atomic_and")
40933  {
40934  setFlag(AtomicAnd);
40935  if (instData.GLC) {
40936  setFlag(AtomicReturn);
40937  } else {
40938  setFlag(AtomicNoReturn);
40939  }
40940  setFlag(MemoryRef);
40941  } // Inst_FLAT__FLAT_ATOMIC_AND
40942 
40944  {
40945  } // ~Inst_FLAT__FLAT_ATOMIC_AND
40946 
40947  // tmp = MEM[ADDR];
40948  // MEM[ADDR] &= DATA;
40949  // RETURN_DATA = tmp.
40950  void
40952  {
40954  }
40955 
40957  : Inst_FLAT(iFmt, "flat_atomic_or")
40958  {
40959  setFlag(AtomicOr);
40960  if (instData.GLC) {
40961  setFlag(AtomicReturn);
40962  } else {
40963  setFlag(AtomicNoReturn);
40964  }
40965  setFlag(MemoryRef);
40966  } // Inst_FLAT__FLAT_ATOMIC_OR
40967 
40969  {
40970  } // ~Inst_FLAT__FLAT_ATOMIC_OR
40971 
40972  // tmp = MEM[ADDR];
40973  // MEM[ADDR] |= DATA;
40974  // RETURN_DATA = tmp.
40975  void
40977  {
40979  }
40980 
40982  : Inst_FLAT(iFmt, "flat_atomic_xor")
40983  {
40984  setFlag(AtomicXor);
40985  if (instData.GLC) {
40986  setFlag(AtomicReturn);
40987  } else {
40988  setFlag(AtomicNoReturn);
40989  }
40990  setFlag(MemoryRef);
40991  } // Inst_FLAT__FLAT_ATOMIC_XOR
40992 
40994  {
40995  } // ~Inst_FLAT__FLAT_ATOMIC_XOR
40996 
40997  // tmp = MEM[ADDR];
40998  // MEM[ADDR] ^= DATA;
40999  // RETURN_DATA = tmp.
41000  void
41002  {
41004  }
41005 
41007  : Inst_FLAT(iFmt, "flat_atomic_inc")
41008  {
41009  setFlag(AtomicInc);
41010  if (instData.GLC) {
41011  setFlag(AtomicReturn);
41012  } else {
41013  setFlag(AtomicNoReturn);
41014  }
41015  setFlag(MemoryRef);
41016  } // Inst_FLAT__FLAT_ATOMIC_INC
41017 
41019  {
41020  } // ~Inst_FLAT__FLAT_ATOMIC_INC
41021 
41022  // tmp = MEM[ADDR];
41023  // MEM[ADDR] = (tmp >= DATA) ? 0 : tmp + 1 (unsigned compare);
41024  // RETURN_DATA = tmp.
41025  void
41027  {
41028  Wavefront *wf = gpuDynInst->wavefront();
41029 
41030  if (wf->execMask().none()) {
41031  wf->decVMemInstsIssued();
41032  wf->decLGKMInstsIssued();
41033  wf->wrGmReqsInPipe--;
41034  wf->rdGmReqsInPipe--;
41035  wf->wrLmReqsInPipe--;
41036  wf->rdLmReqsInPipe--;
41037  if (instData.GLC) {
41038  gpuDynInst->exec_mask = wf->execMask();
41039  wf->computeUnit->vrf[wf->simdId]->
41040  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
41041  }
41042  return;
41043  }
41044 
41045  gpuDynInst->execUnitId = wf->execUnitId;
41046  gpuDynInst->exec_mask = wf->execMask();
41047  gpuDynInst->latency.init(gpuDynInst->computeUnit());
41048  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
41049 
41050  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
41051  ConstVecOperandU32 data(gpuDynInst, extData.DATA);
41052 
41053  addr.read();
41054  data.read();
41055 
41056  calcAddr(gpuDynInst, addr);
41057 
41058  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41059  if (gpuDynInst->exec_mask[lane]) {
41060  (reinterpret_cast<VecElemU32*>(gpuDynInst->a_data))[lane]
41061  = data[lane];
41062  }
41063  }
41064 
41065  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
41066  gpuDynInst->computeUnit()->globalMemoryPipe.
41067  issueRequest(gpuDynInst);
41068  wf->wrGmReqsInPipe--;
41069  wf->outstandingReqsWrGm++;
41070  wf->rdGmReqsInPipe--;
41071  wf->outstandingReqsRdGm++;
41072  } else {
41073  fatal("Non global flat instructions not implemented yet.\n");
41074  }
41075 
41076  gpuDynInst->wavefront()->outstandingReqs++;
41077  gpuDynInst->wavefront()->validateRequestCounters();
41078  }
41079 
41080  void
41082  {
41083  initAtomicAccess<VecElemU32>(gpuDynInst);
41084  } // initiateAcc
41085 
41086  void
41088  {
41089  if (isAtomicRet()) {
41090  VecOperandU32 vdst(gpuDynInst, extData.VDST);
41091 
41092  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41093  if (gpuDynInst->exec_mask[lane]) {
41094  vdst[lane] = (reinterpret_cast<VecElemU32*>(
41095  gpuDynInst->d_data))[lane];
41096  }
41097  }
41098 
41099  vdst.write();
41100  }
41101  } // completeAcc
41102 
41104  : Inst_FLAT(iFmt, "flat_atomic_dec")
41105  {
41106  setFlag(AtomicDec);
41107  if (instData.GLC) {
41108  setFlag(AtomicReturn);
41109  } else {
41110  setFlag(AtomicNoReturn);
41111  }
41112  setFlag(MemoryRef);
41113  } // Inst_FLAT__FLAT_ATOMIC_DEC
41114 
41116  {
41117  } // ~Inst_FLAT__FLAT_ATOMIC_DEC
41118 
41119  // tmp = MEM[ADDR];
41120  // MEM[ADDR] = (tmp == 0 || tmp > DATA) ? DATA : tmp - 1
41121  // (unsigned compare); RETURN_DATA = tmp.
41122  void
41124  {
41125  Wavefront *wf = gpuDynInst->wavefront();
41126 
41127  if (wf->execMask().none()) {
41128  wf->decVMemInstsIssued();
41129  wf->decLGKMInstsIssued();
41130  wf->wrGmReqsInPipe--;
41131  wf->rdGmReqsInPipe--;
41132  wf->wrLmReqsInPipe--;
41133  wf->rdLmReqsInPipe--;
41134  if (instData.GLC) {
41135  gpuDynInst->exec_mask = wf->execMask();
41136  wf->computeUnit->vrf[wf->simdId]->
41137  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
41138  }
41139  return;
41140  }
41141 
41142  gpuDynInst->execUnitId = wf->execUnitId;
41143  gpuDynInst->exec_mask = wf->execMask();
41144  gpuDynInst->latency.init(gpuDynInst->computeUnit());
41145  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
41146 
41147  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
41148  ConstVecOperandU32 data(gpuDynInst, extData.DATA);
41149 
41150  addr.read();
41151  data.read();
41152 
41153  calcAddr(gpuDynInst, addr);
41154 
41155  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41156  if (gpuDynInst->exec_mask[lane]) {
41157  (reinterpret_cast<VecElemU32*>(gpuDynInst->a_data))[lane]
41158  = data[lane];
41159  }
41160  }
41161 
41162  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
41163  gpuDynInst->computeUnit()->globalMemoryPipe.
41164  issueRequest(gpuDynInst);
41165  wf->wrGmReqsInPipe--;
41166  wf->outstandingReqsWrGm++;
41167  wf->rdGmReqsInPipe--;
41168  wf->outstandingReqsRdGm++;
41169  } else {
41170  fatal("Non global flat instructions not implemented yet.\n");
41171  }
41172 
41173  gpuDynInst->wavefront()->outstandingReqs++;
41174  gpuDynInst->wavefront()->validateRequestCounters();
41175  }
41176 
41177  void
41179  {
41180  initAtomicAccess<VecElemU32>(gpuDynInst);
41181  } // initiateAcc
41182 
41183  void
41185  {
41186  if (isAtomicRet()) {
41187  VecOperandU32 vdst(gpuDynInst, extData.VDST);
41188 
41189  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41190  if (gpuDynInst->exec_mask[lane]) {
41191  vdst[lane] = (reinterpret_cast<VecElemU32*>(
41192  gpuDynInst->d_data))[lane];
41193  }
41194  }
41195 
41196  vdst.write();
41197  }
41198  } // completeAcc
41199 
41201  InFmt_FLAT *iFmt)
41202  : Inst_FLAT(iFmt, "flat_atomic_swap_x2")
41203  {
41204  setFlag(AtomicExch);
41205  if (instData.GLC) {
41206  setFlag(AtomicReturn);
41207  } else {
41208  setFlag(AtomicNoReturn);
41209  }
41210  setFlag(MemoryRef);
41211  } // Inst_FLAT__FLAT_ATOMIC_SWAP_X2
41212 
41214  {
41215  } // ~Inst_FLAT__FLAT_ATOMIC_SWAP_X2
41216 
41217  // tmp = MEM[ADDR];
41218  // MEM[ADDR] = DATA[0:1];
41219  // RETURN_DATA[0:1] = tmp.
41220  void
41222  {
41224  }
41225 
41227  InFmt_FLAT *iFmt)
41228  : Inst_FLAT(iFmt, "flat_atomic_cmpswap_x2")
41229  {
41230  setFlag(AtomicCAS);
41231  if (instData.GLC) {
41232  setFlag(AtomicReturn);
41233  } else {
41234  setFlag(AtomicNoReturn);
41235  }
41236  setFlag(MemoryRef);
41237  } // Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2
41238 
41240  {
41241  } // ~Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2
41242 
41243  // tmp = MEM[ADDR];
41244  // src = DATA[0:1];
41245  // cmp = DATA[2:3];
41246  // MEM[ADDR] = (tmp == cmp) ? src : tmp;
41247  // RETURN_DATA[0:1] = tmp.
41248  void
41250  {
41251  Wavefront *wf = gpuDynInst->wavefront();
41252 
41253  if (wf->execMask().none()) {
41254  wf->decVMemInstsIssued();
41255  wf->decLGKMInstsIssued();
41256  wf->wrGmReqsInPipe--;
41257  wf->rdGmReqsInPipe--;
41258  wf->wrLmReqsInPipe--;
41259  wf->rdLmReqsInPipe--;
41260  if (instData.GLC) {
41261  gpuDynInst->exec_mask = wf->execMask();
41262  wf->computeUnit->vrf[wf->simdId]->
41263  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
41264  }
41265  return;
41266  }
41267 
41268  gpuDynInst->execUnitId = wf->execUnitId;
41269  gpuDynInst->exec_mask = wf->execMask();
41270  gpuDynInst->latency.init(gpuDynInst->computeUnit());
41271  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
41272 
41273  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
41274  ConstVecOperandU64 data(gpuDynInst, extData.DATA);
41275  ConstVecOperandU64 cmp(gpuDynInst, extData.DATA + 2);
41276 
41277  addr.read();
41278  data.read();
41279  cmp.read();
41280 
41281  calcAddr(gpuDynInst, addr);
41282 
41283  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41284  if (gpuDynInst->exec_mask[lane]) {
41285  (reinterpret_cast<VecElemU64*>(gpuDynInst->x_data))[lane]
41286  = data[lane];
41287  (reinterpret_cast<VecElemU64*>(gpuDynInst->a_data))[lane]
41288  = cmp[lane];
41289  }
41290  }
41291 
41292  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL ||
41293  gpuDynInst->executedAs() == Enums::SC_PRIVATE) {
41300  panic_if(gpuDynInst->executedAs() == Enums::SC_PRIVATE,
41301  "Flats to private aperture not tested yet\n");
41302  gpuDynInst->computeUnit()->globalMemoryPipe.
41303  issueRequest(gpuDynInst);
41304  wf->wrGmReqsInPipe--;
41305  wf->outstandingReqsWrGm++;
41306  wf->rdGmReqsInPipe--;
41307  wf->outstandingReqsRdGm++;
41308  } else {
41309  fatal("Non global flat instructions not implemented yet.\n");
41310  }
41311 
41312  gpuDynInst->wavefront()->outstandingReqs++;
41313  gpuDynInst->wavefront()->validateRequestCounters();
41314  }
41315 
41316  void
41318  {
41319  initAtomicAccess<VecElemU64>(gpuDynInst);
41320  } // initiateAcc
41321 
41322  void
41324  {
41325  if (isAtomicRet()) {
41326  VecOperandU64 vdst(gpuDynInst, extData.VDST);
41327 
41328  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41329  if (gpuDynInst->exec_mask[lane]) {
41330  vdst[lane] = (reinterpret_cast<VecElemU64*>(
41331  gpuDynInst->d_data))[lane];
41332  }
41333  }
41334 
41335  vdst.write();
41336  }
41337  } // completeAcc
41338 
41340  InFmt_FLAT *iFmt)
41341  : Inst_FLAT(iFmt, "flat_atomic_add_x2")
41342  {
41343  setFlag(AtomicAdd);
41344  if (instData.GLC) {
41345  setFlag(AtomicReturn);
41346  } else {
41347  setFlag(AtomicNoReturn);
41348  }
41349  setFlag(MemoryRef);
41350  } // Inst_FLAT__FLAT_ATOMIC_ADD_X2
41351 
41353  {
41354  } // ~Inst_FLAT__FLAT_ATOMIC_ADD_X2
41355 
41356  // tmp = MEM[ADDR];
41357  // MEM[ADDR] += DATA[0:1];
41358  // RETURN_DATA[0:1] = tmp.
41359  void
41361  {
41362  Wavefront *wf = gpuDynInst->wavefront();
41363 
41364  if (wf->execMask().none()) {
41365  wf->decVMemInstsIssued();
41366  wf->decLGKMInstsIssued();
41367  wf->wrGmReqsInPipe--;
41368  wf->rdGmReqsInPipe--;
41369  wf->wrLmReqsInPipe--;
41370  wf->rdLmReqsInPipe--;
41371  if (instData.GLC) {
41372  gpuDynInst->exec_mask = wf->execMask();
41373  wf->computeUnit->vrf[wf->simdId]->
41374  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
41375  }
41376  return;
41377  }
41378 
41379  gpuDynInst->execUnitId = wf->execUnitId;
41380  gpuDynInst->exec_mask = wf->execMask();
41381  gpuDynInst->latency.init(gpuDynInst->computeUnit());
41382  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
41383 
41384  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
41385  ConstVecOperandU64 data(gpuDynInst, extData.DATA);
41386 
41387  addr.read();
41388  data.read();
41389 
41390  calcAddr(gpuDynInst, addr);
41391 
41392  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41393  if (gpuDynInst->exec_mask[lane]) {
41394  (reinterpret_cast<VecElemU64*>(gpuDynInst->a_data))[lane]
41395  = data[lane];
41396  }
41397  }
41398 
41399  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
41400  gpuDynInst->computeUnit()->globalMemoryPipe.
41401  issueRequest(gpuDynInst);
41402  wf->wrGmReqsInPipe--;
41403  wf->outstandingReqsWrGm++;
41404  wf->rdGmReqsInPipe--;
41405  wf->outstandingReqsRdGm++;
41406  } else {
41407  fatal("Non global flat instructions not implemented yet.\n");
41408  }
41409 
41410  gpuDynInst->wavefront()->outstandingReqs++;
41411  gpuDynInst->wavefront()->validateRequestCounters();
41412  }
41413 
41414  void
41416  {
41417  initAtomicAccess<VecElemU64>(gpuDynInst);
41418  } // initiateAcc
41419 
41420  void
41422  {
41423  if (isAtomicRet()) {
41424  VecOperandU64 vdst(gpuDynInst, extData.VDST);
41425 
41426 
41427  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41428  if (gpuDynInst->exec_mask[lane]) {
41429  vdst[lane] = (reinterpret_cast<VecElemU64*>(
41430  gpuDynInst->d_data))[lane];
41431  }
41432  }
41433 
41434  vdst.write();
41435  }
41436  } // completeAcc
41437 
41439  InFmt_FLAT *iFmt)
41440  : Inst_FLAT(iFmt, "flat_atomic_sub_x2")
41441  {
41442  setFlag(AtomicSub);
41443  if (instData.GLC) {
41444  setFlag(AtomicReturn);
41445  } else {
41446  setFlag(AtomicNoReturn);
41447  }
41448  setFlag(MemoryRef);
41449  } // Inst_FLAT__FLAT_ATOMIC_SUB_X2
41450 
41452  {
41453  } // ~Inst_FLAT__FLAT_ATOMIC_SUB_X2
41454 
41455  // tmp = MEM[ADDR];
41456  // MEM[ADDR] -= DATA[0:1];
41457  // RETURN_DATA[0:1] = tmp.
41458  void
41460  {
41461  Wavefront *wf = gpuDynInst->wavefront();
41462 
41463  if (wf->execMask().none()) {
41464  wf->decVMemInstsIssued();
41465  wf->decLGKMInstsIssued();
41466  wf->wrGmReqsInPipe--;
41467  wf->rdGmReqsInPipe--;
41468  wf->wrLmReqsInPipe--;
41469  wf->rdLmReqsInPipe--;
41470  if (instData.GLC) {
41471  gpuDynInst->exec_mask = wf->execMask();
41472  wf->computeUnit->vrf[wf->simdId]->
41473  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
41474  }
41475  return;
41476  }
41477 
41478  gpuDynInst->execUnitId = wf->execUnitId;
41479  gpuDynInst->exec_mask = wf->execMask();
41480  gpuDynInst->latency.init(gpuDynInst->computeUnit());
41481  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
41482 
41483  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
41484  ConstVecOperandU64 data(gpuDynInst, extData.DATA);
41485 
41486  addr.read();
41487  data.read();
41488 
41489  calcAddr(gpuDynInst, addr);
41490 
41491  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41492  if (gpuDynInst->exec_mask[lane]) {
41493  (reinterpret_cast<VecElemU64*>(gpuDynInst->a_data))[lane]
41494  = data[lane];
41495  }
41496  }
41497 
41498  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
41499  gpuDynInst->computeUnit()->globalMemoryPipe.
41500  issueRequest(gpuDynInst);
41501  wf->wrGmReqsInPipe--;
41502  wf->outstandingReqsWrGm++;
41503  wf->rdGmReqsInPipe--;
41504  wf->outstandingReqsRdGm++;
41505  } else {
41506  fatal("Non global flat instructions not implemented yet.\n");
41507  }
41508 
41509  gpuDynInst->wavefront()->outstandingReqs++;
41510  gpuDynInst->wavefront()->validateRequestCounters();
41511  }
41512 
41513  void
41515  {
41516  initAtomicAccess<VecElemU64>(gpuDynInst);
41517  } // initiateAcc
41518 
41519  void
41521  {
41522  if (isAtomicRet()) {
41523  VecOperandU64 vdst(gpuDynInst, extData.VDST);
41524 
41525 
41526  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41527  if (gpuDynInst->exec_mask[lane]) {
41528  vdst[lane] = (reinterpret_cast<VecElemU64*>(
41529  gpuDynInst->d_data))[lane];
41530  }
41531  }
41532 
41533  vdst.write();
41534  }
41535  } // completeAcc
41536 
41538  InFmt_FLAT *iFmt)
41539  : Inst_FLAT(iFmt, "flat_atomic_smin_x2")
41540  {
41541  setFlag(AtomicMin);
41542  if (instData.GLC) {
41543  setFlag(AtomicReturn);
41544  } else {
41545  setFlag(AtomicNoReturn);
41546  }
41547  setFlag(MemoryRef);
41548  } // Inst_FLAT__FLAT_ATOMIC_SMIN_X2
41549 
41551  {
41552  } // ~Inst_FLAT__FLAT_ATOMIC_SMIN_X2
41553 
41554  // tmp = MEM[ADDR];
41555  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (signed compare);
41556  // RETURN_DATA[0:1] = tmp.
41557  void
41559  {
41561  }
41562 
41564  InFmt_FLAT *iFmt)
41565  : Inst_FLAT(iFmt, "flat_atomic_umin_x2")
41566  {
41567  setFlag(AtomicMin);
41568  if (instData.GLC) {
41569  setFlag(AtomicReturn);
41570  } else {
41571  setFlag(AtomicNoReturn);
41572  }
41573  setFlag(MemoryRef);
41574  } // Inst_FLAT__FLAT_ATOMIC_UMIN_X2
41575 
41577  {
41578  } // ~Inst_FLAT__FLAT_ATOMIC_UMIN_X2
41579 
41580  // tmp = MEM[ADDR];
41581  // MEM[ADDR] -= (DATA[0:1] < tmp) ? DATA[0:1] : tmp (unsigned compare);
41582  // RETURN_DATA[0:1] = tmp.
41583  void
41585  {
41587  }
41588 
41590  InFmt_FLAT *iFmt)
41591  : Inst_FLAT(iFmt, "flat_atomic_smax_x2")
41592  {
41593  setFlag(AtomicMax);
41594  if (instData.GLC) {
41595  setFlag(AtomicReturn);
41596  } else {
41597  setFlag(AtomicNoReturn);
41598  }
41599  setFlag(MemoryRef);
41600  } // Inst_FLAT__FLAT_ATOMIC_SMAX_X2
41601 
41603  {
41604  } // ~Inst_FLAT__FLAT_ATOMIC_SMAX_X2
41605 
41606  // tmp = MEM[ADDR];
41607  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (signed compare);
41608  // RETURN_DATA[0:1] = tmp.
41609  void
41611  {
41613  }
41614 
41616  InFmt_FLAT *iFmt)
41617  : Inst_FLAT(iFmt, "flat_atomic_umax_x2")
41618  {
41619  setFlag(AtomicMax);
41620  if (instData.GLC) {
41621  setFlag(AtomicReturn);
41622  } else {
41623  setFlag(AtomicNoReturn);
41624  }
41625  setFlag(MemoryRef);
41626  } // Inst_FLAT__FLAT_ATOMIC_UMAX_X2
41627 
41629  {
41630  } // ~Inst_FLAT__FLAT_ATOMIC_UMAX_X2
41631 
41632  // tmp = MEM[ADDR];
41633  // MEM[ADDR] -= (DATA[0:1] > tmp) ? DATA[0:1] : tmp (unsigned compare);
41634  // RETURN_DATA[0:1] = tmp.
41635  void
41637  {
41639  }
41640 
41642  InFmt_FLAT *iFmt)
41643  : Inst_FLAT(iFmt, "flat_atomic_and_x2")
41644  {
41645  setFlag(AtomicAnd);
41646  if (instData.GLC) {
41647  setFlag(AtomicReturn);
41648  } else {
41649  setFlag(AtomicNoReturn);
41650  }
41651  setFlag(MemoryRef);
41652  } // Inst_FLAT__FLAT_ATOMIC_AND_X2
41653 
41655  {
41656  } // ~Inst_FLAT__FLAT_ATOMIC_AND_X2
41657 
41658  // tmp = MEM[ADDR];
41659  // MEM[ADDR] &= DATA[0:1];
41660  // RETURN_DATA[0:1] = tmp.
41661  void
41663  {
41665  }
41666 
41668  InFmt_FLAT *iFmt)
41669  : Inst_FLAT(iFmt, "flat_atomic_or_x2")
41670  {
41671  setFlag(AtomicOr);
41672  if (instData.GLC) {
41673  setFlag(AtomicReturn);
41674  } else {
41675  setFlag(AtomicNoReturn);
41676  }
41677  setFlag(MemoryRef);
41678  } // Inst_FLAT__FLAT_ATOMIC_OR_X2
41679 
41681  {
41682  } // ~Inst_FLAT__FLAT_ATOMIC_OR_X2
41683 
41684  // tmp = MEM[ADDR];
41685  // MEM[ADDR] |= DATA[0:1];
41686  // RETURN_DATA[0:1] = tmp.
41687  void
41689  {
41691  }
41692 
41694  InFmt_FLAT *iFmt)
41695  : Inst_FLAT(iFmt, "flat_atomic_xor_x2")
41696  {
41697  setFlag(AtomicXor);
41698  if (instData.GLC) {
41699  setFlag(AtomicReturn);
41700  } else {
41701  setFlag(AtomicNoReturn);
41702  }
41703  setFlag(MemoryRef);
41704  } // Inst_FLAT__FLAT_ATOMIC_XOR_X2
41705 
41707  {
41708  } // ~Inst_FLAT__FLAT_ATOMIC_XOR_X2
41709 
41710  // tmp = MEM[ADDR];
41711  // MEM[ADDR] ^= DATA[0:1];
41712  // RETURN_DATA[0:1] = tmp.
41713  void
41715  {
41717  }
41718 
41720  InFmt_FLAT *iFmt)
41721  : Inst_FLAT(iFmt, "flat_atomic_inc_x2")
41722  {
41723  setFlag(AtomicInc);
41724  if (instData.GLC) {
41725  setFlag(AtomicReturn);
41726  } else {
41727  setFlag(AtomicNoReturn);
41728  }
41729  setFlag(MemoryRef);
41730  } // Inst_FLAT__FLAT_ATOMIC_INC_X2
41731 
41733  {
41734  } // ~Inst_FLAT__FLAT_ATOMIC_INC_X2
41735 
41736  // tmp = MEM[ADDR];
41737  // MEM[ADDR] = (tmp >= DATA[0:1]) ? 0 : tmp + 1 (unsigned compare);
41738  // RETURN_DATA[0:1] = tmp.
41739  void
41741  {
41742  Wavefront *wf = gpuDynInst->wavefront();
41743 
41744  if (wf->execMask().none()) {
41745  wf->decVMemInstsIssued();
41746  wf->decLGKMInstsIssued();
41747  wf->wrGmReqsInPipe--;
41748  wf->rdGmReqsInPipe--;
41749  wf->wrLmReqsInPipe--;
41750  wf->rdLmReqsInPipe--;
41751  if (instData.GLC) {
41752  gpuDynInst->exec_mask = wf->execMask();
41753  wf->computeUnit->vrf[wf->simdId]->
41754  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
41755  }
41756  return;
41757  }
41758 
41759  gpuDynInst->execUnitId = wf->execUnitId;
41760  gpuDynInst->exec_mask = wf->execMask();
41761  gpuDynInst->latency.init(gpuDynInst->computeUnit());
41762  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
41763 
41764  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
41765  ConstVecOperandU64 data(gpuDynInst, extData.DATA);
41766 
41767  addr.read();
41768  data.read();
41769 
41770  calcAddr(gpuDynInst, addr);
41771 
41772  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41773  if (gpuDynInst->exec_mask[lane]) {
41774  (reinterpret_cast<VecElemU64*>(gpuDynInst->a_data))[lane]
41775  = data[lane];
41776  }
41777  }
41778 
41779  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
41780  gpuDynInst->computeUnit()->globalMemoryPipe.
41781  issueRequest(gpuDynInst);
41782  wf->wrGmReqsInPipe--;
41783  wf->outstandingReqsWrGm++;
41784  wf->rdGmReqsInPipe--;
41785  wf->outstandingReqsRdGm++;
41786  } else {
41787  fatal("Non global flat instructions not implemented yet.\n");
41788  }
41789 
41790  gpuDynInst->wavefront()->outstandingReqs++;
41791  gpuDynInst->wavefront()->validateRequestCounters();
41792  }
41793 
41794  void
41796  {
41797  initAtomicAccess<VecElemU64>(gpuDynInst);
41798  } // initiateAcc
41799 
41800  void
41802  {
41803  if (isAtomicRet()) {
41804  VecOperandU64 vdst(gpuDynInst, extData.VDST);
41805 
41806 
41807  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41808  if (gpuDynInst->exec_mask[lane]) {
41809  vdst[lane] = (reinterpret_cast<VecElemU64*>(
41810  gpuDynInst->d_data))[lane];
41811  }
41812  }
41813 
41814  vdst.write();
41815  }
41816  } // completeAcc
41817 
41819  InFmt_FLAT *iFmt)
41820  : Inst_FLAT(iFmt, "flat_atomic_dec_x2")
41821  {
41822  setFlag(AtomicDec);
41823  if (instData.GLC) {
41824  setFlag(AtomicReturn);
41825  } else {
41826  setFlag(AtomicNoReturn);
41827  }
41828  setFlag(MemoryRef);
41829  } // Inst_FLAT__FLAT_ATOMIC_DEC_X2
41830 
41832  {
41833  } // ~Inst_FLAT__FLAT_ATOMIC_DEC_X2
41834 
41835  // tmp = MEM[ADDR];
41836  // MEM[ADDR] = (tmp == 0 || tmp > DATA[0:1]) ? DATA[0:1] : tmp - 1
41837  // (unsigned compare);
41838  // RETURN_DATA[0:1] = tmp.
41839  void
41841  {
41842  Wavefront *wf = gpuDynInst->wavefront();
41843 
41844  if (wf->execMask().none()) {
41845  wf->decVMemInstsIssued();
41846  wf->decLGKMInstsIssued();
41847  wf->wrGmReqsInPipe--;
41848  wf->rdGmReqsInPipe--;
41849  wf->wrLmReqsInPipe--;
41850  wf->rdLmReqsInPipe--;
41851  if (instData.GLC) {
41852  gpuDynInst->exec_mask = wf->execMask();
41853  wf->computeUnit->vrf[wf->simdId]->
41854  scheduleWriteOperandsFromLoad(wf, gpuDynInst);
41855  }
41856  return;
41857  }
41858 
41859  gpuDynInst->execUnitId = wf->execUnitId;
41860  gpuDynInst->exec_mask = wf->execMask();
41861  gpuDynInst->latency.init(gpuDynInst->computeUnit());
41862  gpuDynInst->latency.set(gpuDynInst->computeUnit()->clockPeriod());
41863 
41864  ConstVecOperandU64 addr(gpuDynInst, extData.ADDR);
41865  ConstVecOperandU64 data(gpuDynInst, extData.DATA);
41866 
41867  addr.read();
41868  data.read();
41869 
41870  calcAddr(gpuDynInst, addr);
41871 
41872  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41873  if (gpuDynInst->exec_mask[lane]) {
41874  (reinterpret_cast<VecElemU64*>(gpuDynInst->a_data))[lane]
41875  = data[lane];
41876  }
41877  }
41878 
41879  if (gpuDynInst->executedAs() == Enums::SC_GLOBAL) {
41880  gpuDynInst->computeUnit()->globalMemoryPipe.
41881  issueRequest(gpuDynInst);
41882  wf->wrGmReqsInPipe--;
41883  wf->outstandingReqsWrGm++;
41884  wf->rdGmReqsInPipe--;
41885  wf->outstandingReqsRdGm++;
41886  } else {
41887  fatal("Non global flat instructions not implemented yet.\n");
41888  }
41889 
41890  gpuDynInst->wavefront()->outstandingReqs++;
41891  gpuDynInst->wavefront()->validateRequestCounters();
41892  }
41893 
41894  void
41896  {
41897  initAtomicAccess<VecElemU64>(gpuDynInst);
41898  } // initiateAcc
41899 
41900  void
41902  {
41903  if (isAtomicRet()) {
41904  VecOperandU64 vdst(gpuDynInst, extData.VDST);
41905 
41906 
41907  for (int lane = 0; lane < NumVecElemPerVecReg; ++lane) {
41908  if (gpuDynInst->exec_mask[lane]) {
41909  vdst[lane] = (reinterpret_cast<VecElemU64*>(
41910  gpuDynInst->d_data))[lane];
41911  }
41912  }
41913 
41914  vdst.write();
41915  }
41916  } // completeAcc
41917 } // namespace Gcn3ISA
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD_CL::~Inst_MIMG__IMAGE_SAMPLE_CD_CL
~Inst_MIMG__IMAGE_SAMPLE_CD_CL()
Definition: instructions.cc:39287
Gcn3ISA::Inst_VOP3__V_RCP_F32::Inst_VOP3__V_RCP_F32
Inst_VOP3__V_RCP_F32(InFmt_VOP3 *)
Definition: instructions.cc:26446
Gcn3ISA::Inst_VOP3__V_CMP_NGT_F32::~Inst_VOP3__V_CMP_NGT_F32
~Inst_VOP3__V_CMP_NGT_F32()
Definition: instructions.cc:17040
Gcn3ISA::Inst_VOPC__V_CMP_LT_U16::Inst_VOPC__V_CMP_LT_U16
Inst_VOPC__V_CMP_LT_U16(InFmt_VOPC *)
Definition: instructions.cc:12820
Gcn3ISA::InFmt_FLAT::GLC
unsigned int GLC
Definition: gpu_decoder.hh:1389
Gcn3ISA::Inst_SOPP__S_CBRANCH_CDBGSYS::Inst_SOPP__S_CBRANCH_CDBGSYS
Inst_SOPP__S_CBRANCH_CDBGSYS(InFmt_SOPP *)
Definition: instructions.cc:4331
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW::~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW
~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW()
Definition: instructions.cc:37252
Gcn3ISA::Inst_DS__DS_OR_SRC2_B64::Inst_DS__DS_OR_SRC2_B64
Inst_DS__DS_OR_SRC2_B64(InFmt_DS *)
Definition: instructions.cc:34352
Gcn3ISA::Inst_VOPC__V_CMP_LG_F32::Inst_VOPC__V_CMP_LG_F32
Inst_VOPC__V_CMP_LG_F32(InFmt_VOPC *)
Definition: instructions.cc:10652
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_AND_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37038
Gcn3ISA::Inst_SOPK__S_CMPK_GE_I32::~Inst_SOPK__S_CMPK_GE_I32
~Inst_SOPK__S_CMPK_GE_I32()
Definition: instructions.cc:1487
Gcn3ISA::Inst_DS__DS_XOR_RTN_B32::Inst_DS__DS_XOR_RTN_B32
Inst_DS__DS_XOR_RTN_B32(InFmt_DS *)
Definition: instructions.cc:31852
Gcn3ISA::Inst_DS__DS_MIN_F64::Inst_DS__DS_MIN_F64
Inst_DS__DS_MIN_F64(InFmt_DS *)
Definition: instructions.cc:33095
Gcn3ISA::Inst_VOP3__V_CMP_O_F32::~Inst_VOP3__V_CMP_O_F32
~Inst_VOP3__V_CMP_O_F32()
Definition: instructions.cc:16906
Gcn3ISA::Inst_VOP3__V_CMPX_T_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23101
Gcn3ISA::Inst_SOP1__S_MOV_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1923
Gcn3ISA::Inst_DS__DS_XOR_SRC2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34385
Gcn3ISA::Inst_VOPC__V_CMP_NLT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10957
Gcn3ISA::Inst_VOP1__V_RNDNE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8095
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_L::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38890
Gcn3ISA::Inst_VOP3__V_CMP_F_F32::~Inst_VOP3__V_CMP_F_F32
~Inst_VOP3__V_CMP_F_F32()
Definition: instructions.cc:16681
Gcn3ISA::Inst_VOP3__V_CMP_GE_U32::~Inst_VOP3__V_CMP_GE_U32
~Inst_VOP3__V_CMP_GE_U32()
Definition: instructions.cc:21191
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_O::~Inst_MIMG__IMAGE_GATHER4_O
~Inst_MIMG__IMAGE_GATHER4_O()
Definition: instructions.cc:39051
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38361
Gcn3ISA::Inst_DS__DS_WRITE_B128::Inst_DS__DS_WRITE_B128
Inst_DS__DS_WRITE_B128(InFmt_DS *)
Definition: instructions.cc:34471
Gcn3ISA::Inst_DS__DS_WRITE2_B32::~Inst_DS__DS_WRITE2_B32
~Inst_DS__DS_WRITE2_B32()
Definition: instructions.cc:31295
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_ADD_X2::Inst_FLAT__FLAT_ATOMIC_ADD_X2
Inst_FLAT__FLAT_ATOMIC_ADD_X2(InFmt_FLAT *)
Definition: instructions.cc:41339
Gcn3ISA::Inst_VOP2__V_MIN_F32::Inst_VOP2__V_MIN_F32
Inst_VOP2__V_MIN_F32(InFmt_VOP2 *)
Definition: instructions.cc:5883
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4999
Gcn3ISA::Inst_MIMG__IMAGE_STORE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37859
Gcn3ISA::Inst_VOP3__V_CMPX_LT_U32::Inst_VOP3__V_CMPX_LT_U32
Inst_VOP3__V_CMPX_LT_U32(InFmt_VOP3 *)
Definition: instructions.cc:21594
Gcn3ISA::Inst_VOP3__V_CMPX_GT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22658
Gcn3ISA::Inst_DS__DS_AND_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31829
Gcn3ISA::Inst_DS__DS_MAX_RTN_I64::Inst_DS__DS_MAX_RTN_I64
Inst_DS__DS_MAX_RTN_I64(InFmt_DS *)
Definition: instructions.cc:33245
Gcn3ISA::Inst_VOPC__V_CMP_EQ_F16::~Inst_VOPC__V_CMP_EQ_F16
~Inst_VOPC__V_CMP_EQ_F16()
Definition: instructions.cc:9962
Gcn3ISA::Inst_VOP3__V_RCP_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26573
Gcn3ISA::Inst_SMEM::instData
InFmt_SMEM instData
Definition: op_encodings.hh:263
Gcn3ISA::Inst_VOP3__V_MUL_F32::Inst_VOP3__V_MUL_F32
Inst_VOP3__V_MUL_F32(InFmt_VOP3 *)
Definition: instructions.cc:23433
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37258
Gcn3ISA::Inst_VOP2__V_ADD_U32::Inst_VOP2__V_ADD_U32
Inst_VOP2__V_ADD_U32(InFmt_VOP2 *)
Definition: instructions.cc:6475
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34582
Gcn3ISA::Inst_VOP3__V_INTERP_P2_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29962
Gcn3ISA::Inst_VOPC__V_CMP_GE_I32::~Inst_VOPC__V_CMP_GE_I32
~Inst_VOPC__V_CMP_GE_I32()
Definition: instructions.cc:13711
Gcn3ISA::Inst_VOPC__V_CMPX_NLE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10438
Gcn3ISA::Inst_DS__DS_MIN_SRC2_I64::Inst_DS__DS_MIN_SRC2_I64
Inst_DS__DS_MIN_SRC2_I64(InFmt_DS *)
Definition: instructions.cc:34257
Gcn3ISA::Inst_VOP3__V_RCP_IFLAG_F32::~Inst_VOP3__V_RCP_IFLAG_F32
~Inst_VOP3__V_RCP_IFLAG_F32()
Definition: instructions.cc:26491
Gcn3ISA::InFmt_VOP3_1::SRC1
unsigned int SRC1
Definition: gpu_decoder.hh:1558
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:10214
Gcn3ISA::Inst_VOP3__V_CVT_F32_F16::Inst_VOP3__V_CVT_F32_F16
Inst_VOP3__V_CVT_F32_F16(InFmt_VOP3 *)
Definition: instructions.cc:25569
Gcn3ISA::Inst_MIMG__IMAGE_STORE_MIP_PCK::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37951
Gcn3ISA::Inst_SOPP__S_CBRANCH_EXECZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4056
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SUB::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40815
Gcn3ISA::Inst_VOP3__V_CMPX_F_I32::Inst_VOP3__V_CMPX_F_I32
Inst_VOP3__V_CMPX_F_I32(InFmt_VOP3 *)
Definition: instructions.cc:21252
ComputeUnit::ComputeUnitStats::completedWGs
Stats::Scalar completedWGs
Definition: compute_unit.hh:1077
Gcn3ISA::Inst_VOP3__V_SUBREV_F16::Inst_VOP3__V_SUBREV_F16
Inst_VOP3__V_SUBREV_F16(InFmt_VOP3 *)
Definition: instructions.cc:24612
Gcn3ISA::Inst_VOPC__V_CMP_NGT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11890
Gcn3ISA::InFmt_SMEM_1::OFFSET
unsigned int OFFSET
Definition: gpu_decoder.hh:1485
Gcn3ISA::Inst_VOP3__V_CMPX_GT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21736
Gcn3ISA::Inst_VOPC__V_CMPX_F_U64::Inst_VOPC__V_CMPX_F_U64
Inst_VOPC__V_CMPX_F_U64(InFmt_VOPC *)
Definition: instructions.cc:15214
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:4628
Gcn3ISA::Inst_VOP3__V_CMP_LT_I16::Inst_VOP3__V_CMP_LT_I16
Inst_VOP3__V_CMP_LT_I16(InFmt_VOP3 *)
Definition: instructions.cc:19433
Gcn3ISA::Inst_MIMG__IMAGE_STORE_MIP_PCK::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37940
Gcn3ISA::Inst_VOP2__V_MADMK_F32::~Inst_VOP2__V_MADMK_F32
~Inst_VOP2__V_MADMK_F32()
Definition: instructions.cc:6413
Gcn3ISA::Inst_VOP3__V_TRUNC_F16::Inst_VOP3__V_TRUNC_F16
Inst_VOP3__V_TRUNC_F16(InFmt_VOP3 *)
Definition: instructions.cc:27467
Gcn3ISA::Inst_VOP3__V_SAD_U8::~Inst_VOP3__V_SAD_U8
~Inst_VOP3__V_SAD_U8()
Definition: instructions.cc:28754
Gcn3ISA::Inst_VOPC__V_CMP_NGE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10796
Gcn3ISA::Inst_DS__DS_READ_B128::Inst_DS__DS_READ_B128
Inst_DS__DS_READ_B128(InFmt_DS *)
Definition: instructions.cc:34508
Gcn3ISA::Inst_VOP3__V_ALIGNBYTE_B32::Inst_VOP3__V_ALIGNBYTE_B32
Inst_VOP3__V_ALIGNBYTE_B32(InFmt_VOP3 *)
Definition: instructions.cc:28263
Gcn3ISA::Inst_VOP1__V_FLOOR_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8276
Gcn3ISA::Inst_SOP2__S_XOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:546
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:34799
Gcn3ISA::Inst_VOP3__V_CMPX_GE_F16::Inst_VOP3__V_CMPX_GE_F16
Inst_VOP3__V_CMPX_GE_F16(InFmt_VOP3 *)
Definition: instructions.cc:16472
Gcn3ISA::Inst_VOP3__V_DIV_FIXUP_F64::~Inst_VOP3__V_DIV_FIXUP_F64
~Inst_VOP3__V_DIV_FIXUP_F64()
Definition: instructions.cc:29080
Gcn3ISA::Inst_VINTRP__V_INTERP_P1_F32::~Inst_VINTRP__V_INTERP_P1_F32
~Inst_VINTRP__V_INTERP_P1_F32()
Definition: instructions.cc:15468
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:30965
Gcn3ISA::Inst_VOPC__V_CMP_F_U16::Inst_VOPC__V_CMP_F_U16
Inst_VOPC__V_CMP_F_U16(InFmt_VOPC *)
Definition: instructions.cc:12794
Gcn3ISA::Inst_VOP2__V_ADD_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6491
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34672
Gcn3ISA::Inst_VOP3__V_CMP_LE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20767
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:26996
Gcn3ISA::Inst_DS__DS_SWIZZLE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32424
Gcn3ISA::Inst_VOP3__V_MUL_LO_U32::Inst_VOP3__V_MUL_LO_U32
Inst_VOP3__V_MUL_LO_U32(InFmt_VOP3 *)
Definition: instructions.cc:30330
Gcn3ISA::Inst_VOP3__V_MAD_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29633
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX3::~Inst_FLAT__FLAT_LOAD_DWORDX3
~Inst_FLAT__FLAT_LOAD_DWORDX3()
Definition: instructions.cc:39813
Gcn3ISA::Inst_VOP3__V_CMPX_NLE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19224
Gcn3ISA::Inst_VOP1::extData
InstFormat extData
Definition: op_encodings.hh:309
Gcn3ISA::Inst_SMEM::calcAddr
void calcAddr(GPUDynInstPtr gpu_dyn_inst, ConstScalarOperandU64 &addr, ScalarRegU32 offset)
For normal s_load_dword/s_store_dword instruction addresses.
Definition: op_encodings.hh:225
Gcn3ISA::Inst_VOP3__V_CMP_F_U16::Inst_VOP3__V_CMP_F_U16
Inst_VOP3__V_CMP_F_U16(InFmt_VOP3 *)
Definition: instructions.cc:19711
Gcn3ISA::Inst_VOPC__V_CMPX_LT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12073
Gcn3ISA::Inst_SOP1__S_BCNT1_I32_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2253
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:38685
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_D::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38492
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_SHORT::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35909
Gcn3ISA::Inst_VOP2__V_MIN_U32::Inst_VOP2__V_MIN_U32
Inst_VOP2__V_MIN_U32(InFmt_VOP2 *)
Definition: instructions.cc:6009
Gcn3ISA::Inst_DS__DS_AND_RTN_B64::Inst_DS__DS_AND_RTN_B64
Inst_DS__DS_AND_RTN_B64(InFmt_DS *)
Definition: instructions.cc:33299
Gcn3ISA::Inst_DS__DS_WRXCHG2ST64_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31935
Gcn3ISA::Inst_VOPC__V_CMPX_GE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14199
Gcn3ISA::Inst_VOP3__V_CMP_GT_U32::Inst_VOP3__V_CMP_GT_U32
Inst_VOP3__V_CMP_GT_U32(InFmt_VOP3 *)
Definition: instructions.cc:21100
Gcn3ISA::Inst_VOPC__V_CMP_NLE_F16::Inst_VOPC__V_CMP_NLE_F16
Inst_VOPC__V_CMP_NLE_F16(InFmt_VOPC *)
Definition: instructions.cc:10135
Gcn3ISA::Inst_SOPK__S_CMPK_LT_U32::~Inst_SOPK__S_CMPK_LT_U32
~Inst_SOPK__S_CMPK_LT_U32()
Definition: instructions.cc:1662
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34820
Gcn3ISA::Inst_VOPC__V_CMP_NLE_F32::Inst_VOPC__V_CMP_NLE_F32
Inst_VOPC__V_CMP_NLE_F32(InFmt_VOPC *)
Definition: instructions.cc:10880
Gcn3ISA::Inst_DS__DS_WRITE2ST64_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33048
Gcn3ISA::Inst_VOP3__V_CMPX_LE_F16::Inst_VOP3__V_CMPX_LE_F16
Inst_VOP3__V_CMPX_LE_F16(InFmt_VOP3 *)
Definition: instructions.cc:16415
Gcn3ISA::Inst_VOPC__V_CMP_LG_F16::~Inst_VOPC__V_CMP_LG_F16
~Inst_VOPC__V_CMP_LG_F16()
Definition: instructions.cc:10016
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CL::Inst_MIMG__IMAGE_SAMPLE_CL
Inst_MIMG__IMAGE_SAMPLE_CL(InFmt_MIMG *)
Definition: instructions.cc:38334
Gcn3ISA::Inst_VOP1__V_FLOOR_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9233
Gcn3ISA::VecElemU16
uint16_t VecElemU16
Definition: registers.hh:162
Gcn3ISA::Inst_VOP3__V_CMP_T_U16::Inst_VOP3__V_CMP_T_U16
Inst_VOP3__V_CMP_T_U16(InFmt_VOP3 *)
Definition: instructions.cc:19989
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37717
Wavefront::wrGmReqsInPipe
int wrGmReqsInPipe
Definition: wavefront.hh:185
Gcn3ISA::Inst_VOP3__V_CMPX_GE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21822
Gcn3ISA::Inst_SOP2__S_XNOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:846
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX3::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40269
Gcn3ISA::Inst_DS__DS_MAX_F32::~Inst_DS__DS_MAX_F32
~Inst_DS__DS_MAX_F32()
Definition: instructions.cc:31485
Gcn3ISA::Inst_VOP2__V_ADD_F16::Inst_VOP2__V_ADD_F16
Inst_VOP2__V_ADD_F16(InFmt_VOP2 *)
Definition: instructions.cc:6764
Gcn3ISA::Inst_EXP__EXP::Inst_EXP__EXP
Inst_EXP__EXP(InFmt_EXP *)
Definition: instructions.cc:39399
Gcn3ISA::Inst_VOPC__V_CMPX_NEQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11446
Gcn3ISA::Inst_DS__DS_XOR_RTN_B64::~Inst_DS__DS_XOR_RTN_B64
~Inst_DS__DS_XOR_RTN_B64()
Definition: instructions.cc:33340
Gcn3ISA::Inst_SMEM__S_STORE_DWORDX2::~Inst_SMEM__S_STORE_DWORDX2
~Inst_SMEM__S_STORE_DWORDX2()
Definition: instructions.cc:5112
Gcn3ISA::Inst_DS__DS_DEC_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32760
Gcn3ISA::Inst_SOP1__S_BITSET1_B32::Inst_SOP1__S_BITSET1_B32
Inst_SOP1__S_BITSET1_B32(InFmt_SOP1 *)
Definition: instructions.cc:2576
Gcn3ISA::Inst_VOPC__V_CMPX_GE_I16::~Inst_VOPC__V_CMPX_GE_I16
~Inst_VOPC__V_CMPX_GE_I16()
Definition: instructions.cc:13225
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:3200
Gcn3ISA::Inst_SOP2__S_MIN_U32::Inst_SOP2__S_MIN_U32
Inst_SOP2__S_MIN_U32(InFmt_SOP2 *)
Definition: instructions.cc:267
Gcn3ISA::NumVecElemPerVecReg
const int NumVecElemPerVecReg(64)
Gcn3ISA::Inst_VOP3__V_CMP_EQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17828
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:39170
Gcn3ISA::Inst_VOPC__V_CMPX_LE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14103
Gcn3ISA::ConstScalarOperandU128
ScalarOperand< ScalarRegU32, true, 4 > ConstScalarOperandU128
Definition: operand.hh:715
Gcn3ISA::Inst_VOP3__V_CMPX_NLE_F16::Inst_VOP3__V_CMPX_NLE_F16
Inst_VOP3__V_CMPX_NLE_F16(InFmt_VOP3 *)
Definition: instructions.cc:16588
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_L_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39090
Gcn3ISA::Inst_VOP3__V_SUB_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24720
Gcn3ISA::Inst_VOPC__V_CMPX_NE_U16::~Inst_VOPC__V_CMPX_NE_U16
~Inst_VOPC__V_CMPX_NE_U16()
Definition: instructions.cc:13439
Gcn3ISA::Inst_VOP3__V_CMPX_GT_I32::Inst_VOP3__V_CMPX_GT_I32
Inst_VOP3__V_CMPX_GT_I32(InFmt_VOP3 *)
Definition: instructions.cc:21409
Gcn3ISA::Inst_VOP3__V_WRITELANE_B32::Inst_VOP3__V_WRITELANE_B32
Inst_VOP3__V_WRITELANE_B32(InFmt_VOP3 *)
Definition: instructions.cc:30540
Gcn3ISA::Inst_VOP1__V_SIN_F16::Inst_VOP1__V_SIN_F16
Inst_VOP1__V_SIN_F16(InFmt_VOP1 *)
Definition: instructions.cc:9310
Gcn3ISA::Inst_VOPC__V_CMP_LE_F16::Inst_VOPC__V_CMP_LE_F16
Inst_VOPC__V_CMP_LE_F16(InFmt_VOPC *)
Definition: instructions.cc:9973
Gcn3ISA::Inst_DS__DS_MIN_I32::Inst_DS__DS_MIN_I32
Inst_DS__DS_MIN_I32(InFmt_DS *)
Definition: instructions.cc:31084
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE::Inst_MIMG__IMAGE_SAMPLE
Inst_MIMG__IMAGE_SAMPLE(InFmt_MIMG *)
Definition: instructions.cc:38318
Gcn3ISA::Inst_SOP2__S_ANDN2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:606
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_LZ_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39243
Gcn3ISA::Inst_SOP2__S_OR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:486
Gcn3ISA::InFmt_VOP3_1::NEG
unsigned int NEG
Definition: gpu_decoder.hh:1561
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_BYTE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35797
Gcn3ISA::Inst_VOP3__V_CMPX_NEQ_F32::Inst_VOP3__V_CMPX_NEQ_F32
Inst_VOP3__V_CMPX_NEQ_F32(InFmt_VOP3 *)
Definition: instructions.cc:17635
Gcn3ISA::Inst_VOP3__V_MIN3_U32::~Inst_VOP3__V_MIN3_U32
~Inst_VOP3__V_MIN3_U32()
Definition: instructions.cc:28419
Gcn3ISA::Inst_VOP2__V_LDEXP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7291
Gcn3ISA::Inst_DS__DS_MIN_SRC2_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33824
Gcn3ISA::Inst_VOPC__V_CMP_TRU_F32::Inst_VOPC__V_CMP_TRU_F32
Inst_VOPC__V_CMP_TRU_F32(InFmt_VOPC *)
Definition: instructions.cc:10976
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_OR_X2::~Inst_FLAT__FLAT_ATOMIC_OR_X2
~Inst_FLAT__FLAT_ATOMIC_OR_X2()
Definition: instructions.cc:41680
Gcn3ISA::Inst_VOP3__V_CVT_U32_F32::Inst_VOP3__V_CVT_U32_F32
Inst_VOP3__V_CVT_U32_F32(InFmt_VOP3 *)
Definition: instructions.cc:25419
Gcn3ISA::Inst_VOPC__V_CMPX_LE_U32::~Inst_VOPC__V_CMPX_LE_U32
~Inst_VOPC__V_CMPX_LE_U32()
Definition: instructions.cc:14343
Gcn3ISA::Inst_VOPC__V_CMP_F_F32::Inst_VOPC__V_CMP_F_F32
Inst_VOPC__V_CMP_F_F32(InFmt_VOPC *)
Definition: instructions.cc:10497
Gcn3ISA::Inst_VOP3__V_MUL_LO_U16::Inst_VOP3__V_MUL_LO_U16
Inst_VOP3__V_MUL_LO_U16(InFmt_VOP3 *)
Definition: instructions.cc:24790
Gcn3ISA::Inst_VOP3__V_CMPX_NE_I16::Inst_VOP3__V_CMPX_NE_I16
Inst_VOP3__V_CMPX_NE_I16(InFmt_VOP3 *)
Definition: instructions.cc:20215
Gcn3ISA::Inst_VOPC__V_CMP_EQ_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14561
Gcn3ISA::InFmt_VOP_SDWA::DST_SEL
unsigned int DST_SEL
Definition: gpu_decoder.hh:1594
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_DEC_X2::~Inst_FLAT__FLAT_ATOMIC_DEC_X2
~Inst_FLAT__FLAT_ATOMIC_DEC_X2()
Definition: instructions.cc:41831
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37619
Gcn3ISA::Inst_DS__DS_WRITE_B16::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:31639
Gcn3ISA::Inst_VOP3__V_CUBETC_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27887
Gcn3ISA::Inst_VOPC__V_CMPX_LG_F32::Inst_VOPC__V_CMPX_LG_F32
Inst_VOPC__V_CMPX_LG_F32(InFmt_VOPC *)
Definition: instructions.cc:11163
Gcn3ISA::Inst_SOPP__S_CBRANCH_SCC0::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3939
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:30911
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_O::Inst_MIMG__IMAGE_GATHER4_O
Inst_MIMG__IMAGE_GATHER4_O(InFmt_MIMG *)
Definition: instructions.cc:39045
Gcn3ISA::Inst_VOPC__V_CMP_LT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13800
Gcn3ISA::Inst_FLAT__FLAT_LOAD_USHORT::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39618
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17269
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2::Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2
Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2(InFmt_FLAT *)
Definition: instructions.cc:41226
Gcn3ISA::Inst_VOP1__V_FLOOR_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8125
Gcn3ISA::Inst_VOPC__V_CMP_NGE_F64::Inst_VOPC__V_CMP_NGE_F64
Inst_VOPC__V_CMP_NGE_F64(InFmt_VOPC *)
Definition: instructions.cc:11812
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMIN::Inst_FLAT__FLAT_ATOMIC_UMIN
Inst_FLAT__FLAT_ATOMIC_UMIN(InFmt_FLAT *)
Definition: instructions.cc:40856
Gcn3ISA::Inst_VOPC__V_CMP_F_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11539
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX4::~Inst_SMEM__S_LOAD_DWORDX4
~Inst_SMEM__S_LOAD_DWORDX4()
Definition: instructions.cc:4584
Gcn3ISA::Inst_VOPC__V_CMPX_F_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14012
Gcn3ISA::Inst_VOP3__V_CMPX_T_I16::~Inst_VOP3__V_CMPX_T_I16
~Inst_VOP3__V_CMPX_T_I16()
Definition: instructions.cc:20308
Gcn3ISA::Inst_VOPC__V_CMPX_GE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13231
Gcn3ISA::Inst_DS__DS_ADD_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31667
Gcn3ISA::Inst_VOP3__V_SUB_F32::~Inst_VOP3__V_SUB_F32
~Inst_VOP3__V_SUB_F32()
Definition: instructions.cc:23233
Gcn3ISA::Inst_VOP3__V_CMPX_LT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21293
Gcn3ISA::Inst_DS__DS_RSUB_SRC2_U64::Inst_DS__DS_RSUB_SRC2_U64
Inst_DS__DS_RSUB_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:34199
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37238
Gcn3ISA::Inst_VOP3__V_CMP_GT_U32::~Inst_VOP3__V_CMP_GT_U32
~Inst_VOP3__V_CMP_GT_U32()
Definition: instructions.cc:21107
Gcn3ISA::Inst_VOP1__V_FFBL_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8761
Gcn3ISA::Inst_VOP1__V_CVT_F64_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7465
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:4571
Gcn3ISA::Inst_SOP2__S_LSHL_B32::~Inst_SOP2__S_LSHL_B32
~Inst_SOP2__S_LSHL_B32()
Definition: instructions.cc:899
Gcn3ISA::Inst_VOP3__V_ASHRREV_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30814
Gcn3ISA::Inst_VOP3__V_MAX_F64::~Inst_VOP3__V_MAX_F64
~Inst_VOP3__V_MAX_F64()
Definition: instructions.cc:30224
Gcn3ISA::Inst_VOP3__V_RSQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26535
Gcn3ISA::Inst_VOP2__V_MAX_I16::~Inst_VOP2__V_MAX_I16
~Inst_VOP2__V_MAX_I16()
Definition: instructions.cc:7191
Gcn3ISA::Inst_DS__DS_READ2_B32::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:32157
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:38837
Gcn3ISA::Inst_DS__DS_INC_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32741
Gcn3ISA::Inst_DS__DS_READ2_B32::~Inst_DS__DS_READ2_B32
~Inst_DS__DS_READ2_B32()
Definition: instructions.cc:32126
Gcn3ISA::Inst_VOPC__V_CMP_EQ_F64::Inst_VOPC__V_CMP_EQ_F64
Inst_VOPC__V_CMP_EQ_F64(InFmt_VOPC *)
Definition: instructions.cc:11585
Gcn3ISA::Inst_VOP3__V_CMP_GT_F64::Inst_VOP3__V_CMP_GT_F64
Inst_VOP3__V_CMP_GT_F64(InFmt_VOP3 *)
Definition: instructions.cc:17924
Gcn3ISA::Inst_VOP3__V_LOG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26413
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_L::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38989
Gcn3ISA::Inst_VOP3__V_CMP_NGE_F16::Inst_VOP3__V_CMP_NGE_F16
Inst_VOP3__V_CMP_NGE_F16(InFmt_VOP3 *)
Definition: instructions.cc:16207
Gcn3ISA::Inst_VOP1__V_RCP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9087
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:4384
Gcn3ISA::Inst_VOP3__V_BFREV_B32::~Inst_VOP3__V_BFREV_B32
~Inst_VOP3__V_BFREV_B32()
Definition: instructions.cc:26850
Gcn3ISA::Inst_VOP3__V_CMP_O_F32::Inst_VOP3__V_CMP_O_F32
Inst_VOP3__V_CMP_O_F32(InFmt_VOP3 *)
Definition: instructions.cc:16899
Gcn3ISA::Inst_VOP3__V_CMPX_NLT_F32::~Inst_VOP3__V_CMPX_NLT_F32
~Inst_VOP3__V_CMPX_NLT_F32()
Definition: instructions.cc:17677
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMAX_X2::Inst_FLAT__FLAT_ATOMIC_UMAX_X2
Inst_FLAT__FLAT_ATOMIC_UMAX_X2(InFmt_FLAT *)
Definition: instructions.cc:41615
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX3::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40331
Gcn3ISA::Inst_VOPC__V_CMP_GT_F32::Inst_VOPC__V_CMP_GT_F32
Inst_VOPC__V_CMP_GT_F32(InFmt_VOPC *)
Definition: instructions.cc:10620
Gcn3ISA::Inst_SOPP__S_SENDMSGHALT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4249
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37386
Gcn3ISA::Inst_SOP2__S_CSELECT_B64::Inst_SOP2__S_CSELECT_B64
Inst_SOP2__S_CSELECT_B64(InFmt_SOP2 *)
Definition: instructions.cc:385
Gcn3ISA::Inst_VOPC__V_CMP_LT_I64::~Inst_VOPC__V_CMP_LT_I64
~Inst_VOPC__V_CMP_LT_I64()
Definition: instructions.cc:14524
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SMIN::~Inst_MIMG__IMAGE_ATOMIC_SMIN
~Inst_MIMG__IMAGE_ATOMIC_SMIN()
Definition: instructions.cc:38094
Gcn3ISA::Inst_VOP3__V_CMP_LG_F64::~Inst_VOP3__V_CMP_LG_F64
~Inst_VOP3__V_CMP_LG_F64()
Definition: instructions.cc:17987
Gcn3ISA::Inst_VOPC__V_CMP_EQ_U16::Inst_VOPC__V_CMP_EQ_U16
Inst_VOPC__V_CMP_EQ_U16(InFmt_VOPC *)
Definition: instructions.cc:12851
Gcn3ISA::Inst_VOP3__V_CMPX_LE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16429
Gcn3ISA::Inst_VOPC__V_CMPX_GT_I16::Inst_VOPC__V_CMPX_GT_I16
Inst_VOPC__V_CMPX_GT_I16(InFmt_VOPC *)
Definition: instructions.cc:13155
Gcn3ISA::Inst_VOP3__V_RCP_F16::Inst_VOP3__V_RCP_F16
Inst_VOP3__V_RCP_F16(InFmt_VOP3 *)
Definition: instructions.cc:27287
Gcn3ISA::GCN3GPUStaticInst::panicUnimplemented
void panicUnimplemented() const
Definition: gpu_static_inst.cc:53
Gcn3ISA::Inst_SOP2__S_LSHR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:967
Gcn3ISA::Inst_VOP3__V_NOT_B32::Inst_VOP3__V_NOT_B32
Inst_VOP3__V_NOT_B32(InFmt_VOP3 *)
Definition: instructions.cc:26814
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:39238
Gcn3ISA::Inst_VOPC__V_CMP_LE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13624
Gcn3ISA::Inst_VOPC__V_CMP_NGT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10861
Gcn3ISA::Inst_SOP1__S_ANDN2_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2826
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2::~Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2
~Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2()
Definition: instructions.cc:36922
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_OR::Inst_MUBUF__BUFFER_ATOMIC_OR
Inst_MUBUF__BUFFER_ATOMIC_OR(InFmt_MUBUF *)
Definition: instructions.cc:36690
Gcn3ISA::Inst_VOP3__V_CMPX_LT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18602
Gcn3ISA::Inst_VOP3__V_CMP_NE_I64::Inst_VOP3__V_CMP_NE_I64
Inst_VOP3__V_CMP_NE_I64(InFmt_VOP3 *)
Definition: instructions.cc:22074
Gcn3ISA::Inst_VOPC__V_CMPX_GT_I64::~Inst_VOPC__V_CMPX_GT_I64
~Inst_VOPC__V_CMPX_GT_I64()
Definition: instructions.cc:15097
Gcn3ISA::Inst_VOP3__V_BCNT_U32_B32::~Inst_VOP3__V_BCNT_U32_B32
~Inst_VOP3__V_BCNT_U32_B32()
Definition: instructions.cc:30587
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CD_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39377
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39941
Gcn3ISA::Inst_VOP3__V_CMPX_NGT_F16::Inst_VOP3__V_CMPX_NGT_F16
Inst_VOP3__V_CMPX_NGT_F16(InFmt_VOP3 *)
Definition: instructions.cc:16569
Gcn3ISA::Inst_VOP1__V_NOP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7309
Gcn3ISA::InFmt_FLAT_1::ADDR
unsigned int ADDR
Definition: gpu_decoder.hh:1397
Gcn3ISA::Inst_DS__DS_MIN_F32::Inst_DS__DS_MIN_F32
Inst_DS__DS_MIN_F32(InFmt_DS *)
Definition: instructions.cc:31459
Gcn3ISA::Inst_VOP1__V_CVT_U32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7961
LL
#define LL(N)
int64_t constant
Definition: types.hh:48
Shader::impl_kern_end_rel
int impl_kern_end_rel
Definition: shader.hh:200
Gcn3ISA::Inst_VOP1__V_RNDNE_F64::~Inst_VOP1__V_RNDNE_F64
~Inst_VOP1__V_RNDNE_F64()
Definition: instructions.cc:8089
Gcn3ISA::Inst_SOP1__S_BITSET0_B64::~Inst_SOP1__S_BITSET0_B64
~Inst_SOP1__S_BITSET0_B64()
Definition: instructions.cc:2558
Gcn3ISA::Inst_VOPC__V_CMPX_GT_I64::Inst_VOPC__V_CMPX_GT_I64
Inst_VOPC__V_CMPX_GT_I64(InFmt_VOPC *)
Definition: instructions.cc:15091
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34919
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37288
Gcn3ISA::Inst_MIMG__IMAGE_STORE_PCK::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37910
Gcn3ISA::Inst_VOP3__V_CMP_T_U64::~Inst_VOP3__V_CMP_T_U64
~Inst_VOP3__V_CMP_T_U64()
Definition: instructions.cc:22468
Gcn3ISA::Inst_VOPC__V_CMPX_LG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12205
Gcn3ISA::Inst_SOPP__S_CBRANCH_VCCNZ::Inst_SOPP__S_CBRANCH_VCCNZ
Inst_SOPP__S_CBRANCH_VCCNZ(InFmt_SOPP *)
Definition: instructions.cc:4014
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CD_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39394
Gcn3ISA::Inst_VOP1__V_CVT_F32_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7495
Gcn3ISA::Inst_VOP3__V_CMP_F_I64::~Inst_VOP3__V_CMP_F_I64
~Inst_VOP3__V_CMP_F_I64()
Definition: instructions.cc:21886
Gcn3ISA::Inst_VINTRP__V_INTERP_MOV_F32::Inst_VINTRP__V_INTERP_MOV_F32
Inst_VINTRP__V_INTERP_MOV_F32(InFmt_VINTRP *)
Definition: instructions.cc:15498
Gcn3ISA::Inst_VOP2__V_MADMK_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6420
Gcn3ISA::Inst_SOP1__S_SEXT_I32_I8::~Inst_SOP1__S_SEXT_I32_I8
~Inst_SOP1__S_SEXT_I32_I8()
Definition: instructions.cc:2484
Gcn3ISA::Inst_DS__DS_MAX_RTN_F32::~Inst_DS__DS_MAX_RTN_F32
~Inst_DS__DS_MAX_RTN_F32()
Definition: instructions.cc:32008
Gcn3ISA::Inst_VOP1__V_CEIL_F32::~Inst_VOP1__V_CEIL_F32
~Inst_VOP1__V_CEIL_F32()
Definition: instructions.cc:8210
Gcn3ISA::Inst_VOPC__V_CMPX_GE_U32::Inst_VOPC__V_CMPX_GE_U32
Inst_VOPC__V_CMPX_GE_U32(InFmt_VOPC *)
Definition: instructions.cc:14433
Gcn3ISA::Inst_VOP1__V_CVT_F64_U32::Inst_VOP1__V_CVT_F64_U32
Inst_VOP1__V_CVT_F64_U32(InFmt_VOP1 *)
Definition: instructions.cc:7992
Gcn3ISA::Inst_MIMG__IMAGE_LOAD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37684
Gcn3ISA::Inst_SOP2__S_NAND_B64::~Inst_SOP2__S_NAND_B64
~Inst_SOP2__S_NAND_B64()
Definition: instructions.cc:749
Gcn3ISA::Inst_DS__DS_READ2ST64_B64::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:33679
Gcn3ISA::Inst_DS__DS_SUB_RTN_U64::~Inst_DS__DS_SUB_RTN_U64
~Inst_DS__DS_SUB_RTN_U64()
Definition: instructions.cc:33158
Gcn3ISA::Inst_VOP2__V_MIN_I32::Inst_VOP2__V_MIN_I32
Inst_VOP2__V_MIN_I32(InFmt_VOP2 *)
Definition: instructions.cc:5947
Gcn3ISA::Inst_SOPC__S_BITCMP0_B64::Inst_SOPC__S_BITCMP0_B64
Inst_SOPC__S_BITCMP0_B64(InFmt_SOPC *)
Definition: instructions.cc:3582
Gcn3ISA::Inst_VOPC__V_CMPX_NLT_F16::~Inst_VOPC__V_CMPX_NLT_F16
~Inst_VOPC__V_CMPX_NLT_F16()
Definition: instructions.cc:10468
Gcn3ISA::Inst_SOPC__S_CMP_LE_I32::~Inst_SOPC__S_CMP_LE_I32
~Inst_SOPC__S_CMP_LE_I32()
Definition: instructions.cc:3354
Gcn3ISA::Inst_VOP3__V_DIV_SCALE_F64::~Inst_VOP3__V_DIV_SCALE_F64
~Inst_VOP3__V_DIV_SCALE_F64()
Definition: instructions.cc:29226
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_SHORT::Inst_MUBUF__BUFFER_STORE_SHORT
Inst_MUBUF__BUFFER_STORE_SHORT(InFmt_MUBUF *)
Definition: instructions.cc:35818
Gcn3ISA::Inst_VOP3__V_CLREXCP::~Inst_VOP3__V_CLREXCP
~Inst_VOP3__V_CLREXCP()
Definition: instructions.cc:27205
Gcn3ISA::Inst_VOP3__V_ASHRREV_I32::~Inst_VOP3__V_ASHRREV_I32
~Inst_VOP3__V_ASHRREV_I32()
Definition: instructions.cc:24024
Gcn3ISA::Inst_VOP3__V_CMP_LE_U16::~Inst_VOP3__V_CMP_LE_U16
~Inst_VOP3__V_CMP_LE_U16()
Definition: instructions.cc:19828
Gcn3ISA::Inst_VOP3__V_MOV_B32::~Inst_VOP3__V_MOV_B32
~Inst_VOP3__V_MOV_B32()
Definition: instructions.cc:25227
Gcn3ISA::Inst_SOPK__S_CMPK_GE_I32::Inst_SOPK__S_CMPK_GE_I32
Inst_SOPK__S_CMPK_GE_I32(InFmt_SOPK *)
Definition: instructions.cc:1481
Gcn3ISA::Inst_VOP1__V_SIN_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9323
Gcn3ISA::Inst_SOP1__S_BCNT0_I32_B32::~Inst_SOP1__S_BCNT0_I32_B32
~Inst_SOP1__S_BCNT0_I32_B32()
Definition: instructions.cc:2162
Gcn3ISA::Inst_VOP2__V_SUBB_U32::Inst_VOP2__V_SUBB_U32
Inst_VOP2__V_SUBB_U32(InFmt_VOP2 *)
Definition: instructions.cc:6678
Gcn3ISA::Inst_DS__DS_DEC_U64::~Inst_DS__DS_DEC_U64
~Inst_DS__DS_DEC_U64()
Definition: instructions.cc:32751
Gcn3ISA::Inst_MIMG__IMAGE_GET_RESINFO::~Inst_MIMG__IMAGE_GET_RESINFO
~Inst_MIMG__IMAGE_GET_RESINFO()
Definition: instructions.cc:37962
Gcn3ISA::Inst_SOP1__S_CMOV_B32::~Inst_SOP1__S_CMOV_B32
~Inst_SOP1__S_CMOV_B32()
Definition: instructions.cc:1941
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37167
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMIN::~Inst_FLAT__FLAT_ATOMIC_UMIN
~Inst_FLAT__FLAT_ATOMIC_UMIN()
Definition: instructions.cc:40868
Gcn3ISA::Inst_SOP2__S_SUB_I32::Inst_SOP2__S_SUB_I32
Inst_SOP2__S_SUB_I32(InFmt_SOP2 *)
Definition: instructions.cc:141
Gcn3ISA::Inst_VOP1__V_CVT_F32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7779
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37380
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CL::~Inst_MIMG__IMAGE_SAMPLE_C_CL
~Inst_MIMG__IMAGE_SAMPLE_C_CL()
Definition: instructions.cc:38471
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORDX2::Inst_SMEM__S_BUFFER_STORE_DWORDX2
Inst_SMEM__S_BUFFER_STORE_DWORDX2(InFmt_SMEM *)
Definition: instructions.cc:5253
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_UBYTE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35105
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_INC::~Inst_MUBUF__BUFFER_ATOMIC_INC
~Inst_MUBUF__BUFFER_ATOMIC_INC()
Definition: instructions.cc:36757
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34979
Gcn3ISA::Inst_VOP3__V_CMP_LE_U64::Inst_VOP3__V_CMP_LE_U64
Inst_VOP3__V_CMP_LE_U64(InFmt_VOP3 *)
Definition: instructions.cc:22294
Gcn3ISA::Inst_SMEM__S_STORE_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5178
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SWAP_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41221
Gcn3ISA::Inst_VOP3__V_CVT_F16_U16::Inst_VOP3__V_CVT_F16_U16
Inst_VOP3__V_CVT_F16_U16(InFmt_VOP3 *)
Definition: instructions.cc:27215
Gcn3ISA::Inst_DS::instData
InFmt_DS instData
Definition: op_encodings.hh:505
Gcn3ISA::Inst_VOP3__V_CMP_NLG_F16::Inst_VOP3__V_CMP_NLG_F16
Inst_VOP3__V_CMP_NLG_F16(InFmt_VOP3 *)
Definition: instructions.cc:16226
Gcn3ISA::Inst_VOP3__V_SUBREV_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24625
Gcn3ISA::Inst_VOP3__V_CMPX_T_I64::Inst_VOP3__V_CMPX_T_I64
Inst_VOP3__V_CMPX_T_I64(InFmt_VOP3 *)
Definition: instructions.cc:22774
Gcn3ISA::Inst_SOP1__S_FLBIT_I32_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2466
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34727
Gcn3ISA::Inst_VOPC__V_CMP_GT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13655
Gcn3ISA::Inst_VOP3__V_CVT_F64_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25316
Gcn3ISA::Inst_VOP3__V_INTERP_P2_F32::Inst_VOP3__V_INTERP_P2_F32
Inst_VOP3__V_INTERP_P2_F32(InFmt_VOP3 *)
Definition: instructions.cc:29876
Gcn3ISA::Inst_VOP3__V_MAX3_F32::~Inst_VOP3__V_MAX3_F32
~Inst_VOP3__V_MAX3_F32()
Definition: instructions.cc:28464
Gcn3ISA::Inst_VOPC__V_CMP_NEQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11954
Gcn3ISA::Inst_VOP3__V_CMPX_NE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20542
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34752
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:29506
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX3::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35572
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_USHORT::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35242
Gcn3ISA::Inst_SMEM__S_LOAD_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:4512
Gcn3ISA::Inst_DS__DS_MAX_RTN_U64::Inst_DS__DS_MAX_RTN_U64
Inst_DS__DS_MAX_RTN_U64(InFmt_DS *)
Definition: instructions.cc:33281
Gcn3ISA::Inst_VOP2__V_MIN_I16::Inst_VOP2__V_MIN_I16
Inst_VOP2__V_MIN_I16(InFmt_VOP2 *)
Definition: instructions.cc:7247
Gcn3ISA::Inst_VOP3__V_CMPX_LT_U16::Inst_VOP3__V_CMPX_LT_U16
Inst_VOP3__V_CMPX_LT_U16(InFmt_VOP3 *)
Definition: instructions.cc:20357
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:29553
Gcn3ISA::Inst_VOP3__V_CMPX_CLASS_F16::Inst_VOP3__V_CMPX_CLASS_F16
Inst_VOP3__V_CMPX_CLASS_F16(InFmt_VOP3 *)
Definition: instructions.cc:16007
Gcn3ISA::Inst_VOP3__V_CMPX_LG_F32::Inst_VOP3__V_CMPX_LG_F32
Inst_VOP3__V_CMPX_LG_F32(InFmt_VOP3 *)
Definition: instructions.cc:17357
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CL::Inst_MIMG__IMAGE_SAMPLE_C_CL
Inst_MIMG__IMAGE_SAMPLE_C_CL(InFmt_MIMG *)
Definition: instructions.cc:38464
Gcn3ISA::Inst_VOPC__V_CMP_GE_F32::~Inst_VOPC__V_CMP_GE_F32
~Inst_VOPC__V_CMP_GE_F32()
Definition: instructions.cc:10692
Gcn3ISA::Inst_SOP1__S_SWAPPC_B64::Inst_SOP1__S_SWAPPC_B64
Inst_SOP1__S_SWAPPC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2671
Gcn3ISA::Inst_VOPC__V_CMPX_NE_U64::Inst_VOPC__V_CMPX_NE_U64
Inst_VOPC__V_CMPX_NE_U64(InFmt_VOPC *)
Definition: instructions.cc:15369
Gcn3ISA::Inst_VOP2__V_SUB_F32::~Inst_VOP2__V_SUB_F32
~Inst_VOP2__V_SUB_F32()
Definition: instructions.cc:5541
Gcn3ISA::Inst_SOP2__S_MIN_I32::Inst_SOP2__S_MIN_I32
Inst_SOP2__S_MIN_I32(InFmt_SOP2 *)
Definition: instructions.cc:237
Gcn3ISA::Inst_VOPC__V_CMP_GE_U64::~Inst_VOPC__V_CMP_GE_U64
~Inst_VOPC__V_CMP_GE_U64()
Definition: instructions.cc:14917
Gcn3ISA::Inst_VOP3__V_CMPX_NGT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16583
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMAX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36630
Gcn3ISA::Inst_VOP3__V_ASHRREV_I64::~Inst_VOP3__V_ASHRREV_I64
~Inst_VOP3__V_ASHRREV_I64()
Definition: instructions.cc:30807
Gcn3ISA::Inst_VOP3__V_CMP_LT_I32::~Inst_VOP3__V_CMP_LT_I32
~Inst_VOP3__V_CMP_LT_I32()
Definition: instructions.cc:20677
Gcn3ISA::Inst_VOP3__V_CMP_NLE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18380
Gcn3ISA::Inst_VOP3__V_CMPX_NLT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17683
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX2::~Inst_SMEM__S_LOAD_DWORDX2
~Inst_SMEM__S_LOAD_DWORDX2()
Definition: instructions.cc:4525
Gcn3ISA::Inst_VOPC__V_CMP_NLT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10184
Gcn3ISA::Inst_VOP3__V_CMP_GE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21197
Gcn3ISA::Inst_VOP3__V_CMPX_LT_F64::Inst_VOP3__V_CMPX_LT_F64
Inst_VOP3__V_CMPX_LT_F64(InFmt_VOP3 *)
Definition: instructions.cc:18588
Gcn3ISA::Inst_DS__DS_DEC_RTN_U64::~Inst_DS__DS_DEC_RTN_U64
~Inst_DS__DS_DEC_RTN_U64()
Definition: instructions.cc:33213
Gcn3ISA::Inst_DS__DS_MIN_RTN_F32::~Inst_DS__DS_MIN_RTN_F32
~Inst_DS__DS_MIN_RTN_F32()
Definition: instructions.cc:31988
Gcn3ISA::Inst_VOPC__V_CMPX_LT_U64::~Inst_VOPC__V_CMPX_LT_U64
~Inst_VOPC__V_CMPX_LT_U64()
Definition: instructions.cc:15247
Gcn3ISA::Inst_DS__DS_RSUB_RTN_U32::Inst_DS__DS_RSUB_RTN_U32
Inst_DS__DS_RSUB_RTN_U32(InFmt_DS *)
Definition: instructions.cc:31690
Gcn3ISA::Inst_VOPC__V_CMP_GT_I32::~Inst_VOPC__V_CMP_GT_I32
~Inst_VOPC__V_CMP_GT_I32()
Definition: instructions.cc:13649
Gcn3ISA::Inst_DS__DS_READ_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32364
Gcn3ISA::Inst_VOPC__V_CMPX_LT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13317
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX4::Inst_FLAT__FLAT_LOAD_DWORDX4
Inst_FLAT__FLAT_LOAD_DWORDX4(InFmt_FLAT *)
Definition: instructions.cc:39887
Gcn3ISA::Inst_VOP3__V_CMPX_TRU_F16::Inst_VOP3__V_CMPX_TRU_F16
Inst_VOP3__V_CMPX_TRU_F16(InFmt_VOP3 *)
Definition: instructions.cc:16645
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX3::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39859
Gcn3ISA::Inst_VOPC__V_CMP_LT_U32::Inst_VOPC__V_CMP_LT_U32
Inst_VOPC__V_CMP_LT_U32(InFmt_VOPC *)
Definition: instructions.cc:13788
Gcn3ISA::Inst_VOPC__V_CMP_GE_U16::~Inst_VOPC__V_CMP_GE_U16
~Inst_VOPC__V_CMP_GE_U16()
Definition: instructions.cc:12981
Gcn3ISA::Inst_VOPC__V_CMP_F_F32::~Inst_VOPC__V_CMP_F_F32
~Inst_VOPC__V_CMP_F_F32()
Definition: instructions.cc:10504
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40235
Gcn3ISA::Inst_VOP3__V_CMPX_F_I32::~Inst_VOP3__V_CMPX_F_I32
~Inst_VOP3__V_CMPX_F_I32()
Definition: instructions.cc:21259
Gcn3ISA::Inst_VOPC__V_CMPX_NE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13445
Gcn3ISA::Inst_VOPC__V_CMPX_LG_F32::~Inst_VOPC__V_CMPX_LG_F32
~Inst_VOPC__V_CMPX_LG_F32()
Definition: instructions.cc:11170
Gcn3ISA::Inst_DS__DS_MIN_U32::Inst_DS__DS_MIN_U32
Inst_DS__DS_MIN_U32(InFmt_DS *)
Definition: instructions.cc:31120
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMAX::~Inst_MUBUF__BUFFER_ATOMIC_SMAX
~Inst_MUBUF__BUFFER_ATOMIC_SMAX()
Definition: instructions.cc:36622
Gcn3ISA::Inst_VOPC__V_CMP_LE_I32::~Inst_VOPC__V_CMP_LE_I32
~Inst_VOPC__V_CMP_LE_I32()
Definition: instructions.cc:13618
Gcn3ISA::Inst_SOP1__S_WQM_B32::Inst_SOP1__S_WQM_B32
Inst_SOP1__S_WQM_B32(InFmt_SOP1 *)
Definition: instructions.cc:2052
Gcn3ISA::Inst_VOP3__V_LSHLREV_B32::Inst_VOP3__V_LSHLREV_B32
Inst_VOP3__V_LSHLREV_B32(InFmt_VOP3 *)
Definition: instructions.cc:24060
Gcn3ISA::Inst_DS__DS_MSKOR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32904
Gcn3ISA::Inst_SOP1__S_GETPC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2637
Gcn3ISA::Inst_VOP3__V_LDEXP_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30284
Gcn3ISA::Inst_SOP2__S_SUB_I32::~Inst_SOP2__S_SUB_I32
~Inst_SOP2__S_SUB_I32()
Definition: instructions.cc:147
Gcn3ISA::Inst_SOPK__S_CMPK_LE_I32::~Inst_SOPK__S_CMPK_LE_I32
~Inst_SOPK__S_CMPK_LE_I32()
Definition: instructions.cc:1537
Gcn3ISA::Inst_SOPK__S_MULK_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1748
Gcn3ISA::InFmt_EXP
Definition: gpu_decoder.hh:1370
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD_O::Inst_MIMG__IMAGE_SAMPLE_CD_O
Inst_MIMG__IMAGE_SAMPLE_CD_O(InFmt_MIMG *)
Definition: instructions.cc:39331
data
const char data[]
Definition: circlebuf.test.cc:47
Gcn3ISA::Inst_MIMG__IMAGE_GET_RESINFO::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37967
shader.hh
Gcn3ISA::Inst_VOP2__V_MADMK_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6872
Gcn3ISA::Inst_VOP3__V_CMPX_GE_U16::Inst_VOP3__V_CMPX_GE_U16
Inst_VOP3__V_CMPX_GE_U16(InFmt_VOP3 *)
Definition: instructions.cc:20572
Gcn3ISA::Inst_VOPC::instData
InFmt_VOPC instData
Definition: op_encodings.hh:331
Gcn3ISA::Inst_DS__DS_GWS_SEMA_V::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34066
Gcn3ISA::Inst_VOPC__V_CMPX_CLASS_F64::Inst_VOPC__V_CMPX_CLASS_F64
Inst_VOPC__V_CMPX_CLASS_F64(InFmt_VOPC *)
Definition: instructions.cc:9744
Gcn3ISA::Inst_DS__DS_AND_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31169
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40616
Gcn3ISA::Inst_DS__DS_DEC_U32::~Inst_DS__DS_DEC_U32
~Inst_DS__DS_DEC_U32()
Definition: instructions.cc:31071
Gcn3ISA::Inst_VOP3__V_CVT_I32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25266
Gcn3ISA::Inst_DS__DS_CONDXCHG32_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33709
Gcn3ISA::Inst_VOP2__V_SUB_U16::Inst_VOP2__V_SUB_U16
Inst_VOP2__V_SUB_U16(InFmt_VOP2 *)
Definition: instructions.cc:6930
Gcn3ISA::Inst_VOP3__V_CMP_LE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22003
Gcn3ISA::Inst_SOP2__S_LSHR_B64::~Inst_SOP2__S_LSHR_B64
~Inst_SOP2__S_LSHR_B64()
Definition: instructions.cc:990
Gcn3ISA::Inst_VOP3__V_CMP_TRU_F64::Inst_VOP3__V_CMP_TRU_F64
Inst_VOP3__V_CMP_TRU_F64(InFmt_VOP3 *)
Definition: instructions.cc:18531
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX3::~Inst_MUBUF__BUFFER_STORE_DWORDX3
~Inst_MUBUF__BUFFER_STORE_DWORDX3()
Definition: instructions.cc:36121
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:37398
popCount
constexpr int popCount(uint64_t val)
Returns the number of set ones in the provided value.
Definition: bitfield.hh:314
Gcn3ISA::Inst_VOP3__V_MAX_F16::Inst_VOP3__V_MAX_F16
Inst_VOP3__V_MAX_F16(InFmt_VOP3 *)
Definition: instructions.cc:24962
Gcn3ISA::Inst_VOP1__V_FRACT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8155
Gcn3ISA::Inst_VOP3__V_CMP_GT_U64::~Inst_VOP3__V_CMP_GT_U64
~Inst_VOP3__V_CMP_GT_U64()
Definition: instructions.cc:22343
Gcn3ISA::Inst_SOP1__S_MOVRELS_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3068
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_LZ::~Inst_MIMG__IMAGE_SAMPLE_C_LZ
~Inst_MIMG__IMAGE_SAMPLE_C_LZ()
Definition: instructions.cc:38570
Gcn3ISA::Inst_VOP3__V_MIN_U32::~Inst_VOP3__V_MIN_U32
~Inst_VOP3__V_MIN_U32()
Definition: instructions.cc:23900
Gcn3ISA::Inst_DS__DS_MAX_SRC2_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34290
Gcn3ISA::Inst_VOP3__V_MIN_I32::~Inst_VOP3__V_MIN_I32
~Inst_VOP3__V_MIN_I32()
Definition: instructions.cc:23818
Gcn3ISA::Inst_DS__DS_XOR_RTN_B64::Inst_DS__DS_XOR_RTN_B64
Inst_DS__DS_XOR_RTN_B64(InFmt_DS *)
Definition: instructions.cc:33335
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:21607
Gcn3ISA::Inst_MUBUF__BUFFER_WBINVL1::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:36378
Gcn3ISA::Inst_VOPC__V_CMPX_NLG_F64::~Inst_VOPC__V_CMPX_NLG_F64
~Inst_VOPC__V_CMPX_NLG_F64()
Definition: instructions.cc:12369
Gcn3ISA::Inst_SOP2__S_LSHR_B64::Inst_SOP2__S_LSHR_B64
Inst_SOP2__S_LSHR_B64(InFmt_SOP2 *)
Definition: instructions.cc:984
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_SSHORT::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35287
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_I16::~Inst_VOP3__V_CMPX_EQ_I16
~Inst_VOP3__V_CMPX_EQ_I16()
Definition: instructions.cc:20093
Gcn3ISA::Inst_VOP3__V_BFM_B32::~Inst_VOP3__V_BFM_B32
~Inst_VOP3__V_BFM_B32()
Definition: instructions.cc:30867
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:34964
Gcn3ISA::Inst_VOP3__V_INTERP_P1_F32::Inst_VOP3__V_INTERP_P1_F32
Inst_VOP3__V_INTERP_P1_F32(InFmt_VOP3 *)
Definition: instructions.cc:29858
Gcn3ISA::Inst_SOP2__S_LSHL_B32::Inst_SOP2__S_LSHL_B32
Inst_SOP2__S_LSHL_B32(InFmt_SOP2 *)
Definition: instructions.cc:893
Gcn3ISA::Inst_DS__DS_OR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31187
Gcn3ISA::Inst_SOP2__S_XOR_B32::Inst_SOP2__S_XOR_B32
Inst_SOP2__S_XOR_B32(InFmt_SOP2 *)
Definition: instructions.cc:533
Gcn3ISA::Inst_VOP3__V_ADD_U16::Inst_VOP3__V_ADD_U16
Inst_VOP3__V_ADD_U16(InFmt_VOP3 *)
Definition: instructions.cc:24667
Gcn3ISA::Inst_VOP1__V_CVT_F64_F32::~Inst_VOP1__V_CVT_F64_F32
~Inst_VOP1__V_CVT_F64_F32()
Definition: instructions.cc:7803
Gcn3ISA::InFmt_VOP_SDWA::CLAMP
unsigned int CLAMP
Definition: gpu_decoder.hh:1596
Gcn3ISA::Inst_VOP2__V_MIN_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5959
Gcn3ISA::Inst_VOP3__V_CMP_LT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19750
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_CL_O::~Inst_MIMG__IMAGE_GATHER4_CL_O
~Inst_MIMG__IMAGE_GATHER4_CL_O()
Definition: instructions.cc:39068
Gcn3ISA::Inst_VOP3__V_CMP_O_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16912
Gcn3ISA::Inst_SOP1__S_RFE_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2710
Gcn3ISA::Inst_SOP1__S_MOVRELD_B64::Inst_SOP1__S_MOVRELD_B64
Inst_SOP1__S_MOVRELD_B64(InFmt_SOP1 *)
Definition: instructions.cc:3108
Gcn3ISA::Inst_SOP1__S_QUADMASK_B64::Inst_SOP1__S_QUADMASK_B64
Inst_SOP1__S_QUADMASK_B64(InFmt_SOP1 *)
Definition: instructions.cc:3000
Gcn3ISA::Inst_FLAT__FLAT_STORE_SHORT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40056
Gcn3ISA::Inst_VOP3__V_MIN3_F32::~Inst_VOP3__V_MIN3_F32
~Inst_VOP3__V_MIN3_F32()
Definition: instructions.cc:28317
Gcn3ISA::Inst_SOPC__S_BITCMP0_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3542
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:4912
Gcn3ISA::Inst_VOP3__V_CMP_LT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22223
Gcn3ISA::Inst_VOPC__V_CMPX_LE_F64::~Inst_VOPC__V_CMPX_LE_F64
~Inst_VOPC__V_CMPX_LE_F64()
Definition: instructions.cc:12133
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37712
Gcn3ISA::Inst_SOPC__S_BITCMP1_B32::~Inst_SOPC__S_BITCMP1_B32
~Inst_SOPC__S_BITCMP1_B32()
Definition: instructions.cc:3562
Gcn3ISA::Inst_VOP1__V_CVT_F64_I32::~Inst_VOP1__V_CVT_F64_I32
~Inst_VOP1__V_CVT_F64_I32()
Definition: instructions.cc:7459
Gcn3ISA::ScalarOperand::rawDataPtr
void * rawDataPtr()
Definition: operand.hh:405
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:38546
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37586
Gcn3ISA::Inst_VOP3__V_MUL_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23347
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_UMIN::Inst_MIMG__IMAGE_ATOMIC_UMIN
Inst_MIMG__IMAGE_ATOMIC_UMIN(InFmt_MIMG *)
Definition: instructions.cc:38107
Gcn3ISA::Inst_VOPC__V_CMP_TRU_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10989
Gcn3ISA::Inst_VOP2__V_CNDMASK_B32::Inst_VOP2__V_CNDMASK_B32
Inst_VOP2__V_CNDMASK_B32(InFmt_VOP2 *)
Definition: instructions.cc:5440
Gcn3ISA::Inst_VOP3__V_CMPX_F_U64::~Inst_VOP3__V_CMPX_F_U64
~Inst_VOP3__V_CMPX_F_U64()
Definition: instructions.cc:22809
Gcn3ISA::Inst_VOP1__V_CVT_F16_U16::Inst_VOP1__V_CVT_F16_U16
Inst_VOP1__V_CVT_F16_U16(InFmt_VOP1 *)
Definition: instructions.cc:8999
Gcn3ISA::VecOperand::absModifier
void absModifier()
Definition: operand.hh:254
Gcn3ISA::Inst_DS__DS_MAX_I64::Inst_DS__DS_MAX_I64
Inst_DS__DS_MAX_I64(InFmt_DS *)
Definition: instructions.cc:32783
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XY::~Inst_MUBUF__BUFFER_STORE_FORMAT_XY
~Inst_MUBUF__BUFFER_STORE_FORMAT_XY()
Definition: instructions.cc:34685
Gcn3ISA::median
T median(T val_0, T val_1, T val_2)
Definition: inst_util.hh:245
Gcn3ISA::Inst_SOPC__S_BITCMP1_B64::Inst_SOPC__S_BITCMP1_B64
Inst_SOPC__S_BITCMP1_B64(InFmt_SOPC *)
Definition: instructions.cc:3608
Gcn3ISA::Inst_VOP3__V_MAX_I32::Inst_VOP3__V_MAX_I32
Inst_VOP3__V_MAX_I32(InFmt_VOP3 *)
Definition: instructions.cc:23853
Gcn3ISA::Inst_DS__DS_INC_SRC2_U64::Inst_DS__DS_INC_SRC2_U64
Inst_DS__DS_INC_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:34218
Gcn3ISA::Inst_VOPC__V_CMP_NLG_F64::Inst_VOPC__V_CMP_NLG_F64
Inst_VOPC__V_CMP_NLG_F64(InFmt_VOPC *)
Definition: instructions.cc:11844
Gcn3ISA::Inst_VOP3__V_CMPX_LT_F32::~Inst_VOP3__V_CMPX_LT_F32
~Inst_VOP3__V_CMPX_LT_F32()
Definition: instructions.cc:17229
Gcn3ISA::Inst_VOPC__V_CMPX_GT_F16::Inst_VOPC__V_CMPX_GT_F16
Inst_VOPC__V_CMPX_GT_F16(InFmt_VOPC *)
Definition: instructions.cc:10279
Gcn3ISA::Inst_DS__DS_MIN_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33862
Gcn3ISA::Inst_VOP2__V_SUB_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5547
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25864
Gcn3ISA::Inst_VOP3__V_CMP_GE_F16::~Inst_VOP3__V_CMP_GE_F16
~Inst_VOP3__V_CMP_GE_F16()
Definition: instructions.cc:16160
Gcn3ISA::Inst_VOP3__V_INTERP_P1LV_F16::Inst_VOP3__V_INTERP_P1LV_F16
Inst_VOP3__V_INTERP_P1LV_F16(InFmt_VOP3 *)
Definition: instructions.cc:29931
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_LZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38575
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:27117
Gcn3ISA::Inst_DS__DS_READ2ST64_B64::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:33670
Gcn3ISA::Inst_SOP1__S_MOVRELD_B32::~Inst_SOP1__S_MOVRELD_B32
~Inst_SOP1__S_MOVRELD_B32()
Definition: instructions.cc:3088
Gcn3ISA::Inst_VOP3__V_CMPX_NLG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16564
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34847
Gcn3ISA::Inst_VOPC__V_CMP_NLG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10112
Gcn3ISA::Inst_VOPC__V_CMPX_F_U32::Inst_VOPC__V_CMPX_F_U32
Inst_VOPC__V_CMPX_F_U32(InFmt_VOPC *)
Definition: instructions.cc:14246
Gcn3ISA::Inst_VOPC__V_CMP_LE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14830
Gcn3ISA::Inst_VOP3__V_DIV_FMAS_F64::~Inst_VOP3__V_DIV_FMAS_F64
~Inst_VOP3__V_DIV_FMAS_F64()
Definition: instructions.cc:29375
Gcn3ISA::InFmt_DS_1::ADDR
unsigned int ADDR
Definition: gpu_decoder.hh:1364
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMAX::~Inst_FLAT__FLAT_ATOMIC_SMAX
~Inst_FLAT__FLAT_ATOMIC_SMAX()
Definition: instructions.cc:40893
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35018
Gcn3ISA::Inst_VOP3__V_FFBH_I32::~Inst_VOP3__V_FFBH_I32
~Inst_VOP3__V_FFBH_I32()
Definition: instructions.cc:26956
Gcn3ISA::Inst_VOP2__V_MUL_LEGACY_F32::Inst_VOP2__V_MUL_LEGACY_F32
Inst_VOP2__V_MUL_LEGACY_F32(InFmt_VOP2 *)
Definition: instructions.cc:5598
Gcn3ISA::InFmt_SOPP
Definition: gpu_decoder.hh:1517
Gcn3ISA::Inst_VOP3__V_CMPX_GE_I16::~Inst_VOP3__V_CMPX_GE_I16
~Inst_VOP3__V_CMPX_GE_I16()
Definition: instructions.cc:20265
Gcn3ISA::Inst_DS__DS_RSUB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31043
Gcn3ISA::Inst_VOP3__V_ADD_U16::~Inst_VOP3__V_ADD_U16
~Inst_VOP3__V_ADD_U16()
Definition: instructions.cc:24673
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40622
Gcn3ISA::Inst_VOP3__V_CMPX_LE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20142
Gcn3ISA::Inst_SOP1__S_MOV_FED_B32::~Inst_SOP1__S_MOV_FED_B32
~Inst_SOP1__S_MOV_FED_B32()
Definition: instructions.cc:3189
Gcn3ISA::Inst_VOPC__V_CMPX_GE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12239
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37805
Wavefront::vecReads
std::vector< int > vecReads
Definition: wavefront.hh:235
Gcn3ISA::InFmt_VOP3_1::SRC2
unsigned int SRC2
Definition: gpu_decoder.hh:1559
Gcn3ISA::Inst_VOP1__V_FFBL_B32::~Inst_VOP1__V_FFBL_B32
~Inst_VOP1__V_FFBL_B32()
Definition: instructions.cc:8754
Gcn3ISA::Inst_MIMG__IMAGE_STORE_MIP::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37892
Gcn3ISA::Inst_VOP3__V_BFE_U32::Inst_VOP3__V_BFE_U32
Inst_VOP3__V_BFE_U32(InFmt_VOP3 *)
Definition: instructions.cc:27909
Gcn3ISA::Inst_DS__DS_READ_U8::Inst_DS__DS_READ_U8
Inst_DS__DS_READ_U8(InFmt_DS *)
Definition: instructions.cc:32269
Gcn3ISA::Inst_VOP3__V_CMPX_T_U16::~Inst_VOP3__V_CMPX_T_U16
~Inst_VOP3__V_CMPX_T_U16()
Definition: instructions.cc:20622
Gcn3ISA::Inst_FLAT__FLAT_LOAD_USHORT::~Inst_FLAT__FLAT_LOAD_USHORT
~Inst_FLAT__FLAT_LOAD_USHORT()
Definition: instructions.cc:39566
Gcn3ISA::Inst_DS__DS_WRXCHG2_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33402
Gcn3ISA::Inst_VOP3__V_CMP_NGE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16221
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_U32::~Inst_VOPC__V_CMPX_EQ_U32
~Inst_VOPC__V_CMPX_EQ_U32()
Definition: instructions.cc:14311
Gcn3ISA::Inst_DS__DS_ORDERED_COUNT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34156
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:4436
Gcn3ISA::Inst_DS__DS_SUB_U32::Inst_DS__DS_SUB_U32
Inst_DS__DS_SUB_U32(InFmt_DS *)
Definition: instructions.cc:31011
Gcn3ISA::Inst_VOP2__V_MAC_F16::~Inst_VOP2__V_MAC_F16
~Inst_VOP2__V_MAC_F16()
Definition: instructions.cc:6844
Gcn3ISA::Inst_VOP3__V_CMP_TRU_F16::Inst_VOP3__V_CMP_TRU_F16
Inst_VOP3__V_CMP_TRU_F16(InFmt_VOP3 *)
Definition: instructions.cc:16321
Gcn3ISA::Inst_VOPC__V_CMP_LE_U16::Inst_VOPC__V_CMP_LE_U16
Inst_VOPC__V_CMP_LE_U16(InFmt_VOPC *)
Definition: instructions.cc:12882
Gcn3ISA::Inst_SOP2__S_NAND_B32::Inst_SOP2__S_NAND_B32
Inst_SOP2__S_NAND_B32(InFmt_SOP2 *)
Definition: instructions.cc:713
Gcn3ISA::Inst_SOPP__S_SENDMSG::~Inst_SOPP__S_SENDMSG
~Inst_SOPP__S_SENDMSG()
Definition: instructions.cc:4229
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ::~Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ
~Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ()
Definition: instructions.cc:34715
Gcn3ISA::Inst_VOP2__V_ADD_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6911
Gcn3ISA::Inst_SOPC__S_BITCMP1_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3620
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:38803
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35012
Gcn3ISA::Inst_VOP2__V_SUB_U32::~Inst_VOP2__V_SUB_U32
~Inst_VOP2__V_SUB_U32()
Definition: instructions.cc:6564
Gcn3ISA::Inst_VOP3__V_CMP_GT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20809
Gcn3ISA::Inst_SOPC__S_CMP_GE_I32::Inst_SOPC__S_CMP_GE_I32
Inst_SOPC__S_CMP_GE_I32(InFmt_SOPC *)
Definition: instructions.cc:3296
Gcn3ISA::Inst_VOPC__V_CMPX_CLASS_F16::~Inst_VOPC__V_CMPX_CLASS_F16
~Inst_VOPC__V_CMPX_CLASS_F16()
Definition: instructions.cc:9895
Gcn3ISA::ScalarRegI64
int64_t ScalarRegI64
Definition: registers.hh:156
Gcn3ISA::Inst_DS__DS_CMPST_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31454
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34702
Gcn3ISA::Inst_SOP2__S_ORN2_B64::~Inst_SOP2__S_ORN2_B64
~Inst_SOP2__S_ORN2_B64()
Definition: instructions.cc:689
Gcn3ISA::Inst_VOP3__V_LOG_F32::~Inst_VOP3__V_LOG_F32
~Inst_VOP3__V_LOG_F32()
Definition: instructions.cc:26407
Gcn3ISA::Inst_VOPC__V_CMP_EQ_I64::~Inst_VOPC__V_CMP_EQ_I64
~Inst_VOPC__V_CMP_EQ_I64()
Definition: instructions.cc:14555
Gcn3ISA::Inst_VOP3__V_BFREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26857
Gcn3ISA::Inst_VOP3__V_SAD_HI_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28814
Gcn3ISA::Inst_VOP3__V_CMP_T_I16::~Inst_VOP3__V_CMP_T_I16
~Inst_VOP3__V_CMP_T_I16()
Definition: instructions.cc:19691
Gcn3ISA::Inst_VOPC__V_CMPX_TRU_F32::Inst_VOPC__V_CMPX_TRU_F32
Inst_VOPC__V_CMPX_TRU_F32(InFmt_VOPC *)
Definition: instructions.cc:11498
Gcn3ISA::Inst_VOP3__V_CMPX_LT_I16::Inst_VOP3__V_CMPX_LT_I16
Inst_VOP3__V_CMPX_LT_I16(InFmt_VOP3 *)
Definition: instructions.cc:20043
Gcn3ISA::Inst_DS__DS_MAX_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31115
Gcn3ISA::Inst_VOPC__V_CMPX_NLG_F32::~Inst_VOPC__V_CMPX_NLG_F32
~Inst_VOPC__V_CMPX_NLG_F32()
Definition: instructions.cc:11340
Gcn3ISA::Inst_VOP2__V_SUB_F32::Inst_VOP2__V_SUB_F32
Inst_VOP2__V_SUB_F32(InFmt_VOP2 *)
Definition: instructions.cc:5534
Gcn3ISA::Inst_VOP2__V_MADMK_F16::~Inst_VOP2__V_MADMK_F16
~Inst_VOP2__V_MADMK_F16()
Definition: instructions.cc:6863
Gcn3ISA::Inst_VOPC__V_CMP_LE_F64::Inst_VOPC__V_CMP_LE_F64
Inst_VOPC__V_CMP_LE_F64(InFmt_VOPC *)
Definition: instructions.cc:11617
Gcn3ISA::Inst_SOP1__S_BCNT0_I32_B64::Inst_SOP1__S_BCNT0_I32_B64
Inst_SOP1__S_BCNT0_I32_B64(InFmt_SOP1 *)
Definition: instructions.cc:2184
Gcn3ISA::Inst_VOP3__V_CMPX_LT_U32::~Inst_VOP3__V_CMPX_LT_U32
~Inst_VOP3__V_CMPX_LT_U32()
Definition: instructions.cc:21601
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D_CL::~Inst_MIMG__IMAGE_SAMPLE_D_CL
~Inst_MIMG__IMAGE_SAMPLE_D_CL()
Definition: instructions.cc:38373
Gcn3ISA::InFmt_MUBUF::OFFEN
unsigned int OFFEN
Definition: gpu_decoder.hh:1454
Gcn3ISA::Inst_VOP3__V_INTERP_P1LL_F16::~Inst_VOP3__V_INTERP_P1LL_F16
~Inst_VOP3__V_INTERP_P1LL_F16()
Definition: instructions.cc:29920
Gcn3ISA::Inst_VOP3__V_SUBREV_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24391
Gcn3ISA::Inst_VOPC__V_CMP_NE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12956
Gcn3ISA::Inst_VOP3__V_CMP_GT_I16::~Inst_VOP3__V_CMP_GT_I16
~Inst_VOP3__V_CMP_GT_I16()
Definition: instructions.cc:19566
Gcn3ISA::Inst_VOPC__V_CMP_NGE_F32::Inst_VOPC__V_CMP_NGE_F32
Inst_VOPC__V_CMP_NGE_F32(InFmt_VOPC *)
Definition: instructions.cc:10783
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_ADD::Inst_MUBUF__BUFFER_ATOMIC_ADD
Inst_MUBUF__BUFFER_ATOMIC_ADD(InFmt_MUBUF *)
Definition: instructions.cc:36501
Gcn3ISA::Inst_VOP3__V_CMPX_NEQ_F32::~Inst_VOP3__V_CMPX_NEQ_F32
~Inst_VOP3__V_CMPX_NEQ_F32()
Definition: instructions.cc:17643
Gcn3ISA::Inst_VOP1__V_CVT_F16_U16::~Inst_VOP1__V_CVT_F16_U16
~Inst_VOP1__V_CVT_F16_U16()
Definition: instructions.cc:9006
Gcn3ISA::Inst_VOP3__V_INTERP_P2_F32::~Inst_VOP3__V_INTERP_P2_F32
~Inst_VOP3__V_INTERP_P2_F32()
Definition: instructions.cc:29883
Gcn3ISA::Inst_VOP1__V_CVT_F16_F32::~Inst_VOP1__V_CVT_F16_F32
~Inst_VOP1__V_CVT_F16_F32()
Definition: instructions.cc:7657
Gcn3ISA::Inst_VOP3__V_CMP_NE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21155
Gcn3ISA::Inst_DS__DS_ADD_SRC2_U64::Inst_DS__DS_ADD_SRC2_U64
Inst_DS__DS_ADD_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:34161
Gcn3ISA::Inst_VOPC__V_CMP_GE_I16::Inst_VOPC__V_CMP_GE_I16
Inst_VOPC__V_CMP_GE_I16(InFmt_VOPC *)
Definition: instructions.cc:12737
Gcn3ISA::Inst_DS__DS_WRITE2_B64::Inst_DS__DS_WRITE2_B64
Inst_DS__DS_WRITE2_B64(InFmt_DS *)
Definition: instructions.cc:32969
Gcn3ISA::Inst_VOP3__V_CVT_F16_F32::~Inst_VOP3__V_CVT_F16_F32
~Inst_VOP3__V_CVT_F16_F32()
Definition: instructions.cc:25558
Gcn3ISA::InFmt_MUBUF_1::SRSRC
unsigned int SRSRC
Definition: gpu_decoder.hh:1468
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:25348
Gcn3ISA::Inst_VOPC__V_CMP_U_F16::~Inst_VOPC__V_CMP_U_F16
~Inst_VOPC__V_CMP_U_F16()
Definition: instructions.cc:10070
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:10142
Gcn3ISA::Inst_MUBUF__BUFFER_WBINVL1_VOL::~Inst_MUBUF__BUFFER_WBINVL1_VOL
~Inst_MUBUF__BUFFER_WBINVL1_VOL()
Definition: instructions.cc:36404
Gcn3ISA::Inst_VOP2__V_MUL_F32::~Inst_VOP2__V_MUL_F32
~Inst_VOP2__V_MUL_F32()
Definition: instructions.cc:5637
Gcn3ISA::Inst_DS__DS_OR_B32::~Inst_DS__DS_OR_B32
~Inst_DS__DS_OR_B32()
Definition: instructions.cc:31179
Gcn3ISA::Inst_VOP3__V_CVT_I16_F16::Inst_VOP3__V_CVT_I16_F16
Inst_VOP3__V_CVT_I16_F16(InFmt_VOP3 *)
Definition: instructions.cc:27269
Gcn3ISA::Inst_VOP2__V_MAX_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6052
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_ADD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40719
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_D_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38757
Gcn3ISA::Inst_VOP1__V_CVT_F32_I32::Inst_VOP1__V_CVT_F32_I32
Inst_VOP1__V_CVT_F32_I32(InFmt_VOP1 *)
Definition: instructions.cc:7482
Gcn3ISA::Inst_VOP2__V_MUL_LO_U16::~Inst_VOP2__V_MUL_LO_U16
~Inst_VOP2__V_MUL_LO_U16()
Definition: instructions.cc:6998
Gcn3ISA::Inst_SOPP__S_TRAP::~Inst_SOPP__S_TRAP
~Inst_SOPP__S_TRAP()
Definition: instructions.cc:4259
Gcn3ISA::Inst_VOP3__V_MAX_F32::~Inst_VOP3__V_MAX_F32
~Inst_VOP3__V_MAX_F32()
Definition: instructions.cc:23765
Gcn3ISA::Inst_VOPC__V_CMPX_NGE_F32::~Inst_VOPC__V_CMPX_NGE_F32
~Inst_VOPC__V_CMPX_NGE_F32()
Definition: instructions.cc:11307
Gcn3ISA::Inst_VOP2__V_SUBREV_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6611
Gcn3ISA::Inst_VOP3__V_CMP_NE_U16::~Inst_VOP3__V_CMP_NE_U16
~Inst_VOP3__V_CMP_NE_U16()
Definition: instructions.cc:19912
Gcn3ISA::Inst_VOP3__V_FLOOR_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27444
Gcn3ISA::Inst_SOPP__S_BRANCH::~Inst_SOPP__S_BRANCH
~Inst_SOPP__S_BRANCH()
Definition: instructions.cc:3891
Gcn3ISA::Inst_VOP3__V_MAX_I16::Inst_VOP3__V_MAX_I16
Inst_VOP3__V_MAX_I16(InFmt_VOP3 *)
Definition: instructions.cc:25045
Gcn3ISA::Inst_SOP1__S_WQM_B64::Inst_SOP1__S_WQM_B64
Inst_SOP1__S_WQM_B64(InFmt_SOP1 *)
Definition: instructions.cc:2080
Gcn3ISA::Inst_DS__DS_SUB_RTN_U32::Inst_DS__DS_SUB_RTN_U32
Inst_DS__DS_SUB_RTN_U32(InFmt_DS *)
Definition: instructions.cc:31672
Gcn3ISA::Inst_DS__DS_INC_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33203
Gcn3ISA::Inst_VOP3__V_CMPX_LE_U32::Inst_VOP3__V_CMPX_LE_U32
Inst_VOP3__V_CMPX_LE_U32(InFmt_VOP3 *)
Definition: instructions.cc:21680
Gcn3ISA::Inst_VOP3__V_CMPX_LG_F64::~Inst_VOP3__V_CMPX_LG_F64
~Inst_VOP3__V_CMPX_LG_F64()
Definition: instructions.cc:18820
Gcn3ISA::Inst_VOP2__V_SUBB_U32::~Inst_VOP2__V_SUBB_U32
~Inst_VOP2__V_SUBB_U32()
Definition: instructions.cc:6686
Gcn3ISA::Inst_SOP1__S_FF0_I32_B64::~Inst_SOP1__S_FF0_I32_B64
~Inst_SOP1__S_FF0_I32_B64()
Definition: instructions.cc:2300
Gcn3ISA::Inst_VOP3__V_LOG_F16::~Inst_VOP3__V_LOG_F16
~Inst_VOP3__V_LOG_F16()
Definition: instructions.cc:27357
Gcn3ISA::Inst_SOPC__S_CMP_LE_I32::Inst_SOPC__S_CMP_LE_I32
Inst_SOPC__S_CMP_LE_I32(InFmt_SOPC *)
Definition: instructions.cc:3348
Gcn3ISA::Inst_DS__DS_CMPST_RTN_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33461
Gcn3ISA::Inst_VOP3__V_CMP_T_U32::~Inst_VOP3__V_CMP_T_U32
~Inst_VOP3__V_CMP_T_U32()
Definition: instructions.cc:21232
Gcn3ISA::Inst_VOP2__V_ASHRREV_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6116
Gcn3ISA::Inst_VOPC__V_CMPX_NLT_F32::~Inst_VOPC__V_CMPX_NLT_F32
~Inst_VOPC__V_CMPX_NLT_F32()
Definition: instructions.cc:11472
Gcn3ISA::Inst_VOP3__V_CMPX_NLT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16640
Gcn3ISA::Inst_SOPP__S_SETPRIO::Inst_SOPP__S_SETPRIO
Inst_SOPP__S_SETPRIO(InFmt_SOPP *)
Definition: instructions.cc:4207
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34789
Gcn3ISA::Inst_VOPC__V_CMP_T_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14716
Gcn3ISA::Inst_VOP3__V_CMPX_LE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22615
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_OR::Inst_MIMG__IMAGE_ATOMIC_OR
Inst_MIMG__IMAGE_ATOMIC_OR(InFmt_MIMG *)
Definition: instructions.cc:38214
Gcn3ISA::Inst_VOPC__V_CMP_EQ_F32::Inst_VOPC__V_CMP_EQ_F32
Inst_VOPC__V_CMP_EQ_F32(InFmt_VOPC *)
Definition: instructions.cc:10556
Gcn3ISA::Inst_SOPK__S_GETREG_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1793
Gcn3ISA::Inst_VOP3__V_CMPX_GE_I64::Inst_VOP3__V_CMPX_GE_I64
Inst_VOP3__V_CMPX_GE_I64(InFmt_VOP3 *)
Definition: instructions.cc:22731
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CD_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39326
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37360
Gcn3ISA::Inst_VOP3__V_MIN_F16::~Inst_VOP3__V_MIN_F16
~Inst_VOP3__V_MIN_F16()
Definition: instructions.cc:24987
Gcn3ISA::Inst_SOP2__S_SUB_U32::~Inst_SOP2__S_SUB_U32
~Inst_SOP2__S_SUB_U32()
Definition: instructions.cc:84
Gcn3ISA::Inst_DS__DS_READ_B96::Inst_DS__DS_READ_B96
Inst_DS__DS_READ_B96(InFmt_DS *)
Definition: instructions.cc:34490
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:5856
Gcn3ISA::Inst_VOP3__V_CMP_GE_F64::~Inst_VOP3__V_CMP_GE_F64
~Inst_VOP3__V_CMP_GE_F64()
Definition: instructions.cc:18043
Gcn3ISA::Inst_VOP3__V_CMPX_NE_I32::Inst_VOP3__V_CMPX_NE_I32
Inst_VOP3__V_CMPX_NE_I32(InFmt_VOP3 *)
Definition: instructions.cc:21452
Gcn3ISA::Inst_VOP1__V_CVT_I32_F64::~Inst_VOP1__V_CVT_I32_F64
~Inst_VOP1__V_CVT_I32_F64()
Definition: instructions.cc:7415
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_DEC_X2::Inst_MUBUF__BUFFER_ATOMIC_DEC_X2
Inst_MUBUF__BUFFER_ATOMIC_DEC_X2(InFmt_MUBUF *)
Definition: instructions.cc:37125
ComputeUnit::incNumAtBarrier
void incNumAtBarrier(int bar_id)
Definition: compute_unit.cc:659
Gcn3ISA::Inst_VOPC__V_CMP_LG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11694
Gcn3ISA::Inst_DS__DS_XOR_SRC2_B32::Inst_DS__DS_XOR_SRC2_B32
Inst_DS__DS_XOR_SRC2_B32(InFmt_DS *)
Definition: instructions.cc:33924
Gcn3ISA::Inst_VOPC__V_CMPX_GE_I64::Inst_VOPC__V_CMPX_GE_I64
Inst_VOPC__V_CMPX_GE_I64(InFmt_VOPC *)
Definition: instructions.cc:15155
Gcn3ISA::Inst_SMEM__S_STORE_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5060
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_O::Inst_MIMG__IMAGE_GATHER4_C_O
Inst_MIMG__IMAGE_GATHER4_C_O(InFmt_MIMG *)
Definition: instructions.cc:39146
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:37532
Gcn3ISA::Inst_DS__DS_DEC_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33222
Gcn3ISA::Inst_SOP2__S_AND_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:456
Gcn3ISA::Inst_DS__DS_CMPST_B32::Inst_DS__DS_CMPST_B32
Inst_DS__DS_CMPST_B32(InFmt_DS *)
Definition: instructions.cc:31417
Gcn3ISA::Inst_VOPC__V_CMP_EQ_U16::~Inst_VOPC__V_CMP_EQ_U16
~Inst_VOPC__V_CMP_EQ_U16()
Definition: instructions.cc:12857
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_INC::Inst_FLAT__FLAT_ATOMIC_INC
Inst_FLAT__FLAT_ATOMIC_INC(InFmt_FLAT *)
Definition: instructions.cc:41006
Gcn3ISA::Inst_VOP3__V_CMPX_TRU_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16659
Gcn3ISA::Inst_DS__DS_DEC_SRC2_U32::Inst_DS__DS_DEC_SRC2_U32
Inst_DS__DS_DEC_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:33790
Gcn3ISA::Inst_DS__DS_MIN_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31097
Gcn3ISA::Inst_DS__DS_WRITE_B8::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:31579
Gcn3ISA::Inst_VOP3__V_CMP_LE_I64::Inst_VOP3__V_CMP_LE_I64
Inst_VOP3__V_CMP_LE_I64(InFmt_VOP3 *)
Definition: instructions.cc:21990
Gcn3ISA::Inst_VOP2__V_SUB_U16::~Inst_VOP2__V_SUB_U16
~Inst_VOP2__V_SUB_U16()
Definition: instructions.cc:6936
Gcn3ISA::Inst_VOPC__V_CMPX_LT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15253
Gcn3ISA::Inst_VOPC__V_CMP_LG_F64::~Inst_VOPC__V_CMP_LG_F64
~Inst_VOPC__V_CMP_LG_F64()
Definition: instructions.cc:11688
Gcn3ISA::Inst_VOP2__V_MIN_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7149
Gcn3ISA::Inst_SOP1__S_FF1_I32_B32::Inst_SOP1__S_FF1_I32_B32
Inst_SOP1__S_FF1_I32_B32(InFmt_SOP1 *)
Definition: instructions.cc:2320
Gcn3ISA::Inst_VOP3__V_CMPX_NLE_F32::~Inst_VOP3__V_CMPX_NLE_F32
~Inst_VOP3__V_CMPX_NLE_F32()
Definition: instructions.cc:17609
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_AND::Inst_MUBUF__BUFFER_ATOMIC_AND
Inst_MUBUF__BUFFER_ATOMIC_AND(InFmt_MUBUF *)
Definition: instructions.cc:36663
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX4::Inst_FLAT__FLAT_STORE_DWORDX4
Inst_FLAT__FLAT_STORE_DWORDX4(InFmt_FLAT *)
Definition: instructions.cc:40335
Gcn3ISA::Inst_DS__DS_MIN_SRC2_F64::~Inst_DS__DS_MIN_SRC2_F64
~Inst_DS__DS_MIN_SRC2_F64()
Definition: instructions.cc:34418
Gcn3ISA::Inst_VOPC__V_CMP_EQ_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14799
Gcn3ISA::Inst_VOP3__V_ASHRREV_I32::Inst_VOP3__V_ASHRREV_I32
Inst_VOP3__V_ASHRREV_I32(InFmt_VOP3 *)
Definition: instructions.cc:24018
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_X::Inst_MUBUF__BUFFER_LOAD_FORMAT_X
Inst_MUBUF__BUFFER_LOAD_FORMAT_X(InFmt_MUBUF *)
Definition: instructions.cc:34527
Gcn3ISA::Inst_VOP3__V_CMP_NEQ_F32::Inst_VOP3__V_CMP_NEQ_F32
Inst_VOP3__V_CMP_NEQ_F32(InFmt_VOP3 *)
Definition: instructions.cc:17098
Gcn3ISA::Inst_VOP1__V_LOG_LEGACY_F32::~Inst_VOP1__V_LOG_LEGACY_F32
~Inst_VOP1__V_LOG_LEGACY_F32()
Definition: instructions.cc:9383
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMIN::~Inst_FLAT__FLAT_ATOMIC_SMIN
~Inst_FLAT__FLAT_ATOMIC_SMIN()
Definition: instructions.cc:40843
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37492
Gcn3ISA::Inst_VOP3__V_CVT_U32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25434
Gcn3ISA::Inst_VOPC__V_CMPX_GT_U32::~Inst_VOPC__V_CMPX_GT_U32
~Inst_VOPC__V_CMPX_GT_U32()
Definition: instructions.cc:14375
Gcn3ISA::Inst_VOPC__V_CMP_NLE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10893
Gcn3ISA::InstFormat::imm_f32
float imm_f32
Definition: gpu_decoder.hh:1640
Gcn3ISA::Inst_VOP3__V_TRUNC_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26032
Gcn3ISA::InFmt_VOP3_SDST_ENC::SDST
unsigned int SDST
Definition: gpu_decoder.hh:1566
Gcn3ISA::Inst_VOP3__V_CVT_PK_U8_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28957
Gcn3ISA::Inst_VOPC__V_CMPX_NLT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11478
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORD::~Inst_MUBUF__BUFFER_LOAD_DWORD
~Inst_MUBUF__BUFFER_LOAD_DWORD()
Definition: instructions.cc:35304
Gcn3ISA::Inst_VOP3__V_MUL_HI_I32::~Inst_VOP3__V_MUL_HI_I32
~Inst_VOP3__V_MUL_HI_I32()
Definition: instructions.cc:30423
Gcn3ISA::Inst_SOP1__S_ORN2_SAVEEXEC_B64::Inst_SOP1__S_ORN2_SAVEEXEC_B64
Inst_SOP1__S_ORN2_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2843
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_SBYTE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35156
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMAX::Inst_FLAT__FLAT_ATOMIC_UMAX
Inst_FLAT__FLAT_ATOMIC_UMAX(InFmt_FLAT *)
Definition: instructions.cc:40906
Gcn3ISA::Inst_VOPC__V_CMP_U_F16::Inst_VOPC__V_CMP_U_F16
Inst_VOPC__V_CMP_U_F16(InFmt_VOPC *)
Definition: instructions.cc:10063
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_B::Inst_MIMG__IMAGE_GATHER4_C_B
Inst_MIMG__IMAGE_GATHER4_C_B(InFmt_MIMG *)
Definition: instructions.cc:38994
Gcn3ISA::Inst_VOPC__V_CMP_NGE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10094
Gcn3ISA::Inst_VOP3__V_CUBEID_F32::~Inst_VOP3__V_CUBEID_F32
~Inst_VOP3__V_CUBEID_F32()
Definition: instructions.cc:27848
Gcn3ISA::Inst_VOP3__V_MUL_U32_U24::Inst_VOP3__V_MUL_U32_U24
Inst_VOP3__V_MUL_U32_U24(InFmt_VOP3 *)
Definition: instructions.cc:23620
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35932
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40251
Gcn3ISA::Inst_VOP3__V_SUBREV_U32::Inst_VOP3__V_SUBREV_U32
Inst_VOP3__V_SUBREV_U32(InFmt_VOP3_SDST_ENC *)
Definition: instructions.cc:24374
Gcn3ISA::Inst_VOP3__V_CMPX_LT_I64::Inst_VOP3__V_CMPX_LT_I64
Inst_VOP3__V_CMPX_LT_I64(InFmt_VOP3 *)
Definition: instructions.cc:22516
Gcn3ISA::Inst_MIMG__IMAGE_STORE_MIP::Inst_MIMG__IMAGE_STORE_MIP
Inst_MIMG__IMAGE_STORE_MIP(InFmt_MIMG *)
Definition: instructions.cc:37868
Gcn3ISA::Inst_VOPC__V_CMP_F_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10510
Gcn3ISA::Inst_VOP2__V_SUBREV_F32::~Inst_VOP2__V_SUBREV_F32
~Inst_VOP2__V_SUBREV_F32()
Definition: instructions.cc:5573
Gcn3ISA::Inst_SOP1__S_NOR_SAVEEXEC_B64::~Inst_SOP1__S_NOR_SAVEEXEC_B64
~Inst_SOP1__S_NOR_SAVEEXEC_B64()
Definition: instructions.cc:2914
Gcn3ISA::Inst_SOP1__S_FF1_I32_B64::~Inst_SOP1__S_FF1_I32_B64
~Inst_SOP1__S_FF1_I32_B64()
Definition: instructions.cc:2352
Gcn3ISA::Inst_DS__DS_MAX_U32::Inst_DS__DS_MAX_U32
Inst_DS__DS_MAX_U32(InFmt_DS *)
Definition: instructions.cc:31138
Gcn3ISA::Inst_DS__DS_WRXCHG_RTN_B64::~Inst_DS__DS_WRXCHG_RTN_B64
~Inst_DS__DS_WRXCHG_RTN_B64()
Definition: instructions.cc:33377
Gcn3ISA::Inst_VOP3__V_LSHRREV_B16::Inst_VOP3__V_LSHRREV_B16
Inst_VOP3__V_LSHRREV_B16(InFmt_VOP3 *)
Definition: instructions.cc:24872
Gcn3ISA::Inst_VOP3__V_EXP_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27570
Gcn3ISA::Inst_VOP3__V_CVT_U16_F16::Inst_VOP3__V_CVT_U16_F16
Inst_VOP3__V_CVT_U16_F16(InFmt_VOP3 *)
Definition: instructions.cc:27251
Gcn3ISA::Inst_VOP3__V_CMP_LT_U64::Inst_VOP3__V_CMP_LT_U64
Inst_VOP3__V_CMP_LT_U64(InFmt_VOP3 *)
Definition: instructions.cc:22210
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX2::Inst_MUBUF__BUFFER_LOAD_DWORDX2
Inst_MUBUF__BUFFER_LOAD_DWORDX2(InFmt_MUBUF *)
Definition: instructions.cc:35392
Gcn3ISA::Inst_SOPK__S_CMPK_GT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1468
Gcn3ISA::Inst_VOP3__V_CMP_LT_F16::~Inst_VOP3__V_CMP_LT_F16
~Inst_VOP3__V_CMP_LT_F16()
Definition: instructions.cc:16065
Gcn3ISA::Inst_VOP3__V_CMP_LE_U64::~Inst_VOP3__V_CMP_LE_U64
~Inst_VOP3__V_CMP_LE_U64()
Definition: instructions.cc:22301
Gcn3ISA::Inst_VOPC__V_CMP_NE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14892
Gcn3ISA::Inst_VOP3__V_CMP_GE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19960
Gcn3ISA::Inst_VOPC__V_CMP_GE_F16::~Inst_VOPC__V_CMP_GE_F16
~Inst_VOPC__V_CMP_GE_F16()
Definition: instructions.cc:10034
Gcn3ISA::Inst_VOPC__V_CMPX_LT_U16::~Inst_VOPC__V_CMPX_LT_U16
~Inst_VOPC__V_CMPX_LT_U16()
Definition: instructions.cc:13311
Gcn3ISA::Inst_DS__DS_READ_I8::Inst_DS__DS_READ_I8
Inst_DS__DS_READ_I8(InFmt_DS *)
Definition: instructions.cc:32250
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMIN_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41584
Gcn3ISA::Inst_DS__DS_XOR_RTN_B32::~Inst_DS__DS_XOR_RTN_B32
~Inst_DS__DS_XOR_RTN_B32()
Definition: instructions.cc:31857
Gcn3ISA::Inst_VOPC__V_CMPX_LE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15317
Gcn3ISA::Inst_VOPC__V_CMPX_O_F64::Inst_VOPC__V_CMPX_O_F64
Inst_VOPC__V_CMPX_O_F64(InFmt_VOPC *)
Definition: instructions.cc:12259
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38906
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14317
Gcn3ISA::Inst_SOP1__S_BITSET1_B32::~Inst_SOP1__S_BITSET1_B32
~Inst_SOP1__S_BITSET1_B32()
Definition: instructions.cc:2582
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX8::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:4679
Gcn3ISA::Inst_VOP3__V_SUBBREV_U32::Inst_VOP3__V_SUBBREV_U32
Inst_VOP3__V_SUBBREV_U32(InFmt_VOP3_SDST_ENC *)
Definition: instructions.cc:24524
Gcn3ISA::Inst_VOP3__V_SUBB_U32::~Inst_VOP3__V_SUBB_U32
~Inst_VOP3__V_SUBB_U32()
Definition: instructions.cc:24481
Gcn3ISA::Inst_VOP3__V_CVT_PKACCUM_U8_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29853
Gcn3ISA::Inst_SOP2__S_MIN_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:250
Gcn3ISA::Inst_DS__DS_MIN_RTN_F64::Inst_DS__DS_MIN_RTN_F64
Inst_DS__DS_MIN_RTN_F64(InFmt_DS *)
Definition: instructions.cc:33466
Gcn3ISA::Inst_VOP3__V_CLREXCP::Inst_VOP3__V_CLREXCP
Inst_VOP3__V_CLREXCP(InFmt_VOP3 *)
Definition: instructions.cc:27200
Gcn3ISA::Inst_VOPC__V_CMPX_LT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15007
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:39389
Gcn3ISA::Inst_VOPC__V_CMP_GT_F64::Inst_VOPC__V_CMP_GT_F64
Inst_VOPC__V_CMP_GT_F64(InFmt_VOPC *)
Definition: instructions.cc:11649
Gcn3ISA::InFmt_VOP2::VDST
unsigned int VDST
Definition: gpu_decoder.hh:1542
Gcn3ISA::Inst_VOP3__V_MOV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25234
Gcn3ISA::Inst_SOPP__S_ENDPGM_SAVED::~Inst_SOPP__S_ENDPGM_SAVED
~Inst_SOPP__S_ENDPGM_SAVED()
Definition: instructions.cc:4406
Gcn3ISA::Inst_DS__DS_WRITE_B8::~Inst_DS__DS_WRITE_B8
~Inst_DS__DS_WRITE_B8()
Definition: instructions.cc:31541
Gcn3ISA::Inst_SOP1__S_NOT_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2007
Gcn3ISA::Inst_SOP2__S_BFE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1273
Gcn3ISA::Inst_DS__DS_RSUB_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32723
Gcn3ISA::Inst_VOP1__V_FREXP_MANT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9192
Gcn3ISA::InFmt_VOP3_1::SRC0
unsigned int SRC0
Definition: gpu_decoder.hh:1557
Gcn3ISA::Inst_SOP1__S_FLBIT_I32::~Inst_SOP1__S_FLBIT_I32
~Inst_SOP1__S_FLBIT_I32()
Definition: instructions.cc:2430
Gcn3ISA::Inst_VOP3__V_FRACT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27083
Gcn3ISA::Inst_VOPC__V_CMPX_F_U64::~Inst_VOPC__V_CMPX_F_U64
~Inst_VOPC__V_CMPX_F_U64()
Definition: instructions.cc:15220
Gcn3ISA::Inst_SOP2__S_CSELECT_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:369
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORD::~Inst_MUBUF__BUFFER_STORE_DWORD
~Inst_MUBUF__BUFFER_STORE_DWORD()
Definition: instructions.cc:35926
Gcn3ISA::Inst_DS__DS_AND_RTN_B32::Inst_DS__DS_AND_RTN_B32
Inst_DS__DS_AND_RTN_B32(InFmt_DS *)
Definition: instructions.cc:31816
Gcn3ISA::Inst_DS__DS_READ_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32283
Gcn3ISA::Inst_SOPP__S_ENDPGM_SAVED::Inst_SOPP__S_ENDPGM_SAVED
Inst_SOPP__S_ENDPGM_SAVED(InFmt_SOPP *)
Definition: instructions.cc:4401
Gcn3ISA::Inst_VOP3__V_CMPX_NEQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16621
Gcn3ISA::Inst_VOPC__V_CMP_GT_I32::Inst_VOPC__V_CMP_GT_I32
Inst_VOPC__V_CMP_GT_I32(InFmt_VOPC *)
Definition: instructions.cc:13643
Gcn3ISA::Inst_DS__DS_READ_U16::Inst_DS__DS_READ_U16
Inst_DS__DS_READ_U16(InFmt_DS *)
Definition: instructions.cc:32350
Gcn3ISA::Inst_VOPC__V_CMP_LE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14592
Gcn3ISA::Inst_VOPC__V_CMP_EQ_F64::~Inst_VOPC__V_CMP_EQ_F64
~Inst_VOPC__V_CMP_EQ_F64()
Definition: instructions.cc:11592
Gcn3ISA::Inst_VOP3__V_CMPX_O_F32::~Inst_VOP3__V_CMPX_O_F32
~Inst_VOP3__V_CMPX_O_F32()
Definition: instructions.cc:17434
Gcn3ISA::Inst_VOP3__V_CMPX_LE_F32::Inst_VOP3__V_CMPX_LE_F32
Inst_VOP3__V_CMPX_LE_F32(InFmt_VOP3 *)
Definition: instructions.cc:17289
Gcn3ISA::InFmt_VOP3::ABS
unsigned int ABS
Definition: gpu_decoder.hh:1549
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_X::~Inst_MTBUF__TBUFFER_STORE_FORMAT_X
~Inst_MTBUF__TBUFFER_STORE_FORMAT_X()
Definition: instructions.cc:37282
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ
Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ(InFmt_MTBUF *)
Definition: instructions.cc:37213
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:39018
Gcn3ISA::Inst_SOPK__S_CMPK_EQ_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1568
Gcn3ISA::Inst_DS__DS_MIN_I32::~Inst_DS__DS_MIN_I32
~Inst_DS__DS_MIN_I32()
Definition: instructions.cc:31089
Gcn3ISA::Inst_VOP2__V_MADMK_F32::Inst_VOP2__V_MADMK_F32
Inst_VOP2__V_MADMK_F32(InFmt_VOP2 *)
Definition: instructions.cc:6405
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_AND_X2::~Inst_FLAT__FLAT_ATOMIC_AND_X2
~Inst_FLAT__FLAT_ATOMIC_AND_X2()
Definition: instructions.cc:41654
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2
Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2(InFmt_MUBUF *)
Definition: instructions.cc:36825
Gcn3ISA::Inst_SOP1__S_QUADMASK_B32::~Inst_SOP1__S_QUADMASK_B32
~Inst_SOP1__S_QUADMASK_B32()
Definition: instructions.cc:2977
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34925
Gcn3ISA::Inst_SOP2__S_ASHR_I64::~Inst_SOP2__S_ASHR_I64
~Inst_SOP2__S_ASHR_I64()
Definition: instructions.cc:1052
Gcn3ISA::Inst_DS__DS_DEC_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33805
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4::~Inst_MIMG__IMAGE_GATHER4
~Inst_MIMG__IMAGE_GATHER4()
Definition: instructions.cc:38853
Gcn3ISA::Inst_VOP2__V_MAX_I16::Inst_VOP2__V_MAX_I16
Inst_VOP2__V_MAX_I16(InFmt_VOP2 *)
Definition: instructions.cc:7185
Gcn3ISA::Inst_VOP3__V_CMPX_O_F16::~Inst_VOP3__V_CMPX_O_F16
~Inst_VOP3__V_CMPX_O_F16()
Definition: instructions.cc:16499
Gcn3ISA::Inst_VOP3__V_CMP_GT_F64::~Inst_VOP3__V_CMP_GT_F64
~Inst_VOP3__V_CMP_GT_F64()
Definition: instructions.cc:17932
Gcn3ISA::Inst_VOP3__V_SQRT_F64::Inst_VOP3__V_SQRT_F64
Inst_VOP3__V_SQRT_F64(InFmt_VOP3 *)
Definition: instructions.cc:26696
Gcn3ISA::Inst_VOP3__V_CMPX_LG_F32::~Inst_VOP3__V_CMPX_LG_F32
~Inst_VOP3__V_CMPX_LG_F32()
Definition: instructions.cc:17365
Gcn3ISA::Inst_VOP3__V_MIN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23906
Gcn3ISA::Inst_VOP2__V_OR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6252
Gcn3ISA::Inst_VOP2__V_LSHRREV_B16::Inst_VOP2__V_LSHRREV_B16
Inst_VOP2__V_LSHRREV_B16(InFmt_VOP2 *)
Definition: instructions.cc:7054
Gcn3ISA::Inst_VOPC__V_CMP_LE_I16::~Inst_VOPC__V_CMP_LE_I16
~Inst_VOPC__V_CMP_LE_I16()
Definition: instructions.cc:12650
Gcn3ISA::countZeroBits
ScalarRegI32 countZeroBits(T val)
Definition: inst_util.hh:119
Gcn3ISA::Inst_SOP2__S_LSHR_B32::~Inst_SOP2__S_LSHR_B32
~Inst_SOP2__S_LSHR_B32()
Definition: instructions.cc:959
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ::~Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ
~Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ()
Definition: instructions.cc:34595
Gcn3ISA::Inst_VOP3__V_CMP_CLASS_F16::Inst_VOP3__V_CMP_CLASS_F16
Inst_VOP3__V_CMP_CLASS_F16(InFmt_VOP3 *)
Definition: instructions.cc:15976
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:38796
Gcn3ISA::Inst_VOP3__V_CVT_U16_F16::~Inst_VOP3__V_CVT_U16_F16
~Inst_VOP3__V_CVT_U16_F16()
Definition: instructions.cc:27258
Gcn3ISA::Inst_VOP3__V_CVT_F16_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27228
Gcn3ISA::Inst_VOP2__V_MAX_F32::~Inst_VOP2__V_MAX_F32
~Inst_VOP2__V_MAX_F32()
Definition: instructions.cc:5922
Gcn3ISA::Inst_VOP3__V_CMP_EQ_I16::~Inst_VOP3__V_CMP_EQ_I16
~Inst_VOP3__V_CMP_EQ_I16()
Definition: instructions.cc:19482
Gcn3ISA::Inst_VOPC__V_CMPX_O_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12273
Gcn3ISA::Inst_VOP1__V_CEIL_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9251
Gcn3ISA::Inst_SOPC__S_CMP_GT_I32::~Inst_SOPC__S_CMP_GT_I32
~Inst_SOPC__S_CMP_GT_I32()
Definition: instructions.cc:3276
Gcn3ISA::Inst_VOPC__V_CMP_T_I16::Inst_VOPC__V_CMP_T_I16
Inst_VOPC__V_CMP_T_I16(InFmt_VOPC *)
Definition: instructions.cc:12768
ComputeUnit::numYetToReachBarrier
int numYetToReachBarrier(int bar_id)
Definition: compute_unit.cc:645
Gcn3ISA::Inst_VOP3__V_CUBETC_F32::~Inst_VOP3__V_CUBETC_F32
~Inst_VOP3__V_CUBETC_F32()
Definition: instructions.cc:27882
Gcn3ISA::Inst_VOPC__V_CMP_EQ_U32::~Inst_VOPC__V_CMP_EQ_U32
~Inst_VOPC__V_CMP_EQ_U32()
Definition: instructions.cc:13825
Gcn3ISA::Inst_VOP3__V_CMP_NE_I64::~Inst_VOP3__V_CMP_NE_I64
~Inst_VOP3__V_CMP_NE_I64()
Definition: instructions.cc:22081
Gcn3ISA::Inst_VOPC__V_CMP_NGT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10130
Gcn3ISA::Inst_VOP3__V_SIN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26747
Gcn3ISA::Inst_VOP3__V_CMPX_U_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18998
Gcn3ISA::Inst_VOP3__V_CMPX_TRU_F16::~Inst_VOP3__V_CMPX_TRU_F16
~Inst_VOP3__V_CMPX_TRU_F16()
Definition: instructions.cc:16653
Gcn3ISA::Inst_VOPC__V_CMP_LT_F64::Inst_VOPC__V_CMP_LT_F64
Inst_VOPC__V_CMP_LT_F64(InFmt_VOPC *)
Definition: instructions.cc:11553
Gcn3ISA::Inst_VOPC__V_CMPX_T_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13263
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:8908
Gcn3ISA::Inst_VOP1__V_TRUNC_F32::~Inst_VOP1__V_TRUNC_F32
~Inst_VOP1__V_TRUNC_F32()
Definition: instructions.cc:8180
Gcn3ISA::Inst_VOPC__V_CMPX_LG_F64::~Inst_VOPC__V_CMPX_LG_F64
~Inst_VOPC__V_CMPX_LG_F64()
Definition: instructions.cc:12199
Gcn3ISA::Inst_SOP1__S_FLBIT_I32::Inst_SOP1__S_FLBIT_I32
Inst_SOP1__S_FLBIT_I32(InFmt_SOP1 *)
Definition: instructions.cc:2424
Gcn3ISA::Inst_VOPC__V_CMPX_NGT_F16::Inst_VOPC__V_CMPX_NGT_F16
Inst_VOPC__V_CMPX_NGT_F16(InFmt_VOPC *)
Definition: instructions.cc:10407
Gcn3ISA::Inst_SMEM__S_ATC_PROBE::~Inst_SMEM__S_ATC_PROBE
~Inst_SMEM__S_ATC_PROBE()
Definition: instructions.cc:5414
Gcn3ISA::Inst_VOP3__V_CMP_LE_I64::~Inst_VOP3__V_CMP_LE_I64
~Inst_VOP3__V_CMP_LE_I64()
Definition: instructions.cc:21997
Gcn3ISA::InFmt_DS_1::DATA1
unsigned int DATA1
Definition: gpu_decoder.hh:1366
Gcn3ISA::Inst_DS__DS_DEC_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34252
Shader::prepareFlush
void prepareFlush(GPUDynInstPtr gpuDynInst)
dispatcher/shader arranges flush requests to the CUs
Definition: shader.cc:221
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:9197
Gcn3ISA::Inst_VOP3__V_CMP_NGT_F64::Inst_VOP3__V_CMP_NGT_F64
Inst_VOP3__V_CMP_NGT_F64(InFmt_VOP3 *)
Definition: instructions.cc:18311
Gcn3ISA::Inst_SOPC__S_BITCMP1_B32::Inst_SOPC__S_BITCMP1_B32
Inst_SOPC__S_BITCMP1_B32(InFmt_SOPC *)
Definition: instructions.cc:3556
Gcn3ISA::Inst_VOP3__V_CMP_NLG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18269
Gcn3ISA::Inst_VOP1__V_SIN_F16::~Inst_VOP1__V_SIN_F16
~Inst_VOP1__V_SIN_F16()
Definition: instructions.cc:9317
Gcn3ISA::Inst_VOP1__V_MOV_FED_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7645
Gcn3ISA::Inst_VOP1__V_FLOOR_F32::~Inst_VOP1__V_FLOOR_F32
~Inst_VOP1__V_FLOOR_F32()
Definition: instructions.cc:8270
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SMIN::Inst_MIMG__IMAGE_ATOMIC_SMIN
Inst_MIMG__IMAGE_ATOMIC_SMIN(InFmt_MIMG *)
Definition: instructions.cc:38080
Gcn3ISA::Inst_VINTRP__V_INTERP_P1_F32::Inst_VINTRP__V_INTERP_P1_F32
Inst_VINTRP__V_INTERP_P1_F32(InFmt_VINTRP *)
Definition: instructions.cc:15460
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:38820
Gcn3ISA::Inst_VOP3__V_CMP_F_U32::~Inst_VOP3__V_CMP_F_U32
~Inst_VOP3__V_CMP_F_U32()
Definition: instructions.cc:20954
Gcn3ISA::Inst_VOP1__V_RSQ_F32::Inst_VOP1__V_RSQ_F32
Inst_VOP1__V_RSQ_F32(InFmt_VOP1 *)
Definition: instructions.cc:8413
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B::Inst_MIMG__IMAGE_SAMPLE_B
Inst_MIMG__IMAGE_SAMPLE_B(InFmt_MIMG *)
Definition: instructions.cc:38399
Gcn3ISA::Inst_VOP3__V_CMP_NEQ_F64::Inst_VOP3__V_CMP_NEQ_F64
Inst_VOP3__V_CMP_NEQ_F64(InFmt_VOP3 *)
Definition: instructions.cc:18421
Gcn3ISA::Inst_SOP1__S_BITSET0_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2540
Gcn3ISA::Inst_DS__DS_ADD_SRC2_F32::Inst_DS__DS_ADD_SRC2_F32
Inst_DS__DS_ADD_SRC2_F32(InFmt_DS *)
Definition: instructions.cc:34005
Gcn3ISA::Inst_VOP3__V_BFI_B32::Inst_VOP3__V_BFI_B32
Inst_VOP3__V_BFI_B32(InFmt_VOP3 *)
Definition: instructions.cc:27999
Gcn3ISA::Inst_VOP3__V_PERM_B32::Inst_VOP3__V_PERM_B32
Inst_VOP3__V_PERM_B32(InFmt_VOP3 *)
Definition: instructions.cc:29709
Gcn3ISA::Inst_VOP3__V_CMP_T_I64::Inst_VOP3__V_CMP_T_I64
Inst_VOP3__V_CMP_T_I64(InFmt_VOP3 *)
Definition: instructions.cc:22158
Gcn3ISA::Inst_VOP1__V_NOT_B32::~Inst_VOP1__V_NOT_B32
~Inst_VOP1__V_NOT_B32()
Definition: instructions.cc:8664
Gcn3ISA::Inst_SOPK__S_CMPK_GT_I32::Inst_SOPK__S_CMPK_GT_I32
Inst_SOPK__S_CMPK_GT_I32(InFmt_SOPK *)
Definition: instructions.cc:1456
Gcn3ISA::Inst_VOP3__V_CMPX_U_F16::~Inst_VOP3__V_CMPX_U_F16
~Inst_VOP3__V_CMPX_U_F16()
Definition: instructions.cc:16519
Gcn3ISA::Inst_VOP2__V_MAX_U16::~Inst_VOP2__V_MAX_U16
~Inst_VOP2__V_MAX_U16()
Definition: instructions.cc:7160
Gcn3ISA::Inst_VOP3__V_CVT_F32_F64::~Inst_VOP3__V_CVT_F32_F64
~Inst_VOP3__V_CVT_F32_F64()
Definition: instructions.cc:25690
Gcn3ISA::Inst_DS__DS_CONDXCHG32_RTN_B64::Inst_DS__DS_CONDXCHG32_RTN_B64
Inst_DS__DS_CONDXCHG32_RTN_B64(InFmt_DS *)
Definition: instructions.cc:33697
Gcn3ISA::Inst_VOP3__V_SQRT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27324
Gcn3ISA::Inst_VOPC__V_CMPX_NGT_F16::~Inst_VOPC__V_CMPX_NGT_F16
~Inst_VOPC__V_CMPX_NGT_F16()
Definition: instructions.cc:10414
Gcn3ISA::Inst_VOPC__V_CMPX_NGE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12342
Gcn3ISA::Inst_VOP3__V_CMP_NEQ_F16::~Inst_VOP3__V_CMP_NEQ_F16
~Inst_VOP3__V_CMP_NEQ_F16()
Definition: instructions.cc:16291
Gcn3ISA::Inst_VOPC__V_CMP_GE_U32::~Inst_VOPC__V_CMP_GE_U32
~Inst_VOPC__V_CMP_GE_U32()
Definition: instructions.cc:13949
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_I16::Inst_VOP3__V_CMPX_EQ_I16
Inst_VOP3__V_CMPX_EQ_I16(InFmt_VOP3 *)
Definition: instructions.cc:20086
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41249
Gcn3ISA::Inst_SMEM__S_DCACHE_INV_VOL::~Inst_SMEM__S_DCACHE_INV_VOL
~Inst_SMEM__S_DCACHE_INV_VOL()
Definition: instructions.cc:5350
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:3206
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:29451
Gcn3ISA::Inst_MUBUF__BUFFER_WBINVL1_VOL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36411
Gcn3ISA::Inst_VOP3__V_CMPX_T_I16::Inst_VOP3__V_CMPX_T_I16
Inst_VOP3__V_CMPX_T_I16(InFmt_VOP3 *)
Definition: instructions.cc:20301
Gcn3ISA::Inst_VOPC__V_CMPX_NE_U16::Inst_VOPC__V_CMPX_NE_U16
Inst_VOPC__V_CMPX_NE_U16(InFmt_VOPC *)
Definition: instructions.cc:13433
Gcn3ISA::Inst_VOP3__V_MUL_LO_U16::~Inst_VOP3__V_MUL_LO_U16
~Inst_VOP3__V_MUL_LO_U16()
Definition: instructions.cc:24796
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4881
Gcn3ISA::Inst_DS__DS_MIN_U64::Inst_DS__DS_MIN_U64
Inst_DS__DS_MIN_U64(InFmt_DS *)
Definition: instructions.cc:32801
Gcn3ISA::Inst_VOP3__V_CVT_F16_U16::~Inst_VOP3__V_CVT_F16_U16
~Inst_VOP3__V_CVT_F16_U16()
Definition: instructions.cc:27222
Gcn3ISA::Inst_VOPC__V_CMP_GE_I64::Inst_VOPC__V_CMP_GE_I64
Inst_VOPC__V_CMP_GE_I64(InFmt_VOPC *)
Definition: instructions.cc:14673
Gcn3ISA::Inst_VOP3__V_SIN_F32::~Inst_VOP3__V_SIN_F32
~Inst_VOP3__V_SIN_F32()
Definition: instructions.cc:26741
Gcn3ISA::Inst_VOPC__V_CMPX_TRU_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11511
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_B_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38558
Gcn3ISA::Inst_VOP3__V_FRACT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26184
Gcn3ISA::Inst_VOP3__V_CMP_GE_U16::~Inst_VOP3__V_CMP_GE_U16
~Inst_VOP3__V_CMP_GE_U16()
Definition: instructions.cc:19954
Gcn3ISA::Inst_VOP1__V_BFREV_B32::~Inst_VOP1__V_BFREV_B32
~Inst_VOP1__V_BFREV_B32()
Definition: instructions.cc:8694
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_I16::~Inst_VOPC__V_CMPX_EQ_I16
~Inst_VOPC__V_CMPX_EQ_I16()
Definition: instructions.cc:13097
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ::~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ
~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ()
Definition: instructions.cc:37221
Gcn3ISA::Inst_FLAT__FLAT_LOAD_UBYTE::~Inst_FLAT__FLAT_LOAD_UBYTE
~Inst_FLAT__FLAT_LOAD_UBYTE()
Definition: instructions.cc:39421
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37486
Gcn3ISA::Inst_VOP3__V_CMPX_F_F16::~Inst_VOP3__V_CMPX_F_F16
~Inst_VOP3__V_CMPX_F_F16()
Definition: instructions.cc:16356
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_XOR_X2::Inst_MUBUF__BUFFER_ATOMIC_XOR_X2
Inst_MUBUF__BUFFER_ATOMIC_XOR_X2(InFmt_MUBUF *)
Definition: instructions.cc:37071
Gcn3ISA::Inst_VOP2__V_MUL_I32_I24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5719
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39292
Gcn3ISA::Inst_VOP1__V_READFIRSTLANE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7389
Gcn3ISA::Inst_DS__DS_CONSUME::~Inst_DS__DS_CONSUME
~Inst_DS__DS_CONSUME()
Definition: instructions.cc:34121
Gcn3ISA::Inst_VOP2__V_MUL_LO_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7004
Gcn3ISA::Inst_DS__DS_AND_B64::Inst_DS__DS_AND_B64
Inst_DS__DS_AND_B64(InFmt_DS *)
Definition: instructions.cc:32837
Gcn3ISA::Inst_SMEM__S_STORE_DWORD::Inst_SMEM__S_STORE_DWORD
Inst_SMEM__S_STORE_DWORD(InFmt_SMEM *)
Definition: instructions.cc:5043
Gcn3ISA::Inst_VOP3__V_SAD_U16::~Inst_VOP3__V_SAD_U16
~Inst_VOP3__V_SAD_U16()
Definition: instructions.cc:28855
Gcn3ISA::Inst_VOPC__V_CMP_CLASS_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9883
Gcn3ISA::Inst_SOPP__S_CBRANCH_CDBGUSER::Inst_SOPP__S_CBRANCH_CDBGUSER
Inst_SOPP__S_CBRANCH_CDBGUSER(InFmt_SOPP *)
Definition: instructions.cc:4348
Gcn3ISA::Inst_VOPC__V_CMPX_U_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11279
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:34973
Gcn3ISA::Inst_VOP3__V_CMP_GT_U16::~Inst_VOP3__V_CMP_GT_U16
~Inst_VOP3__V_CMP_GT_U16()
Definition: instructions.cc:19870
Gcn3ISA::Inst_DS__DS_CMPST_F32::Inst_DS__DS_CMPST_F32
Inst_DS__DS_CMPST_F32(InFmt_DS *)
Definition: instructions.cc:31438
Gcn3ISA::Inst_SOP2__S_RFE_RESTORE_B64::Inst_SOP2__S_RFE_RESTORE_B64
Inst_SOP2__S_RFE_RESTORE_B64(InFmt_SOP2 *)
Definition: instructions.cc:1339
Gcn3ISA::Inst_VOPC__V_CMP_GT_U32::~Inst_VOPC__V_CMP_GT_U32
~Inst_VOPC__V_CMP_GT_U32()
Definition: instructions.cc:13887
Gcn3ISA::Inst_MIMG__IMAGE_GET_LOD::~Inst_MIMG__IMAGE_GET_LOD
~Inst_MIMG__IMAGE_GET_LOD()
Definition: instructions.cc:39254
Gcn3ISA::Inst_VOP3__V_CMP_GE_U16::Inst_VOP3__V_CMP_GE_U16
Inst_VOP3__V_CMP_GE_U16(InFmt_VOP3 *)
Definition: instructions.cc:19947
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_I32::~Inst_VOPC__V_CMPX_EQ_I32
~Inst_VOPC__V_CMPX_EQ_I32()
Definition: instructions.cc:14065
Gcn3ISA::Inst_SOPK__S_CBRANCH_I_FORK::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1774
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_F16::~Inst_VOP3__V_CMPX_EQ_F16
~Inst_VOP3__V_CMPX_EQ_F16()
Definition: instructions.cc:16404
Gcn3ISA::Inst_SMEM__S_DCACHE_WB_VOL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5372
Gcn3ISA::Inst_VOP3__V_MUL_HI_U32::~Inst_VOP3__V_MUL_HI_U32
~Inst_VOP3__V_MUL_HI_U32()
Definition: instructions.cc:30379
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SWAP_X2::~Inst_FLAT__FLAT_ATOMIC_SWAP_X2
~Inst_FLAT__FLAT_ATOMIC_SWAP_X2()
Definition: instructions.cc:41213
Gcn3ISA::Inst_VOP3__V_CMP_LT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16071
Gcn3ISA::Inst_VOP3__V_SQRT_F32::~Inst_VOP3__V_SQRT_F32
~Inst_VOP3__V_SQRT_F32()
Definition: instructions.cc:26665
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_I32::Inst_VOPC__V_CMPX_EQ_I32
Inst_VOPC__V_CMPX_EQ_I32(InFmt_VOPC *)
Definition: instructions.cc:14059
Gcn3ISA::Inst_VOP3__V_CMPX_TRU_F64::Inst_VOP3__V_CMPX_TRU_F64
Inst_VOP3__V_CMPX_TRU_F64(InFmt_VOP3 *)
Definition: instructions.cc:19378
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34732
Gcn3ISA::Inst_VOPC__V_CMPX_NLE_F32::Inst_VOPC__V_CMPX_NLE_F32
Inst_VOPC__V_CMPX_NLE_F32(InFmt_VOPC *)
Definition: instructions.cc:11400
Gcn3ISA::Inst_VOPC__V_CMP_EQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10569
Gcn3ISA::Inst_VOP3__V_CMP_NLG_F64::Inst_VOP3__V_CMP_NLG_F64
Inst_VOP3__V_CMP_NLG_F64(InFmt_VOP3 *)
Definition: instructions.cc:18255
Gcn3ISA::Inst_VOPC__V_CMPX_NE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13199
Gcn3ISA::Inst_VOP3__V_CLREXCP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27210
Gcn3ISA::Inst_VOPC__V_CMPX_LE_I64::Inst_VOPC__V_CMPX_LE_I64
Inst_VOPC__V_CMPX_LE_I64(InFmt_VOPC *)
Definition: instructions.cc:15059
Gcn3ISA::Inst_VOP3__V_CMPX_TRU_F64::~Inst_VOP3__V_CMPX_TRU_F64
~Inst_VOP3__V_CMPX_TRU_F64()
Definition: instructions.cc:19386
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35024
Gcn3ISA::Inst_VOP3__V_CMP_LE_U32::~Inst_VOP3__V_CMP_LE_U32
~Inst_VOP3__V_CMP_LE_U32()
Definition: instructions.cc:21065
Gcn3ISA::Inst_SMEM__S_STORE_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5091
Wavefront::scalarRdGmReqsInPipe
int scalarRdGmReqsInPipe
Definition: wavefront.hh:186
Gcn3ISA::Inst_VOP3__V_CMPX_NE_I32::~Inst_VOP3__V_CMPX_NE_I32
~Inst_VOP3__V_CMPX_NE_I32()
Definition: instructions.cc:21459
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX4::~Inst_MUBUF__BUFFER_LOAD_DWORDX4
~Inst_MUBUF__BUFFER_LOAD_DWORDX4()
Definition: instructions.cc:35619
Gcn3ISA::Inst_VOP3__V_CMP_U_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16945
Gcn3ISA::Inst_VOPC__V_CMP_LT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10537
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX3::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36127
Wavefront::decVMemInstsIssued
void decVMemInstsIssued()
Definition: wavefront.cc:1347
Gcn3ISA::Inst_SMEM__S_DCACHE_INV::~Inst_SMEM__S_DCACHE_INV
~Inst_SMEM__S_DCACHE_INV()
Definition: instructions.cc:5318
Gcn3ISA::Inst_SOP1__S_BREV_B32::Inst_SOP1__S_BREV_B32
Inst_SOP1__S_BREV_B32(InFmt_SOP1 *)
Definition: instructions.cc:2108
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMIN_X2::~Inst_FLAT__FLAT_ATOMIC_UMIN_X2
~Inst_FLAT__FLAT_ATOMIC_UMIN_X2()
Definition: instructions.cc:41576
Gcn3ISA::Inst_VOP3__V_FREXP_EXP_I16_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27426
Gcn3ISA::Inst_DS__DS_WRAP_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32035
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D::~Inst_MIMG__IMAGE_SAMPLE_D
~Inst_MIMG__IMAGE_SAMPLE_D()
Definition: instructions.cc:38356
Gcn3ISA::Inst_VOP3__V_CMP_NLG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16240
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37425
Gcn3ISA::Inst_SOP1__S_OR_SAVEEXEC_B64::Inst_SOP1__S_OR_SAVEEXEC_B64
Inst_SOP1__S_OR_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2747
Gcn3ISA::Inst_DS__DS_AND_B32::Inst_DS__DS_AND_B32
Inst_DS__DS_AND_B32(InFmt_DS *)
Definition: instructions.cc:31156
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_ADD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40658
Gcn3ISA::Inst_DS__DS_MIN_RTN_I64::Inst_DS__DS_MIN_RTN_I64
Inst_DS__DS_MIN_RTN_I64(InFmt_DS *)
Definition: instructions.cc:33227
Gcn3ISA::Inst_VOP3__V_MAD_U32_U24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27809
Gcn3ISA::Inst_VOP3__V_CMPX_T_I32::Inst_VOP3__V_CMPX_T_I32
Inst_VOP3__V_CMPX_T_I32(InFmt_VOP3 *)
Definition: instructions.cc:21538
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:37407
Gcn3ISA::Inst_VOP3__V_SQRT_F16::~Inst_VOP3__V_SQRT_F16
~Inst_VOP3__V_SQRT_F16()
Definition: instructions.cc:27315
Wavefront::barrierId
void barrierId(int bar_id)
Definition: wavefront.cc:1416
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_ADD_X2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41421
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:38830
Gcn3ISA::Inst_VOP1__V_TRUNC_F64::Inst_VOP1__V_TRUNC_F64
Inst_VOP1__V_TRUNC_F64(InFmt_VOP1 *)
Definition: instructions.cc:8022
Gcn3ISA::Inst_SOPP__S_INCPERFLEVEL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4296
Gcn3ISA::Inst_VOP3__V_CMP_TRU_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17178
Gcn3ISA::Inst_VOP1__V_CVT_I32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7423
Gcn3ISA::Inst_VOP3__V_RSQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26623
Gcn3ISA::Inst_DS__DS_GWS_SEMA_BR::Inst_DS__DS_GWS_SEMA_BR
Inst_DS__DS_GWS_SEMA_BR(InFmt_DS *)
Definition: instructions.cc:34071
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SWAP::Inst_MIMG__IMAGE_ATOMIC_SWAP
Inst_MIMG__IMAGE_ATOMIC_SWAP(InFmt_MIMG *)
Definition: instructions.cc:37972
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX4::Inst_MUBUF__BUFFER_LOAD_DWORDX4
Inst_MUBUF__BUFFER_LOAD_DWORDX4(InFmt_MUBUF *)
Definition: instructions.cc:35607
Gcn3ISA::Inst_VOP1__V_SIN_F32::Inst_VOP1__V_SIN_F32
Inst_VOP1__V_SIN_F32(InFmt_VOP1 *)
Definition: instructions.cc:8586
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_XOR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38261
Gcn3ISA::Inst_DS__DS_MSKOR_RTN_B64::Inst_DS__DS_MSKOR_RTN_B64
Inst_DS__DS_MSKOR_RTN_B64(InFmt_DS *)
Definition: instructions.cc:33353
Gcn3ISA::Inst_VOPC__V_CMP_NLE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10148
Gcn3ISA::Inst_VINTRP__V_INTERP_MOV_F32::~Inst_VINTRP__V_INTERP_MOV_F32
~Inst_VINTRP__V_INTERP_MOV_F32()
Definition: instructions.cc:15506
Gcn3ISA::Inst_VOP3__V_CMP_LE_I32::~Inst_VOP3__V_CMP_LE_I32
~Inst_VOP3__V_CMP_LE_I32()
Definition: instructions.cc:20761
Gcn3ISA::Inst_SOPK__S_CMPK_LE_I32::Inst_SOPK__S_CMPK_LE_I32
Inst_SOPK__S_CMPK_LE_I32(InFmt_SOPK *)
Definition: instructions.cc:1531
Gcn3ISA::Inst_VOP2__V_MUL_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6831
Gcn3ISA::Inst_DS__DS_RSUB_RTN_U64::~Inst_DS__DS_RSUB_RTN_U64
~Inst_DS__DS_RSUB_RTN_U64()
Definition: instructions.cc:33176
Gcn3ISA::InFmt_VOP_DPP::BANK_MASK
unsigned int BANK_MASK
Definition: gpu_decoder.hh:1588
Gcn3ISA::Inst_DS__DS_MIN_SRC2_U64::~Inst_DS__DS_MIN_SRC2_U64
~Inst_DS__DS_MIN_SRC2_U64()
Definition: instructions.cc:34300
Gcn3ISA::findFirstZero
ScalarRegI32 findFirstZero(T val)
Definition: inst_util.hh:129
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_LDS_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36332
Gcn3ISA::Inst_SOPP__S_CBRANCH_CDBGUSER::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4360
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_F64::~Inst_VOPC__V_CMPX_EQ_F64
~Inst_VOPC__V_CMPX_EQ_F64()
Definition: instructions.cc:12100
Gcn3ISA::Inst_VOP3__V_CMPX_T_U32::Inst_VOP3__V_CMPX_T_U32
Inst_VOP3__V_CMPX_T_U32(InFmt_VOP3 *)
Definition: instructions.cc:21852
Gcn3ISA::Inst_VOP2__V_SUBREV_F16::~Inst_VOP2__V_SUBREV_F16
~Inst_VOP2__V_SUBREV_F16()
Definition: instructions.cc:6807
Gcn3ISA::Inst_VOPC__V_CMPX_T_I16::~Inst_VOPC__V_CMPX_T_I16
~Inst_VOPC__V_CMPX_T_I16()
Definition: instructions.cc:13257
Gcn3ISA::Inst_VOP2::extData
InstFormat extData
Definition: op_encodings.hh:285
Gcn3ISA::Inst_SOP1__S_NOT_B32::Inst_SOP1__S_NOT_B32
Inst_SOP1__S_NOT_B32(InFmt_SOP1 *)
Definition: instructions.cc:1993
Gcn3ISA::Inst_DS__DS_MAX_SRC2_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34447
Gcn3ISA::Inst_DS__DS_MIN_RTN_U32::~Inst_DS__DS_MIN_RTN_U32
~Inst_DS__DS_MIN_RTN_U32()
Definition: instructions.cc:31785
Gcn3ISA::Inst_VOP3__V_MBCNT_LO_U32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30636
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX2::~Inst_MUBUF__BUFFER_STORE_DWORDX2
~Inst_MUBUF__BUFFER_STORE_DWORDX2()
Definition: instructions.cc:36022
Gcn3ISA::Inst_VOP1__V_MOV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7326
Gcn3ISA::Inst_VOP3__V_CVT_F32_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25582
Gcn3ISA::Inst_SOP1__S_QUADMASK_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2985
Gcn3ISA::Inst_VOP3__V_CNDMASK_B32::Inst_VOP3__V_CNDMASK_B32
Inst_VOP3__V_CNDMASK_B32(InFmt_VOP3 *)
Definition: instructions.cc:23126
Gcn3ISA::Inst_DS__DS_CONSUME::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34126
Gcn3ISA::Inst_VOP3__V_CVT_F32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25696
Gcn3ISA::Inst_VOP3__V_DIV_FMAS_F32::~Inst_VOP3__V_DIV_FMAS_F32
~Inst_VOP3__V_DIV_FMAS_F32()
Definition: instructions.cc:29313
Gcn3ISA::Inst_DS__DS_WRITE_B64::~Inst_DS__DS_WRITE_B64
~Inst_DS__DS_WRITE_B64()
Definition: instructions.cc:32916
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SUB_X2::~Inst_FLAT__FLAT_ATOMIC_SUB_X2
~Inst_FLAT__FLAT_ATOMIC_SUB_X2()
Definition: instructions.cc:41451
Gcn3ISA::Inst_DS__DS_WRITE_SRC2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33960
Gcn3ISA::Inst_DS__DS_READ2ST64_B32::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:32231
Gcn3ISA::Inst_VOPC__V_CMP_NGE_F64::~Inst_VOPC__V_CMP_NGE_F64
~Inst_VOPC__V_CMP_NGE_F64()
Definition: instructions.cc:11819
Gcn3ISA::Inst_VOP3__V_MSAD_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29446
Gcn3ISA::Inst_VOP3__V_MOV_B32::Inst_VOP3__V_MOV_B32
Inst_VOP3__V_MOV_B32(InFmt_VOP3 *)
Definition: instructions.cc:25221
Gcn3ISA::Inst_VOPC__V_CMPX_GE_F32::~Inst_VOPC__V_CMPX_GE_F32
~Inst_VOPC__V_CMPX_GE_F32()
Definition: instructions.cc:11204
Gcn3ISA::Inst_DS__DS_READ_B96::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34503
Gcn3ISA::Inst_VOP3__V_CMPX_T_I32::~Inst_VOP3__V_CMPX_T_I32
~Inst_VOP3__V_CMPX_T_I32()
Definition: instructions.cc:21545
Gcn3ISA::Inst_VOP1__V_CVT_F16_I16::Inst_VOP1__V_CVT_F16_I16
Inst_VOP1__V_CVT_F16_I16(InFmt_VOP1 *)
Definition: instructions.cc:9017
Gcn3ISA::Inst_SOP2__S_ABSDIFF_I32::Inst_SOP2__S_ABSDIFF_I32
Inst_SOP2__S_ABSDIFF_I32(InFmt_SOP2 *)
Definition: instructions.cc:1310
Gcn3ISA::Inst_VOP2__V_ASHRREV_I32::Inst_VOP2__V_ASHRREV_I32
Inst_VOP2__V_ASHRREV_I32(InFmt_VOP2 *)
Definition: instructions.cc:6103
Gcn3ISA::Inst_VOP3__V_CMP_EQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16090
Gcn3ISA::Inst_VOP2__V_MADAK_F16::Inst_VOP2__V_MADAK_F16
Inst_VOP2__V_MADAK_F16(InFmt_VOP2 *)
Definition: instructions.cc:6877
GPUStaticInst::setFlag
void setFlag(Flags flag)
Definition: gpu_static_inst.hh:239
Gcn3ISA::Inst_VOP3__V_RSQ_F32::~Inst_VOP3__V_RSQ_F32
~Inst_VOP3__V_RSQ_F32()
Definition: instructions.cc:26529
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_U32::Inst_VOP3__V_CMPX_EQ_U32
Inst_VOP3__V_CMPX_EQ_U32(InFmt_VOP3 *)
Definition: instructions.cc:21637
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_XOR::Inst_MUBUF__BUFFER_ATOMIC_XOR
Inst_MUBUF__BUFFER_ATOMIC_XOR(InFmt_MUBUF *)
Definition: instructions.cc:36717
Gcn3ISA::Inst_VOPC__V_CMPX_GE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10328
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_XOR_X2::~Inst_MUBUF__BUFFER_ATOMIC_XOR_X2
~Inst_MUBUF__BUFFER_ATOMIC_XOR_X2()
Definition: instructions.cc:37084
Gcn3ISA::ScalarRegU64
uint64_t ScalarRegU64
Definition: registers.hh:155
Gcn3ISA::Inst_VOPC__V_CMPX_NLE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11413
Gcn3ISA::Inst_VOPC__V_CMPX_NE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15381
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW::~Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW
~Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW()
Definition: instructions.cc:37374
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_CL::Inst_MIMG__IMAGE_GATHER4_C_CL
Inst_MIMG__IMAGE_GATHER4_C_CL(InFmt_MIMG *)
Definition: instructions.cc:38960
Gcn3ISA::Inst_VOP1__V_CVT_F16_F32::Inst_VOP1__V_CVT_F16_F32
Inst_VOP1__V_CVT_F16_F32(InFmt_VOP1 *)
Definition: instructions.cc:7650
Gcn3ISA::Inst_SMEM__S_STORE_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5219
Gcn3ISA::Inst_VOPC__V_CMP_NLG_F16::Inst_VOPC__V_CMP_NLG_F16
Inst_VOPC__V_CMP_NLG_F16(InFmt_VOPC *)
Definition: instructions.cc:10099
Gcn3ISA::Inst_DS__DS_SUB_SRC2_U32::~Inst_DS__DS_SUB_SRC2_U32
~Inst_DS__DS_SUB_SRC2_U32()
Definition: instructions.cc:33738
Gcn3ISA::Inst_VOP3__V_RSQ_F32::Inst_VOP3__V_RSQ_F32
Inst_VOP3__V_RSQ_F32(InFmt_VOP3 *)
Definition: instructions.cc:26522
Gcn3ISA::Inst_VOP1__V_READFIRSTLANE_B32::Inst_VOP1__V_READFIRSTLANE_B32
Inst_VOP1__V_READFIRSTLANE_B32(InFmt_VOP1 *)
Definition: instructions.cc:7373
Gcn3ISA::Inst_VOP3__V_CVT_I32_F32::Inst_VOP3__V_CVT_I32_F32
Inst_VOP3__V_CVT_I32_F32(InFmt_VOP3 *)
Definition: instructions.cc:25473
Gcn3ISA::Inst_VOPC__V_CMP_NE_I16::~Inst_VOPC__V_CMP_NE_I16
~Inst_VOPC__V_CMP_NE_I16()
Definition: instructions.cc:12712
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34859
Gcn3ISA::Inst_VOP3__V_MUL_HI_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30385
Gcn3ISA::Inst_SMEM__S_ATC_PROBE_BUFFER::~Inst_SMEM__S_ATC_PROBE_BUFFER
~Inst_SMEM__S_ATC_PROBE_BUFFER()
Definition: instructions.cc:5430
Gcn3ISA::Inst_VOPC__V_CMP_NGE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11825
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39792
Gcn3ISA::Inst_VOPC__V_CMPX_O_F32::~Inst_VOPC__V_CMPX_O_F32
~Inst_VOPC__V_CMPX_O_F32()
Definition: instructions.cc:11237
Gcn3ISA::Inst_VOP2__V_LSHLREV_B32::~Inst_VOP2__V_LSHLREV_B32
~Inst_VOP2__V_LSHLREV_B32()
Definition: instructions.cc:6141
Gcn3ISA::Inst_DS__DS_AND_SRC2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34347
Gcn3ISA::Inst_VOP3__V_CMP_NLT_F16::~Inst_VOP3__V_CMP_NLT_F16
~Inst_VOP3__V_CMP_NLT_F16()
Definition: instructions.cc:16310
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_ADD::~Inst_FLAT__FLAT_ATOMIC_ADD
~Inst_FLAT__FLAT_ATOMIC_ADD()
Definition: instructions.cc:40650
Gcn3ISA::Inst_VOPC__V_CMPX_NEQ_F16::Inst_VOPC__V_CMPX_NEQ_F16
Inst_VOPC__V_CMPX_NEQ_F16(InFmt_VOPC *)
Definition: instructions.cc:10443
Wavefront::S_STALLED_SLEEP
@ S_STALLED_SLEEP
Definition: wavefront.hh:72
Gcn3ISA::Inst_VOPC__V_CMPX_O_F16::Inst_VOPC__V_CMPX_O_F16
Inst_VOPC__V_CMPX_O_F16(InFmt_VOPC *)
Definition: instructions.cc:10333
Gcn3ISA::Inst_SOPC__S_BITCMP1_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3568
Gcn3ISA::Inst_VOP3__V_TRUNC_F64::~Inst_VOP3__V_TRUNC_F64
~Inst_VOP3__V_TRUNC_F64()
Definition: instructions.cc:26026
Gcn3ISA::Inst_SOP1__S_BITSET1_B64::Inst_SOP1__S_BITSET1_B64
Inst_SOP1__S_BITSET1_B64(InFmt_SOP1 *)
Definition: instructions.cc:2600
Gcn3ISA::Inst_VOPC__V_CMPX_GT_F32::Inst_VOPC__V_CMPX_GT_F32
Inst_VOPC__V_CMPX_GT_F32(InFmt_VOPC *)
Definition: instructions.cc:11130
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34552
Gcn3ISA::Inst_VOP3__V_CMP_NLT_F64::Inst_VOP3__V_CMP_NLT_F64
Inst_VOP3__V_CMP_NLT_F64(InFmt_VOP3 *)
Definition: instructions.cc:18476
Gcn3ISA::Inst_DS__DS_READ_B32::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:32105
Gcn3ISA::Inst_SOP1__S_MOV_FED_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3195
Gcn3ISA::Inst_VOP3__V_CMPX_U_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16526
Gcn3ISA::Inst_VOPC__V_CMP_T_I64::Inst_VOPC__V_CMP_T_I64
Inst_VOPC__V_CMP_T_I64(InFmt_VOPC *)
Definition: instructions.cc:14704
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38955
Gcn3ISA::Inst_VOPC__V_CMPX_NGT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10420
ComputeUnit::cu_id
int cu_id
Definition: compute_unit.hh:291
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_INC_X2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41795
Gcn3ISA::Inst_VOP3__V_CMPX_LT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17235
Gcn3ISA::Inst_SOP2__S_OR_B64::~Inst_SOP2__S_OR_B64
~Inst_SOP2__S_OR_B64()
Definition: instructions.cc:509
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_ADD_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41360
Gcn3ISA::Inst_VOPC__V_CMP_GE_I32::Inst_VOPC__V_CMP_GE_I32
Inst_VOPC__V_CMP_GE_I32(InFmt_VOPC *)
Definition: instructions.cc:13705
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2::~Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2
~Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2()
Definition: instructions.cc:36839
Gcn3ISA::Inst_VOPC__V_CMPX_LE_F64::Inst_VOPC__V_CMPX_LE_F64
Inst_VOPC__V_CMPX_LE_F64(InFmt_VOPC *)
Definition: instructions.cc:12126
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX16::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5036
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_B_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38808
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35989
Gcn3ISA::Inst_VOP3__V_CMPX_NGT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17581
Gcn3ISA::Inst_DS__DS_PERMUTE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32546
Gcn3ISA::Inst_VOP3__V_CMP_F_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16052
Gcn3ISA::Inst_DS__DS_WRITE_B32::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:31274
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_DEC_X2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41901
Gcn3ISA::Inst_VOP3__V_NOT_B32::~Inst_VOP3__V_NOT_B32
~Inst_VOP3__V_NOT_B32()
Definition: instructions.cc:26820
Gcn3ISA::Inst_VOPC__V_CMPX_T_I16::Inst_VOPC__V_CMPX_T_I16
Inst_VOPC__V_CMPX_T_I16(InFmt_VOPC *)
Definition: instructions.cc:13251
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:39197
Gcn3ISA::Inst_VOP2__V_MAC_F16::Inst_VOP2__V_MAC_F16
Inst_VOP2__V_MAC_F16(InFmt_VOP2 *)
Definition: instructions.cc:6836
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:39314
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_BYTE::~Inst_MUBUF__BUFFER_STORE_BYTE
~Inst_MUBUF__BUFFER_STORE_BYTE()
Definition: instructions.cc:35734
GPUDispatcher::isReachingKernelEnd
bool isReachingKernelEnd(Wavefront *wf)
Definition: dispatcher.cc:225
Gcn3ISA::Inst_VOP1__V_LOG_F16::~Inst_VOP1__V_LOG_F16
~Inst_VOP1__V_LOG_F16()
Definition: instructions.cc:9141
Gcn3ISA::Inst_SOP2__S_ANDN2_B32::Inst_SOP2__S_ANDN2_B32
Inst_SOP2__S_ANDN2_B32(InFmt_SOP2 *)
Definition: instructions.cc:593
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:34898
Gcn3ISA::ScalarRegI16
int16_t ScalarRegI16
Definition: registers.hh:151
Gcn3ISA::Inst_VOP1__V_BFREV_B32::Inst_VOP1__V_BFREV_B32
Inst_VOP1__V_BFREV_B32(InFmt_VOP1 *)
Definition: instructions.cc:8688
Gcn3ISA::Inst_VOP1__V_NOT_B32::Inst_VOP1__V_NOT_B32
Inst_VOP1__V_NOT_B32(InFmt_VOP1 *)
Definition: instructions.cc:8658
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_SSHORT::~Inst_MUBUF__BUFFER_LOAD_SSHORT
~Inst_MUBUF__BUFFER_LOAD_SSHORT()
Definition: instructions.cc:35270
Gcn3ISA::Inst_SOP1__S_CMOV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1949
Gcn3ISA::Inst_SOP2__S_MAX_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:340
Gcn3ISA::Inst_SOPP__S_SLEEP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4198
Gcn3ISA::Inst_VOPC__V_CMP_GE_I64::~Inst_VOPC__V_CMP_GE_I64
~Inst_VOPC__V_CMP_GE_I64()
Definition: instructions.cc:14679
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38345
Gcn3ISA::Inst_VOP3__V_CVT_F32_U32::Inst_VOP3__V_CVT_F32_U32
Inst_VOP3__V_CVT_F32_U32(InFmt_VOP3 *)
Definition: instructions.cc:25381
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:23667
Gcn3ISA::Inst_VOPC__V_CMPX_F_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15226
Gcn3ISA::Inst_VOP3__V_MAD_U32_U24::Inst_VOP3__V_MAD_U32_U24
Inst_VOP3__V_MAD_U32_U24(InFmt_VOP3 *)
Definition: instructions.cc:27796
reverseBits
std::enable_if_t< std::is_integral< T >::value &&sizeof(T) !=1, T > reverseBits(T val, size_t size=sizeof(T))
Takes a value and returns the bit reversed version.
Definition: bitfield.hh:213
Gcn3ISA::Inst_VOP3__V_CUBEMA_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27904
Gcn3ISA::InFmt_MUBUF_1::VDATA
unsigned int VDATA
Definition: gpu_decoder.hh:1467
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B_O::~Inst_MIMG__IMAGE_GATHER4_B_O
~Inst_MIMG__IMAGE_GATHER4_B_O()
Definition: instructions.cc:39102
Gcn3ISA::Inst_VINTRP__V_INTERP_P2_F32::~Inst_VINTRP__V_INTERP_P2_F32
~Inst_VINTRP__V_INTERP_P2_F32()
Definition: instructions.cc:15487
Gcn3ISA::Inst_DS__DS_MIN_RTN_F64::~Inst_DS__DS_MIN_RTN_F64
~Inst_DS__DS_MIN_RTN_F64()
Definition: instructions.cc:33472
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35367
Gcn3ISA::Inst_VOP3__V_CEIL_F16::~Inst_VOP3__V_CEIL_F16
~Inst_VOP3__V_CEIL_F16()
Definition: instructions.cc:27456
Gcn3ISA::Inst_VOPC__V_CMPX_T_U16::~Inst_VOPC__V_CMPX_T_U16
~Inst_VOPC__V_CMPX_T_U16()
Definition: instructions.cc:13503
Gcn3ISA::Inst_MIMG__IMAGE_STORE_MIP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37881
Gcn3ISA::Inst_VOP3__V_BFI_B32::~Inst_VOP3__V_BFI_B32
~Inst_VOP3__V_BFI_B32()
Definition: instructions.cc:28005
Gcn3ISA::Inst_VOP3__V_FFBL_B32::Inst_VOP3__V_FFBL_B32
Inst_VOP3__V_FFBL_B32(InFmt_VOP3 *)
Definition: instructions.cc:26912
Gcn3ISA::Inst_DS__DS_GWS_SEMA_P::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34096
Gcn3ISA::Inst_FLAT::extData
InFmt_FLAT_1 extData
Definition: op_encodings.hh:831
ComputeUnit::stats
ComputeUnit::ComputeUnitStats stats
Gcn3ISA::Inst_VOP3__V_CMPX_GT_I32::~Inst_VOP3__V_CMPX_GT_I32
~Inst_VOP3__V_CMPX_GT_I32()
Definition: instructions.cc:21416
Gcn3ISA::Inst_SOP1__S_MOVRELS_B32::Inst_SOP1__S_MOVRELS_B32
Inst_SOP1__S_MOVRELS_B32(InFmt_SOP1 *)
Definition: instructions.cc:3029
Gcn3ISA::Inst_MIMG__IMAGE_STORE_PCK::Inst_MIMG__IMAGE_STORE_PCK
Inst_MIMG__IMAGE_STORE_PCK(InFmt_MIMG *)
Definition: instructions.cc:37896
Gcn3ISA::Inst_VOP3__V_QSAD_PK_U16_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29464
Gcn3ISA::Inst_DS__DS_BPERMUTE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32618
Gcn3ISA::Inst_SOP1__S_GETPC_B64::Inst_SOP1__S_GETPC_B64
Inst_SOP1__S_GETPC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2624
Gcn3ISA::Inst_DS__DS_READ2ST64_B32::~Inst_DS__DS_READ2ST64_B32
~Inst_DS__DS_READ2ST64_B32()
Definition: instructions.cc:32191
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_F32::Inst_VOPC__V_CMPX_EQ_F32
Inst_VOPC__V_CMPX_EQ_F32(InFmt_VOPC *)
Definition: instructions.cc:11064
Gcn3ISA::Inst_VOP3__V_LSHLREV_B32::~Inst_VOP3__V_LSHLREV_B32
~Inst_VOP3__V_LSHLREV_B32()
Definition: instructions.cc:24066
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORD::Inst_MUBUF__BUFFER_LOAD_DWORD
Inst_MUBUF__BUFFER_LOAD_DWORD(InFmt_MUBUF *)
Definition: instructions.cc:35292
Gcn3ISA::Inst_SOP2__S_NAND_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:726
Gcn3ISA::Inst_VOP3__V_CMPX_GT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18770
Gcn3ISA::Inst_VOPC__V_CMP_LT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9950
Gcn3ISA::Inst_VOP2__V_LDEXP_F16::Inst_VOP2__V_LDEXP_F16
Inst_VOP2__V_LDEXP_F16(InFmt_VOP2 *)
Definition: instructions.cc:7278
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:37818
Gcn3ISA::Inst_VOP3__V_READLANE_B32::Inst_VOP3__V_READLANE_B32
Inst_VOP3__V_READLANE_B32(InFmt_VOP3 *)
Definition: instructions.cc:30501
Gcn3ISA::Inst_VOPC__V_CMPX_NLT_F64::Inst_VOPC__V_CMPX_NLT_F64
Inst_VOPC__V_CMPX_NLT_F64(InFmt_VOPC *)
Definition: instructions.cc:12495
Gcn3ISA::Inst_SOPC__S_CMP_LG_U64::~Inst_SOPC__S_CMP_LG_U64
~Inst_SOPC__S_CMP_LG_U64()
Definition: instructions.cc:3710
Gcn3ISA::Inst_VOP2__V_OR_B32::~Inst_VOP2__V_OR_B32
~Inst_VOP2__V_OR_B32()
Definition: instructions.cc:6245
Gcn3ISA::Inst_DS__DS_MAX_SRC2_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34000
Gcn3ISA::Inst_VOP2__V_SUBREV_U16::~Inst_VOP2__V_SUBREV_U16
~Inst_VOP2__V_SUBREV_U16()
Definition: instructions.cc:6967
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:39112
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_X::Inst_MTBUF__TBUFFER_STORE_FORMAT_X
Inst_MTBUF__TBUFFER_STORE_FORMAT_X(InFmt_MTBUF *)
Definition: instructions.cc:37274
Gcn3ISA::Inst_VOP3__V_RCP_IFLAG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26497
Gcn3ISA::Inst_VOP3__V_CMP_EQ_U16::Inst_VOP3__V_CMP_EQ_U16
Inst_VOP3__V_CMP_EQ_U16(InFmt_VOP3 *)
Definition: instructions.cc:19779
ComputeUnit::registerManager
RegisterManager * registerManager
Definition: compute_unit.hh:277
Gcn3ISA::Inst_VOP3__V_MAC_F16::~Inst_VOP3__V_MAC_F16
~Inst_VOP3__V_MAC_F16()
Definition: instructions.cc:24656
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:27109
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX8::~Inst_SMEM__S_BUFFER_LOAD_DWORDX8
~Inst_SMEM__S_BUFFER_LOAD_DWORDX8()
Definition: instructions.cc:4933
Gcn3ISA::Inst_VOPC__V_CMPX_T_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13509
Gcn3ISA::Inst_VOP1__V_CVT_U32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7557
Gcn3ISA::Inst_VOPC__V_CMPX_GE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11210
Gcn3ISA::Inst_FLAT__FLAT_LOAD_SSHORT::Inst_FLAT__FLAT_LOAD_SSHORT
Inst_FLAT__FLAT_LOAD_SSHORT(InFmt_FLAT *)
Definition: instructions.cc:39632
Gcn3ISA::VecElemI8
int8_t VecElemI8
Definition: registers.hh:161
Gcn3ISA::Inst_VOP3__V_FMA_F64::~Inst_VOP3__V_FMA_F64
~Inst_VOP3__V_FMA_F64()
Definition: instructions.cc:28110
Gcn3ISA::Inst_VOP3__V_MQSAD_U32_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29501
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_DEC::Inst_FLAT__FLAT_ATOMIC_DEC
Inst_FLAT__FLAT_ATOMIC_DEC(InFmt_FLAT *)
Definition: instructions.cc:41103
Gcn3ISA::Inst_VOP1__V_CVT_F64_U32::~Inst_VOP1__V_CVT_F64_U32
~Inst_VOP1__V_CVT_F64_U32()
Definition: instructions.cc:7999
Gcn3ISA::Inst_DS__DS_READ_I8::~Inst_DS__DS_READ_I8
~Inst_DS__DS_READ_I8()
Definition: instructions.cc:32257
Gcn3ISA::Inst_SOPP__S_CBRANCH_CDBGUSER::~Inst_SOPP__S_CBRANCH_CDBGUSER
~Inst_SOPP__S_CBRANCH_CDBGUSER()
Definition: instructions.cc:4355
Gcn3ISA::Inst_VOP3__V_CMP_T_U32::Inst_VOP3__V_CMP_T_U32
Inst_VOP3__V_CMP_T_U32(InFmt_VOP3 *)
Definition: instructions.cc:21226
Gcn3ISA::InFmt_VOP_SDWA::SRC1_ABS
unsigned int SRC1_ABS
Definition: gpu_decoder.hh:1606
Gcn3ISA::InFmt_DS::OFFSET0
unsigned int OFFSET0
Definition: gpu_decoder.hh:1355
Gcn3ISA::Inst_VOP3__V_CMPX_LE_F64::~Inst_VOP3__V_CMPX_LE_F64
~Inst_VOP3__V_CMPX_LE_F64()
Definition: instructions.cc:18708
Gcn3ISA::Inst_SOP1__S_NOR_SAVEEXEC_B64::Inst_SOP1__S_NOR_SAVEEXEC_B64
Inst_SOP1__S_NOR_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2907
Wavefront::pc
Addr pc() const
Definition: wavefront.cc:1365
Gcn3ISA::Inst_VOPC__V_CMP_NEQ_F32::~Inst_VOPC__V_CMP_NEQ_F32
~Inst_VOPC__V_CMP_NEQ_F32()
Definition: instructions.cc:10919
Gcn3ISA::Inst_DS__DS_XOR_SRC2_B32::~Inst_DS__DS_XOR_SRC2_B32
~Inst_DS__DS_XOR_SRC2_B32()
Definition: instructions.cc:33929
Gcn3ISA::Inst_VOPC__V_CMP_CLASS_F16::~Inst_VOPC__V_CMP_CLASS_F16
~Inst_VOPC__V_CMP_CLASS_F16()
Definition: instructions.cc:9865
Gcn3ISA::Inst_SOPC__S_CMP_EQ_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3386
Gcn3ISA::Inst_VOPC__V_CMPX_NE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15135
Gcn3ISA::Inst_VOP3__V_SUB_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23239
Gcn3ISA::Inst_VOP1__V_FRACT_F16::Inst_VOP1__V_FRACT_F16
Inst_VOP1__V_FRACT_F16(InFmt_VOP1 *)
Definition: instructions.cc:9292
Gcn3ISA::Inst_VOP3__V_CMP_NLT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18490
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_PCK::~Inst_MIMG__IMAGE_LOAD_PCK
~Inst_MIMG__IMAGE_LOAD_PCK()
Definition: instructions.cc:37729
Gcn3ISA::Inst_VOP3__V_MIN_I16::Inst_VOP3__V_MIN_I16
Inst_VOP3__V_MIN_I16(InFmt_VOP3 *)
Definition: instructions.cc:25139
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39786
Gcn3ISA::Inst_VOP3__V_CMP_LE_F64::Inst_VOP3__V_CMP_LE_F64
Inst_VOP3__V_CMP_LE_F64(InFmt_VOP3 *)
Definition: instructions.cc:17869
Gcn3ISA::Inst_VOP3__V_MUL_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24643
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XY::Inst_MUBUF__BUFFER_STORE_FORMAT_XY
Inst_MUBUF__BUFFER_STORE_FORMAT_XY(InFmt_MUBUF *)
Definition: instructions.cc:34677
Gcn3ISA::Inst_VOPC__V_CMP_O_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10730
Gcn3ISA::Inst_VOP3__V_CMP_LE_F32::~Inst_VOP3__V_CMP_LE_F32
~Inst_VOP3__V_CMP_LE_F32()
Definition: instructions.cc:16775
Gcn3ISA::Inst_DS__DS_SUB_U32::~Inst_DS__DS_SUB_U32
~Inst_DS__DS_SUB_U32()
Definition: instructions.cc:31016
Gcn3ISA::Inst_VOP1__V_RNDNE_F16::~Inst_VOP1__V_RNDNE_F16
~Inst_VOP1__V_RNDNE_F16()
Definition: instructions.cc:9281
Gcn3ISA::Inst_DS__DS_MAX_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32796
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_XOR::~Inst_FLAT__FLAT_ATOMIC_XOR
~Inst_FLAT__FLAT_ATOMIC_XOR()
Definition: instructions.cc:40993
Gcn3ISA::Inst_VOP3__V_CMPX_LE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21379
Gcn3ISA::Inst_VOP3__V_CMP_EQ_U16::~Inst_VOP3__V_CMP_EQ_U16
~Inst_VOP3__V_CMP_EQ_U16()
Definition: instructions.cc:19786
Gcn3ISA::Inst_VOPC__V_CMP_U_F32::Inst_VOPC__V_CMP_U_F32
Inst_VOPC__V_CMP_U_F32(InFmt_VOPC *)
Definition: instructions.cc:10750
Gcn3ISA::Inst_VOP3__V_MIN3_I32::Inst_VOP3__V_MIN3_I32
Inst_VOP3__V_MIN3_I32(InFmt_VOP3 *)
Definition: instructions.cc:28369
Gcn3ISA::Inst_MIMG__IMAGE_LOAD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37678
Gcn3ISA::Inst_VOPC__V_CMPX_LE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10274
Gcn3ISA::Inst_VOP1__V_NOP::~Inst_VOP1__V_NOP
~Inst_VOP1__V_NOP()
Definition: instructions.cc:7303
Gcn3ISA::Inst_VOPC__V_CMP_NE_U32::~Inst_VOPC__V_CMP_NE_U32
~Inst_VOPC__V_CMP_NE_U32()
Definition: instructions.cc:13918
Gcn3ISA::Inst_DS__DS_OR_B64::Inst_DS__DS_OR_B64
Inst_DS__DS_OR_B64(InFmt_DS *)
Definition: instructions.cc:32855
Gcn3ISA::Inst_VOP3__V_MAD_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27706
Gcn3ISA::Inst_DS__DS_DEC_RTN_U32::Inst_DS__DS_DEC_RTN_U32
Inst_DS__DS_DEC_RTN_U32(InFmt_DS *)
Definition: instructions.cc:31726
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:27413
Gcn3ISA::Inst_VOP3__V_SAD_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28910
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36819
Gcn3ISA::Inst_SOPP__S_SETHALT::Inst_SOPP__S_SETHALT
Inst_SOPP__S_SETHALT(InFmt_SOPP *)
Definition: instructions.cc:4170
Gcn3ISA::Inst_VOP3__V_CMPX_O_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17441
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_L_O::Inst_MIMG__IMAGE_SAMPLE_L_O
Inst_MIMG__IMAGE_SAMPLE_L_O(InFmt_MIMG *)
Definition: instructions.cc:38646
Gcn3ISA::Inst_VOP2__V_MAX_U16::Inst_VOP2__V_MAX_U16
Inst_VOP2__V_MAX_U16(InFmt_VOP2 *)
Definition: instructions.cc:7154
Gcn3ISA::Inst_DS__DS_MAX_RTN_U32::~Inst_DS__DS_MAX_RTN_U32
~Inst_DS__DS_MAX_RTN_U32()
Definition: instructions.cc:31803
Gcn3ISA::Inst_MIMG__IMAGE_GET_RESINFO::Inst_MIMG__IMAGE_GET_RESINFO
Inst_MIMG__IMAGE_GET_RESINFO(InFmt_MIMG *)
Definition: instructions.cc:37955
Gcn3ISA::Inst_DS__DS_CMPST_F64::Inst_DS__DS_CMPST_F64
Inst_DS__DS_CMPST_F64(InFmt_DS *)
Definition: instructions.cc:33074
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX3::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:36207
Gcn3ISA::Inst_DS__DS_RSUB_SRC2_U64::~Inst_DS__DS_RSUB_SRC2_U64
~Inst_DS__DS_RSUB_SRC2_U64()
Definition: instructions.cc:34204
Gcn3ISA::Inst_SOPP__S_CBRANCH_SCC1::Inst_SOPP__S_CBRANCH_SCC1
Inst_SOPP__S_CBRANCH_SCC1(InFmt_SOPP *)
Definition: instructions.cc:3955
Gcn3ISA::Inst_VOPC__V_CMP_CLASS_F64::~Inst_VOPC__V_CMP_CLASS_F64
~Inst_VOPC__V_CMP_CLASS_F64()
Definition: instructions.cc:9638
Gcn3ISA::Inst_VOP3__V_SUBREV_U16::~Inst_VOP3__V_SUBREV_U16
~Inst_VOP3__V_SUBREV_U16()
Definition: instructions.cc:24755
Gcn3ISA::Inst_VOPC__V_CMP_GT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10004
Gcn3ISA::Inst_VOP1__V_CVT_U16_F16::~Inst_VOP1__V_CVT_U16_F16
~Inst_VOP1__V_CVT_U16_F16()
Definition: instructions.cc:9042
Gcn3ISA::Inst_SOPC__S_SET_GPR_IDX_ON::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3673
Gcn3ISA::Inst_VOP3__V_MUL_U32_U24::~Inst_VOP3__V_MUL_U32_U24
~Inst_VOP3__V_MUL_U32_U24()
Definition: instructions.cc:23626
Gcn3ISA::Inst_SOPC__S_CMP_LG_I32::~Inst_SOPC__S_CMP_LG_I32
~Inst_SOPC__S_CMP_LG_I32()
Definition: instructions.cc:3250
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37646
Gcn3ISA::Inst_SOP1__S_MOVRELD_B32::Inst_SOP1__S_MOVRELD_B32
Inst_SOP1__S_MOVRELD_B32(InFmt_SOP1 *)
Definition: instructions.cc:3082
Gcn3ISA::Inst_VOP3__V_CMPX_NE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21465
Gcn3ISA::Inst_VOPC__V_CMPX_NLE_F16::Inst_VOPC__V_CMPX_NLE_F16
Inst_VOPC__V_CMPX_NLE_F16(InFmt_VOPC *)
Definition: instructions.cc:10425
Gcn3ISA::Inst_VOP3__V_CMPX_LT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22843
Gcn3ISA::Inst_VOP3__V_CEIL_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27462
Gcn3ISA::Inst_VOP1__V_MOV_FED_B32::~Inst_VOP1__V_MOV_FED_B32
~Inst_VOP1__V_MOV_FED_B32()
Definition: instructions.cc:7638
Gcn3ISA::Inst_VOPC__V_CMP_NGT_F32::~Inst_VOPC__V_CMP_NGT_F32
~Inst_VOPC__V_CMP_NGT_F32()
Definition: instructions.cc:10855
Gcn3ISA::Inst_SOP2__S_ADD_U32::~Inst_SOP2__S_ADD_U32
~Inst_SOP2__S_ADD_U32()
Definition: instructions.cc:52
Gcn3ISA::Inst_MUBUF__BUFFER_WBINVL1::Inst_MUBUF__BUFFER_WBINVL1
Inst_MUBUF__BUFFER_WBINVL1(InFmt_MUBUF *)
Definition: instructions.cc:36337
Gcn3ISA::Inst_VOP3__V_CMPX_NGT_F32::Inst_VOP3__V_CMPX_NGT_F32
Inst_VOP3__V_CMPX_NGT_F32(InFmt_VOP3 *)
Definition: instructions.cc:17567
Gcn3ISA::Inst_VOP1__V_TRUNC_F16::~Inst_VOP1__V_TRUNC_F16
~Inst_VOP1__V_TRUNC_F16()
Definition: instructions.cc:9263
Gcn3ISA::Inst_VOP3__V_CVT_F32_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25354
Gcn3ISA::Inst_VOP3__V_CMP_EQ_F32::~Inst_VOP3__V_CMP_EQ_F32
~Inst_VOP3__V_CMP_EQ_F32()
Definition: instructions.cc:16742
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_ADD_X2::~Inst_MUBUF__BUFFER_ATOMIC_ADD_X2
~Inst_MUBUF__BUFFER_ATOMIC_ADD_X2()
Definition: instructions.cc:36868
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37329
Gcn3ISA::Inst_VOP3__V_TRUNC_F32::~Inst_VOP3__V_TRUNC_F32
~Inst_VOP3__V_TRUNC_F32()
Definition: instructions.cc:26217
Gcn3ISA::Inst_VOP3__V_CMP_LG_F64::Inst_VOP3__V_CMP_LG_F64
Inst_VOP3__V_CMP_LG_F64(InFmt_VOP3 *)
Definition: instructions.cc:17979
Gcn3ISA::InFmt_VOP_DPP::SRC0_ABS
unsigned int SRC0_ABS
Definition: gpu_decoder.hh:1585
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX16::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:4742
Gcn3ISA::Inst_SOPK__S_MOVK_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1368
Gcn3ISA::Inst_DS__DS_WRITE_B8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31547
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37208
Gcn3ISA::Inst_VOP3__V_TRUNC_F16::~Inst_VOP3__V_TRUNC_F16
~Inst_VOP3__V_TRUNC_F16()
Definition: instructions.cc:27474
Gcn3ISA::Inst_VOP3__V_DIV_FIXUP_F32::Inst_VOP3__V_DIV_FIXUP_F32
Inst_VOP3__V_DIV_FIXUP_F32(InFmt_VOP3 *)
Definition: instructions.cc:28997
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20099
Gcn3ISA::Inst_DS__DS_MIN_RTN_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33240
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SUB::~Inst_FLAT__FLAT_ATOMIC_SUB
~Inst_FLAT__FLAT_ATOMIC_SUB()
Definition: instructions.cc:40747
Gcn3ISA::Inst_VOP3__V_CMPX_LE_U32::~Inst_VOP3__V_CMPX_LE_U32
~Inst_VOP3__V_CMPX_LE_U32()
Definition: instructions.cc:21687
Gcn3ISA::Inst_DS__DS_GWS_SEMA_V::~Inst_DS__DS_GWS_SEMA_V
~Inst_DS__DS_GWS_SEMA_V()
Definition: instructions.cc:34061
Gcn3ISA::Inst_VOP3__V_CMP_GE_I64::Inst_VOP3__V_CMP_GE_I64
Inst_VOP3__V_CMP_GE_I64(InFmt_VOP3 *)
Definition: instructions.cc:22116
Gcn3ISA::Inst_VOPC__V_CMP_O_F64::~Inst_VOPC__V_CMP_O_F64
~Inst_VOPC__V_CMP_O_F64()
Definition: instructions.cc:11753
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE0::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25788
Gcn3ISA::Inst_SOP1__S_BCNT1_I32_B32::~Inst_SOP1__S_BCNT1_I32_B32
~Inst_SOP1__S_BCNT1_I32_B32()
Definition: instructions.cc:2218
Gcn3ISA::Inst_VOP3__V_MED3_I32::Inst_VOP3__V_MED3_I32
Inst_VOP3__V_MED3_I32(InFmt_VOP3 *)
Definition: instructions.cc:28662
Wavefront::scalarWrGmReqsInPipe
int scalarWrGmReqsInPipe
Definition: wavefront.hh:187
Gcn3ISA::Inst_VOP3__V_CMPX_NE_U16::~Inst_VOP3__V_CMPX_NE_U16
~Inst_VOP3__V_CMPX_NE_U16()
Definition: instructions.cc:20536
Gcn3ISA::Inst_DS__DS_MIN_SRC2_I64::~Inst_DS__DS_MIN_SRC2_I64
~Inst_DS__DS_MIN_SRC2_I64()
Definition: instructions.cc:34262
Gcn3ISA::Inst_VOP3__V_CMP_GE_F16::Inst_VOP3__V_CMP_GE_F16
Inst_VOP3__V_CMP_GE_F16(InFmt_VOP3 *)
Definition: instructions.cc:16152
Gcn3ISA::Inst_DS__DS_READ2_B64::Inst_DS__DS_READ2_B64
Inst_DS__DS_READ2_B64(InFmt_DS *)
Definition: instructions.cc:33567
Gcn3ISA::REG_VCC_LO
@ REG_VCC_LO
Definition: registers.hh:55
Gcn3ISA::Inst_VOP3__V_ALIGNBIT_B32::Inst_VOP3__V_ALIGNBIT_B32
Inst_VOP3__V_ALIGNBIT_B32(InFmt_VOP3 *)
Definition: instructions.cc:28217
Gcn3ISA::Inst_VOP3__V_WRITELANE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30556
Gcn3ISA::Inst_VOP3__V_MIN_I32::Inst_VOP3__V_MIN_I32
Inst_VOP3__V_MIN_I32(InFmt_VOP3 *)
Definition: instructions.cc:23812
Gcn3ISA::Inst_VOPC__V_CMPX_GT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11143
Gcn3ISA::Inst_VOP3__V_MAD_U32_U24::~Inst_VOP3__V_MAD_U32_U24
~Inst_VOP3__V_MAD_U32_U24()
Definition: instructions.cc:27803
Gcn3ISA::Inst_VOP1__V_CVT_RPI_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7700
Gcn3ISA::Inst_VOPC__V_CMP_LE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13862
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:29476
Gcn3ISA::Inst_VOP3__V_CMP_CLASS_F16::~Inst_VOP3__V_CMP_CLASS_F16
~Inst_VOP3__V_CMP_CLASS_F16()
Definition: instructions.cc:15984
Gcn3ISA::Inst_VOPC__V_CMPX_NGE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10384
Gcn3ISA::Inst_VOP3__V_CMP_GE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22433
Gcn3ISA::Inst_DS__DS_MIN_SRC2_U32::~Inst_DS__DS_MIN_SRC2_U32
~Inst_DS__DS_MIN_SRC2_U32()
Definition: instructions.cc:33853
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:3659
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_PCK_SGN::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37775
Gcn3ISA::Inst_VOPC__V_CMP_TRU_F64::Inst_VOPC__V_CMP_TRU_F64
Inst_VOPC__V_CMP_TRU_F64(InFmt_VOPC *)
Definition: instructions.cc:12005
Gcn3ISA::Inst_VOP3__V_CMPX_GE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20585
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:8816
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:34025
Gcn3ISA::firstOppositeSignBit
ScalarRegI32 firstOppositeSignBit(ScalarRegI32 val)
Definition: inst_util.hh:172
Gcn3ISA::Inst_VOPC__V_CMPX_T_U64::Inst_VOPC__V_CMPX_T_U64
Inst_VOPC__V_CMPX_T_U64(InFmt_VOPC *)
Definition: instructions.cc:15433
Gcn3ISA::Inst_SOP1__S_FLBIT_I32_B64::~Inst_SOP1__S_FLBIT_I32_B64
~Inst_SOP1__S_FLBIT_I32_B64()
Definition: instructions.cc:2404
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX3::Inst_FLAT__FLAT_STORE_DWORDX3
Inst_FLAT__FLAT_STORE_DWORDX3(InFmt_FLAT *)
Definition: instructions.cc:40255
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37659
Gcn3ISA::Inst_DS__DS_READ2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32134
Gcn3ISA::Inst_VOP3__V_CMP_NE_U32::~Inst_VOP3__V_CMP_NE_U32
~Inst_VOP3__V_CMP_NE_U32()
Definition: instructions.cc:21149
Gcn3ISA::Inst_SOP2__S_BFE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1239
Gcn3ISA::Inst_VOP1__V_FLOOR_F64::Inst_VOP1__V_FLOOR_F64
Inst_VOP1__V_FLOOR_F64(InFmt_VOP1 *)
Definition: instructions.cc:8112
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:7694
Gcn3ISA::Inst_VOP1__V_FREXP_EXP_I16_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9215
Gcn3ISA::Inst_VOP2__V_MADAK_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6455
Gcn3ISA::Inst_VOP3__V_FLOOR_F16::~Inst_VOP3__V_FLOOR_F16
~Inst_VOP3__V_FLOOR_F16()
Definition: instructions.cc:27438
Gcn3ISA::Inst_SOPK__S_CMPK_EQ_I32::~Inst_SOPK__S_CMPK_EQ_I32
~Inst_SOPK__S_CMPK_EQ_I32()
Definition: instructions.cc:1412
Gcn3ISA::Inst_VOP3__V_CMPX_GT_I64::Inst_VOP3__V_CMPX_GT_I64
Inst_VOP3__V_CMPX_GT_I64(InFmt_VOP3 *)
Definition: instructions.cc:22645
Gcn3ISA::Inst_DS__DS_READ_B32::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:32095
Gcn3ISA::Inst_VOP3__V_MIN_F32::Inst_VOP3__V_MIN_F32
Inst_VOP3__V_MIN_F32(InFmt_VOP3 *)
Definition: instructions.cc:23704
Gcn3ISA::Inst_SOPC__S_CMP_GT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3282
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_UBYTE::~Inst_MUBUF__BUFFER_LOAD_UBYTE
~Inst_MUBUF__BUFFER_LOAD_UBYTE()
Definition: instructions.cc:35042
Gcn3ISA::Inst_DS__DS_MAX_SRC2_F32::~Inst_DS__DS_MAX_SRC2_F32
~Inst_DS__DS_MAX_SRC2_F32()
Definition: instructions.cc:33991
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37413
Gcn3ISA::Inst_VOP3__V_CMP_NLT_F64::~Inst_VOP3__V_CMP_NLT_F64
~Inst_VOP3__V_CMP_NLT_F64()
Definition: instructions.cc:18484
Gcn3ISA::Inst_VOP3__V_CMP_LT_F32::Inst_VOP3__V_CMP_LT_F32
Inst_VOP3__V_CMP_LT_F32(InFmt_VOP3 *)
Definition: instructions.cc:16701
Gcn3ISA::Inst_DS__DS_MAX_SRC2_I64::Inst_DS__DS_MAX_SRC2_I64
Inst_DS__DS_MAX_SRC2_I64(InFmt_DS *)
Definition: instructions.cc:34276
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_AND::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36684
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORD::Inst_FLAT__FLAT_LOAD_DWORD
Inst_FLAT__FLAT_LOAD_DWORD(InFmt_FLAT *)
Definition: instructions.cc:39660
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:30959
Gcn3ISA::Inst_VOP3__V_MAD_U16::~Inst_VOP3__V_MAD_U16
~Inst_VOP3__V_MAD_U16()
Definition: instructions.cc:29626
Gcn3ISA::Inst_VOPC__V_CMPX_NLT_F16::Inst_VOPC__V_CMPX_NLT_F16
Inst_VOPC__V_CMPX_NLT_F16(InFmt_VOPC *)
Definition: instructions.cc:10461
Gcn3ISA::Inst_VOP1__V_EXP_F16::~Inst_VOP1__V_EXP_F16
~Inst_VOP1__V_EXP_F16()
Definition: instructions.cc:9162
Gcn3ISA::InFmt_VOP_DPP::SRC1_ABS
unsigned int SRC1_ABS
Definition: gpu_decoder.hh:1587
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:37474
Gcn3ISA::Inst_SOP1__S_SEXT_I32_I16::Inst_SOP1__S_SEXT_I32_I16
Inst_SOP1__S_SEXT_I32_I16(InFmt_SOP1 *)
Definition: instructions.cc:2503
Gcn3ISA::Inst_VOP3__V_SUBREV_F16::~Inst_VOP3__V_SUBREV_F16
~Inst_VOP3__V_SUBREV_F16()
Definition: instructions.cc:24619
Gcn3ISA::Inst_VOP3__V_AND_B32::Inst_VOP3__V_AND_B32
Inst_VOP3__V_AND_B32(InFmt_VOP3 *)
Definition: instructions.cc:24101
Gcn3ISA::Inst_VOP3__V_FREXP_MANT_F64::~Inst_VOP3__V_FREXP_MANT_F64
~Inst_VOP3__V_FREXP_MANT_F64()
Definition: instructions.cc:27040
Gcn3ISA::Inst_VOP3__V_CMP_F_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17745
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37299
Gcn3ISA::Inst_DS__DS_WRITE2_B64::~Inst_DS__DS_WRITE2_B64
~Inst_DS__DS_WRITE2_B64()
Definition: instructions.cc:32976
Gcn3ISA::Inst_DS__DS_MAX_SRC2_I64::~Inst_DS__DS_MAX_SRC2_I64
~Inst_DS__DS_MAX_SRC2_I64()
Definition: instructions.cc:34281
Gcn3ISA::Inst_VOPC__V_CMPX_GE_U16::~Inst_VOPC__V_CMPX_GE_U16
~Inst_VOPC__V_CMPX_GE_U16()
Definition: instructions.cc:13471
Gcn3ISA::Inst_VOP3__V_MUL_I32_I24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23544
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37446
Gcn3ISA::Inst_VOP3_SDST_ENC
Definition: op_encodings.hh:387
Gcn3ISA::Inst_SOPK__S_CMPK_GE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1493
Gcn3ISA::Inst_DS__DS_CMPST_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33069
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_L_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39192
Gcn3ISA::InFmt_SOP2::SSRC1
unsigned int SSRC1
Definition: gpu_decoder.hh:1497
Gcn3ISA::Inst_VOP1__V_FRACT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8890
Gcn3ISA::Inst_FLAT__FLAT_LOAD_SBYTE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39546
Gcn3ISA::Inst_VOPC__V_CMP_NGE_F16::~Inst_VOPC__V_CMP_NGE_F16
~Inst_VOPC__V_CMP_NGE_F16()
Definition: instructions.cc:10088
Gcn3ISA::Inst_DS__DS_DEC_RTN_U64::Inst_DS__DS_DEC_RTN_U64
Inst_DS__DS_DEC_RTN_U64(InFmt_DS *)
Definition: instructions.cc:33208
Gcn3ISA::Inst_VOP3__V_CMPX_GE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22744
Gcn3ISA::Inst_VOPC__V_CMP_LE_F16::~Inst_VOPC__V_CMP_LE_F16
~Inst_VOPC__V_CMP_LE_F16()
Definition: instructions.cc:9980
Gcn3ISA::Inst_DS__DS_BPERMUTE_B32::~Inst_DS__DS_BPERMUTE_B32
~Inst_DS__DS_BPERMUTE_B32()
Definition: instructions.cc:32612
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:29843
Gcn3ISA::Inst_VOP3__V_CEIL_F32::~Inst_VOP3__V_CEIL_F32
~Inst_VOP3__V_CEIL_F32()
Definition: instructions.cc:26255
Gcn3ISA::Inst_SOPC__S_CMP_GE_U32::Inst_SOPC__S_CMP_GE_U32
Inst_SOPC__S_CMP_GE_U32(InFmt_SOPC *)
Definition: instructions.cc:3452
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38410
Gcn3ISA::Inst_DS__DS_INC_RTN_U64::~Inst_DS__DS_INC_RTN_U64
~Inst_DS__DS_INC_RTN_U64()
Definition: instructions.cc:33195
Gcn3ISA::Inst_SOP1__S_RFE_B64::~Inst_SOP1__S_RFE_B64
~Inst_SOP1__S_RFE_B64()
Definition: instructions.cc:2704
Gcn3ISA::Inst_SMEM__S_ATC_PROBE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5419
Gcn3ISA::roundNearestEven
T roundNearestEven(T val)
Definition: inst_util.hh:257
Gcn3ISA::Inst_SMEM__S_DCACHE_WB::~Inst_SMEM__S_DCACHE_WB
~Inst_SMEM__S_DCACHE_WB()
Definition: instructions.cc:5334
Gcn3ISA::Inst_VOP3__V_XOR_B32::Inst_VOP3__V_XOR_B32
Inst_VOP3__V_XOR_B32(InFmt_VOP3 *)
Definition: instructions.cc:24185
Gcn3ISA::Inst_VOP3__V_CMP_F_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22196
Gcn3ISA::Inst_VOP3__V_CMP_T_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20934
Gcn3ISA::Inst_VOP3__V_NOP::~Inst_VOP3__V_NOP
~Inst_VOP3__V_NOP()
Definition: instructions.cc:25211
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14071
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW::~Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW
~Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW()
Definition: instructions.cc:34746
Gcn3ISA::Inst_VOP2__V_SUBREV_F16::Inst_VOP2__V_SUBREV_F16
Inst_VOP2__V_SUBREV_F16(InFmt_VOP2 *)
Definition: instructions.cc:6800
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34913
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORD::~Inst_FLAT__FLAT_STORE_DWORD
~Inst_FLAT__FLAT_STORE_DWORD()
Definition: instructions.cc:40121
Gcn3ISA::Inst_VOP3__V_MAX3_F32::Inst_VOP3__V_MAX3_F32
Inst_VOP3__V_MAX3_F32(InFmt_VOP3 *)
Definition: instructions.cc:28457
Gcn3ISA::Inst_VOPC__V_CMP_LE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11630
Gcn3ISA::Inst_SOP1__S_BCNT0_I32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2169
Gcn3ISA::Inst_DS__DS_DEC_SRC2_U32::~Inst_DS__DS_DEC_SRC2_U32
~Inst_DS__DS_DEC_SRC2_U32()
Definition: instructions.cc:33795
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX2::Inst_SMEM__S_BUFFER_LOAD_DWORDX2
Inst_SMEM__S_BUFFER_LOAD_DWORDX2(InFmt_SMEM *)
Definition: instructions.cc:4807
Gcn3ISA::InFmt_SOPC::SSRC1
unsigned int SSRC1
Definition: gpu_decoder.hh:1505
Gcn3ISA::Inst_SOPP__S_DECPERFLEVEL::~Inst_SOPP__S_DECPERFLEVEL
~Inst_SOPP__S_DECPERFLEVEL()
Definition: instructions.cc:4306
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34758
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_AND::~Inst_MUBUF__BUFFER_ATOMIC_AND
~Inst_MUBUF__BUFFER_ATOMIC_AND()
Definition: instructions.cc:36676
Gcn3ISA::Inst_VOP3__V_EXP_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26375
Gcn3ISA::Inst_VOP2__V_MAX_U32::Inst_VOP2__V_MAX_U32
Inst_VOP2__V_MAX_U32(InFmt_VOP2 *)
Definition: instructions.cc:6040
Gcn3ISA::Inst_SOP1__S_BREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2120
Gcn3ISA::Inst_DS__DS_SUB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31024
Gcn3ISA::Inst_DS__DS_WRITE_B16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31607
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_U32::Inst_VOPC__V_CMPX_EQ_U32
Inst_VOPC__V_CMPX_EQ_U32(InFmt_VOPC *)
Definition: instructions.cc:14305
Gcn3ISA::Inst_SOPP__S_ICACHE_INV::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4281
Gcn3ISA::Inst_VOP3__V_MAX_U32::Inst_VOP3__V_MAX_U32
Inst_VOP3__V_MAX_U32(InFmt_VOP3 *)
Definition: instructions.cc:23935
Gcn3ISA::VecElemU32
uint32_t VecElemU32
Definition: registers.hh:164
Gcn3ISA::Inst_VOP3__V_CMPX_NE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20228
Gcn3ISA::Inst_DS__DS_MAX_SRC2_I32::Inst_DS__DS_MAX_SRC2_I32
Inst_DS__DS_MAX_SRC2_I32(InFmt_DS *)
Definition: instructions.cc:33829
Gcn3ISA::Inst_VOP3__V_CMP_T_I32::Inst_VOP3__V_CMP_T_I32
Inst_VOP3__V_CMP_T_I32(InFmt_VOP3 *)
Definition: instructions.cc:20922
Gcn3ISA::Inst_VOP3__V_CVT_PK_U16_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30971
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:4391
Gcn3ISA::Inst_VOP3__V_MOV_FED_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25546
Gcn3ISA::Inst_VOPC__V_CMPX_LT_U16::Inst_VOPC__V_CMPX_LT_U16
Inst_VOPC__V_CMPX_LT_U16(InFmt_VOPC *)
Definition: instructions.cc:13305
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_XOR_X2::~Inst_FLAT__FLAT_ATOMIC_XOR_X2
~Inst_FLAT__FLAT_ATOMIC_XOR_X2()
Definition: instructions.cc:41706
Gcn3ISA::Inst_DS__DS_WRITE_B96::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34466
Gcn3ISA::Inst_VOP3__V_CMPX_CLASS_F64::Inst_VOP3__V_CMPX_CLASS_F64
Inst_VOP3__V_CMPX_CLASS_F64(InFmt_VOP3 *)
Definition: instructions.cc:15860
Gcn3ISA::Inst_VOP3__V_CMPX_LE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21693
Gcn3ISA::Inst_DS__DS_WRXCHG2ST64_RTN_B64::~Inst_DS__DS_WRXCHG2ST64_RTN_B64
~Inst_DS__DS_WRXCHG2ST64_RTN_B64()
Definition: instructions.cc:33413
Gcn3ISA::Inst_VOP3__V_CMP_LT_F32::~Inst_VOP3__V_CMP_LT_F32
~Inst_VOP3__V_CMP_LT_F32()
Definition: instructions.cc:16709
Gcn3ISA::Inst_DS__DS_READ2ST64_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32199
Gcn3ISA::findFirstOne
ScalarRegI32 findFirstOne(T val)
Definition: inst_util.hh:140
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_L::Inst_MIMG__IMAGE_SAMPLE_L
Inst_MIMG__IMAGE_SAMPLE_L(InFmt_MIMG *)
Definition: instructions.cc:38383
Gcn3ISA::Inst_VOPC__V_CMPX_LT_U32::Inst_VOPC__V_CMPX_LT_U32
Inst_VOPC__V_CMPX_LT_U32(InFmt_VOPC *)
Definition: instructions.cc:14273
Gcn3ISA::Inst_VOP3__V_SUBB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24491
Gcn3ISA::Inst_DS__DS_SWIZZLE_B32::~Inst_DS__DS_SWIZZLE_B32
~Inst_DS__DS_SWIZZLE_B32()
Definition: instructions.cc:32417
Gcn3ISA::Inst_SOPP__S_CBRANCH_EXECZ::Inst_SOPP__S_CBRANCH_EXECZ
Inst_SOPP__S_CBRANCH_EXECZ(InFmt_SOPP *)
Definition: instructions.cc:4043
Gcn3ISA::Inst_VOP2__V_LSHLREV_B32::Inst_VOP2__V_LSHLREV_B32
Inst_VOP2__V_LSHLREV_B32(InFmt_VOP2 *)
Definition: instructions.cc:6135
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37197
ComputeUnit::getLds
LdsState & getLds() const
Definition: compute_unit.hh:471
Gcn3ISA::Inst_VOP3__V_LDEXP_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30474
Gcn3ISA::Inst_VOP2__V_SUBREV_U16::Inst_VOP2__V_SUBREV_U16
Inst_VOP2__V_SUBREV_U16(InFmt_VOP2 *)
Definition: instructions.cc:6961
Wavefront::S_BARRIER
@ S_BARRIER
WF is stalled at a barrier.
Definition: wavefront.hh:90
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_F16::Inst_VOPC__V_CMPX_EQ_F16
Inst_VOPC__V_CMPX_EQ_F16(InFmt_VOPC *)
Definition: instructions.cc:10243
Gcn3ISA::Inst_SOPP__S_CBRANCH_EXECZ::~Inst_SOPP__S_CBRANCH_EXECZ
~Inst_SOPP__S_CBRANCH_EXECZ()
Definition: instructions.cc:4049
Gcn3ISA::Inst_VOP3__V_MAD_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29678
Gcn3ISA::Inst_SOPC__S_CMP_GE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3308
Wavefront::dropFetch
bool dropFetch
Definition: wavefront.hh:110
Gcn3ISA::Inst_SOP1__S_SEXT_I32_I8::Inst_SOP1__S_SEXT_I32_I8
Inst_SOP1__S_SEXT_I32_I8(InFmt_SOP1 *)
Definition: instructions.cc:2478
Gcn3ISA::Inst_VOP1__V_FFBH_U32::Inst_VOP1__V_FFBH_U32
Inst_VOP1__V_FFBH_U32(InFmt_VOP1 *)
Definition: instructions.cc:8718
Gcn3ISA::Inst_VOPC__V_CMPX_T_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15199
Gcn3ISA::Inst_VOP3__V_CMP_F_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21892
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_B_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39226
Gcn3ISA::Inst_VOP2__V_MAX_F32::Inst_VOP2__V_MAX_F32
Inst_VOP2__V_MAX_F32(InFmt_VOP2 *)
Definition: instructions.cc:5915
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:5850
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SMIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38102
Gcn3ISA::Inst_VOPC__V_CMPX_LG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10310
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE3::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7929
Gcn3ISA::Inst_SOP1__S_SEXT_I32_I16::~Inst_SOP1__S_SEXT_I32_I16
~Inst_SOP1__S_SEXT_I32_I16()
Definition: instructions.cc:2509
Gcn3ISA::Inst_VOP3__V_FMA_F32::~Inst_VOP3__V_FMA_F32
~Inst_VOP3__V_FMA_F32()
Definition: instructions.cc:28051
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_INC_X2::~Inst_FLAT__FLAT_ATOMIC_INC_X2
~Inst_FLAT__FLAT_ATOMIC_INC_X2()
Definition: instructions.cc:41732
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37580
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMIN::Inst_FLAT__FLAT_ATOMIC_SMIN
Inst_FLAT__FLAT_ATOMIC_SMIN(InFmt_FLAT *)
Definition: instructions.cc:40831
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39275
Gcn3ISA::Inst_MUBUF__BUFFER_WBINVL1_VOL::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:36440
Gcn3ISA::Inst_VOP3__V_DIV_FIXUP_F16::~Inst_VOP3__V_DIV_FIXUP_F16
~Inst_VOP3__V_DIV_FIXUP_F16()
Definition: instructions.cc:29796
Gcn3ISA::Inst_EXP__EXP::~Inst_EXP__EXP
~Inst_EXP__EXP()
Definition: instructions.cc:39404
Gcn3ISA::Inst_SMEM__S_STORE_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5119
Gcn3ISA::Inst_VOP3__V_CMP_TRU_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16335
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_INC_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41740
Gcn3ISA::Inst_VOPC__V_CMP_GE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10040
Gcn3ISA::Inst_VOP3__V_MAD_U16::Inst_VOP3__V_MAD_U16
Inst_VOP3__V_MAD_U16(InFmt_VOP3 *)
Definition: instructions.cc:29619
Gcn3ISA::Inst_SOP1__S_BITSET0_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2564
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_LZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39040
Gcn3ISA::Inst_VOPC__V_CMPX_GT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10292
Gcn3ISA::Inst_VOPC__V_CMPX_GE_F32::Inst_VOPC__V_CMPX_GE_F32
Inst_VOPC__V_CMPX_GE_F32(InFmt_VOPC *)
Definition: instructions.cc:11197
Gcn3ISA::Inst_SOP2__S_LSHL_B64::~Inst_SOP2__S_LSHL_B64
~Inst_SOP2__S_LSHL_B64()
Definition: instructions.cc:929
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36984
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_AND_X2::Inst_FLAT__FLAT_ATOMIC_AND_X2
Inst_FLAT__FLAT_ATOMIC_AND_X2(InFmt_FLAT *)
Definition: instructions.cc:41641
Gcn3ISA::Inst_VOP3__V_CMP_NLT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16316
Gcn3ISA::Inst_VOP3__V_CMPX_LE_I32::~Inst_VOP3__V_CMPX_LE_I32
~Inst_VOP3__V_CMPX_LE_I32()
Definition: instructions.cc:21373
Gcn3ISA::Inst_SOP2__S_SUBB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:219
Gcn3ISA::Inst_VOP3__V_CMP_O_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18103
Gcn3ISA::Inst_VOP3__V_CVT_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25488
Gcn3ISA::Inst_MUBUF::oobMask
VectorMask oobMask
Definition: op_encodings.hh:717
Gcn3ISA::Inst_VOP1__V_CVT_I32_F32::Inst_VOP1__V_CVT_I32_F32
Inst_VOP1__V_CVT_I32_F32(InFmt_VOP1 *)
Definition: instructions.cc:7588
Gcn3ISA::Inst_DS__DS_MIN_I64::~Inst_DS__DS_MIN_I64
~Inst_DS__DS_MIN_I64()
Definition: instructions.cc:32770
Wavefront::stats
Wavefront::WavefrontStats stats
Gcn3ISA::Inst_FLAT__FLAT_LOAD_USHORT::Inst_FLAT__FLAT_LOAD_USHORT
Inst_FLAT__FLAT_LOAD_USHORT(InFmt_FLAT *)
Definition: instructions.cc:39559
Gcn3ISA::Inst_VOP3__V_CMPX_GE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17406
Gcn3ISA::Inst_VOP3__V_FREXP_MANT_F16::Inst_VOP3__V_FREXP_MANT_F16
Inst_VOP3__V_FREXP_MANT_F16(InFmt_VOP3 *)
Definition: instructions.cc:27392
Gcn3ISA::Inst_VOPC__V_CMP_GT_F16::~Inst_VOPC__V_CMP_GT_F16
~Inst_VOPC__V_CMP_GT_F16()
Definition: instructions.cc:9998
Gcn3ISA::Inst_VOP3__V_CMPX_NEQ_F64::Inst_VOP3__V_CMPX_NEQ_F64
Inst_VOP3__V_CMPX_NEQ_F64(InFmt_VOP3 *)
Definition: instructions.cc:19266
Gcn3ISA::Inst_SOPC__S_CMP_LG_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3716
Gcn3ISA::Inst_VOP3__V_WRITELANE_B32::~Inst_VOP3__V_WRITELANE_B32
~Inst_VOP3__V_WRITELANE_B32()
Definition: instructions.cc:30547
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:38786
Gcn3ISA::Inst_SOP2__S_ANDN2_B32::~Inst_SOP2__S_ANDN2_B32
~Inst_SOP2__S_ANDN2_B32()
Definition: instructions.cc:599
Gcn3ISA::Inst_DS__DS_CMPST_F32::~Inst_DS__DS_CMPST_F32
~Inst_DS__DS_CMPST_F32()
Definition: instructions.cc:31444
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_SHORT::~Inst_MUBUF__BUFFER_STORE_SHORT
~Inst_MUBUF__BUFFER_STORE_SHORT()
Definition: instructions.cc:35830
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D_O::~Inst_MIMG__IMAGE_SAMPLE_D_O
~Inst_MIMG__IMAGE_SAMPLE_D_O()
Definition: instructions.cc:38619
Gcn3ISA::Inst_VOPC__V_CMPX_NLG_F64::Inst_VOPC__V_CMPX_NLG_F64
Inst_VOPC__V_CMPX_NLG_F64(InFmt_VOPC *)
Definition: instructions.cc:12362
Gcn3ISA::Inst_SOPK__S_CBRANCH_I_FORK::~Inst_SOPK__S_CBRANCH_I_FORK
~Inst_SOPK__S_CBRANCH_I_FORK()
Definition: instructions.cc:1766
Gcn3ISA::Inst_VOP3__V_LSHRREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23989
Gcn3ISA::Inst_VOP3__V_CMP_LE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16109
Gcn3ISA::Inst_VOP3__V_DIV_FMAS_F64::Inst_VOP3__V_DIV_FMAS_F64
Inst_VOP3__V_DIV_FMAS_F64(InFmt_VOP3 *)
Definition: instructions.cc:29366
Gcn3ISA::Inst_SOP2__S_XOR_B64::Inst_SOP2__S_XOR_B64
Inst_SOP2__S_XOR_B64(InFmt_SOP2 *)
Definition: instructions.cc:563
Gcn3ISA::Inst_VOPC__V_CMPX_GT_I32::Inst_VOPC__V_CMPX_GT_I32
Inst_VOPC__V_CMPX_GT_I32(InFmt_VOPC *)
Definition: instructions.cc:14123
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_CMPSWAP::Inst_MIMG__IMAGE_ATOMIC_CMPSWAP
Inst_MIMG__IMAGE_ATOMIC_CMPSWAP(InFmt_MIMG *)
Definition: instructions.cc:37999
Gcn3ISA::Inst_SOPP__S_CBRANCH_SCC0::~Inst_SOPP__S_CBRANCH_SCC0
~Inst_SOPP__S_CBRANCH_SCC0()
Definition: instructions.cc:3932
Gcn3ISA::Inst_SOPC__S_CMP_LT_U32::Inst_SOPC__S_CMP_LT_U32
Inst_SOPC__S_CMP_LT_U32(InFmt_SOPC *)
Definition: instructions.cc:3478
Gcn3ISA::Inst_VOPC__V_CMP_TRU_F16::~Inst_VOPC__V_CMP_TRU_F16
~Inst_VOPC__V_CMP_TRU_F16()
Definition: instructions.cc:10196
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:29457
Gcn3ISA::Inst_SOP2__S_SUBB_U32::~Inst_SOP2__S_SUBB_U32
~Inst_SOP2__S_SUBB_U32()
Definition: instructions.cc:212
Gcn3ISA::Inst_VOPC__V_CMP_O_F16::Inst_VOPC__V_CMP_O_F16
Inst_VOPC__V_CMP_O_F16(InFmt_VOPC *)
Definition: instructions.cc:10045
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39107
Gcn3ISA::Inst_VOP3__V_CMP_NLT_F16::Inst_VOP3__V_CMP_NLT_F16
Inst_VOP3__V_CMP_NLT_F16(InFmt_VOP3 *)
Definition: instructions.cc:16302
Gcn3ISA::Inst_VOPC__V_CMPX_LE_F32::Inst_VOPC__V_CMPX_LE_F32
Inst_VOPC__V_CMPX_LE_F32(InFmt_VOPC *)
Definition: instructions.cc:11097
Gcn3ISA::Inst_VOP3__V_CMP_CLASS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15542
Gcn3ISA::Inst_VOPC__V_CMPX_NEQ_F16::~Inst_VOPC__V_CMPX_NEQ_F16
~Inst_VOPC__V_CMPX_NEQ_F16()
Definition: instructions.cc:10450
Gcn3ISA::Inst_FLAT__FLAT_LOAD_UBYTE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39467
Gcn3ISA::Inst_VOP3__V_CMP_LG_F16::Inst_VOP3__V_CMP_LG_F16
Inst_VOP3__V_CMP_LG_F16(InFmt_VOP3 *)
Definition: instructions.cc:16133
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11077
Gcn3ISA::Inst_VOP3__V_NOP::Inst_VOP3__V_NOP
Inst_VOP3__V_NOP(InFmt_VOP3 *)
Definition: instructions.cc:25204
Gcn3ISA::Inst_VOP1__V_EXP_LEGACY_F32::Inst_VOP1__V_EXP_LEGACY_F32
Inst_VOP1__V_EXP_LEGACY_F32(InFmt_VOP1 *)
Definition: instructions.cc:9346
Gcn3ISA::Inst_DS__DS_MIN_SRC2_F32::Inst_DS__DS_MIN_SRC2_F32
Inst_DS__DS_MIN_SRC2_F32(InFmt_DS *)
Definition: instructions.cc:33965
Gcn3ISA::Inst_VOP3__V_BFM_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30873
Gcn3ISA::Inst_VOP3__V_ADD_F64::Inst_VOP3__V_ADD_F64
Inst_VOP3__V_ADD_F64(InFmt_VOP3 *)
Definition: instructions.cc:29967
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_AND_X2::~Inst_MUBUF__BUFFER_ATOMIC_AND_X2
~Inst_MUBUF__BUFFER_ATOMIC_AND_X2()
Definition: instructions.cc:37030
Gcn3ISA::Inst_VOP3__V_ADD_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29980
Gcn3ISA::Inst_VOP2__V_MUL_U32_U24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5787
Gcn3ISA::Inst_VOP3__V_CMP_GE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19656
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37203
Gcn3ISA::Inst_VOP3__V_CMPX_CLASS_F32::Inst_VOP3__V_CMPX_CLASS_F32
Inst_VOP3__V_CMPX_CLASS_F32(InFmt_VOP3 *)
Definition: instructions.cc:15630
Gcn3ISA::Inst_VOP2__V_SUBREV_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6813
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:37440
Gcn3ISA::InFmt_SOPC::SSRC0
unsigned int SSRC0
Definition: gpu_decoder.hh:1504
Gcn3ISA::Inst_DS__DS_MIN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31474
Gcn3ISA::Inst_VOP3__V_MAD_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29614
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2::~Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2
~Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2()
Definition: instructions.cc:36976
Gcn3ISA::Inst_VOP1__V_COS_F32::Inst_VOP1__V_COS_F32
Inst_VOP1__V_COS_F32(InFmt_VOP1 *)
Definition: instructions.cc:8622
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_LZ::~Inst_MIMG__IMAGE_GATHER4_LZ
~Inst_MIMG__IMAGE_GATHER4_LZ()
Definition: instructions.cc:38934
Gcn3ISA::Inst_VOPC__V_CMP_NLG_F32::Inst_VOPC__V_CMP_NLG_F32
Inst_VOPC__V_CMP_NLG_F32(InFmt_VOPC *)
Definition: instructions.cc:10815
Gcn3ISA::Inst_SOP1__S_SETPC_B64::~Inst_SOP1__S_SETPC_B64
~Inst_SOP1__S_SETPC_B64()
Definition: instructions.cc:2654
Gcn3ISA::Inst_VOPC__V_CMP_NLE_F64::~Inst_VOPC__V_CMP_NLE_F64
~Inst_VOPC__V_CMP_NLE_F64()
Definition: instructions.cc:11916
Gcn3ISA::Inst_SMEM__S_STORE_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5160
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW
Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW(InFmt_MUBUF *)
Definition: instructions.cc:34737
Gcn3ISA::Inst_VOPC__V_CMP_F_I16::~Inst_VOPC__V_CMP_F_I16
~Inst_VOPC__V_CMP_F_I16()
Definition: instructions.cc:12562
Gcn3ISA::Inst_VOP1__V_COS_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9341
Gcn3ISA::Inst_SMEM__S_MEMREALTIME::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5404
Gcn3ISA::Inst_SOPP__S_WAITCNT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4159
Gcn3ISA::Inst_SOP2__S_AND_B32::Inst_SOP2__S_AND_B32
Inst_SOP2__S_AND_B32(InFmt_SOP2 *)
Definition: instructions.cc:413
Gcn3ISA::Inst_DS__DS_SUB_RTN_U64::Inst_DS__DS_SUB_RTN_U64
Inst_DS__DS_SUB_RTN_U64(InFmt_DS *)
Definition: instructions.cc:33153
Gcn3ISA::Inst_VOP3__V_LDEXP_F64::Inst_VOP3__V_LDEXP_F64
Inst_VOP3__V_LDEXP_F64(InFmt_VOP3 *)
Definition: instructions.cc:30271
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:38813
Gcn3ISA::Inst_VOP3__V_RSQ_F64::~Inst_VOP3__V_RSQ_F64
~Inst_VOP3__V_RSQ_F64()
Definition: instructions.cc:26617
Gcn3ISA::Inst_VOPC__V_CMPX_NLG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11346
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK::~Inst_MIMG__IMAGE_LOAD_MIP_PCK
~Inst_MIMG__IMAGE_LOAD_MIP_PCK()
Definition: instructions.cc:37788
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18658
Gcn3ISA::Inst_VOPC__V_CMPX_NGE_F64::~Inst_VOPC__V_CMPX_NGE_F64
~Inst_VOPC__V_CMPX_NGE_F64()
Definition: instructions.cc:12336
Gcn3ISA::Inst_SOP1__S_FLBIT_I32_I64::Inst_SOP1__S_FLBIT_I32_I64
Inst_SOP1__S_FLBIT_I32_I64(InFmt_SOP1 *)
Definition: instructions.cc:2451
Gcn3ISA::Inst_VOPC__V_CMP_O_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10058
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMAX::Inst_MUBUF__BUFFER_ATOMIC_UMAX
Inst_MUBUF__BUFFER_ATOMIC_UMAX(InFmt_MUBUF *)
Definition: instructions.cc:36636
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_X::Inst_MUBUF__BUFFER_STORE_FORMAT_X
Inst_MUBUF__BUFFER_STORE_FORMAT_X(InFmt_MUBUF *)
Definition: instructions.cc:34647
Gcn3ISA::Inst_MUBUF__BUFFER_WBINVL1_VOL::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:36435
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:39321
Gcn3ISA::Inst_VOP3__V_SIN_F16::~Inst_VOP3__V_SIN_F16
~Inst_VOP3__V_SIN_F16()
Definition: instructions.cc:27528
Wavefront::scalarOutstandingReqsWrGm
int scalarOutstandingReqsWrGm
Definition: wavefront.hh:181
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:25626
Gcn3ISA::Inst_VOP1__V_CVT_U32_F32::Inst_VOP1__V_CVT_U32_F32
Inst_VOP1__V_CVT_U32_F32(InFmt_VOP1 *)
Definition: instructions.cc:7542
Gcn3ISA::Inst_DS__DS_MAX_RTN_I32::Inst_DS__DS_MAX_RTN_I32
Inst_DS__DS_MAX_RTN_I32(InFmt_DS *)
Definition: instructions.cc:31762
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ::~Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ
~Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ()
Definition: instructions.cc:37343
Gcn3ISA::wholeQuadMode
T wholeQuadMode(T val)
Definition: inst_util.hh:88
Gcn3ISA::Inst_MIMG__IMAGE_STORE_MIP::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37887
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34612
Gcn3ISA::Inst_SOPK__S_MULK_I32::~Inst_SOPK__S_MULK_I32
~Inst_SOPK__S_MULK_I32()
Definition: instructions.cc:1742
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34607
Gcn3ISA::Inst_VOPC__V_CMPX_LE_I64::~Inst_VOPC__V_CMPX_LE_I64
~Inst_VOPC__V_CMPX_LE_I64()
Definition: instructions.cc:15065
Gcn3ISA::Inst_VOP3__V_CMP_NLG_F64::~Inst_VOP3__V_CMP_NLG_F64
~Inst_VOP3__V_CMP_NLG_F64()
Definition: instructions.cc:18263
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37653
Gcn3ISA::Inst_DS__DS_MIN_SRC2_F64::Inst_DS__DS_MIN_SRC2_F64
Inst_DS__DS_MIN_SRC2_F64(InFmt_DS *)
Definition: instructions.cc:34412
Gcn3ISA::Inst_VOP3__V_RNDNE_F64::~Inst_VOP3__V_RNDNE_F64
~Inst_VOP3__V_RNDNE_F64()
Definition: instructions.cc:26102
Gcn3ISA::Inst_VOP3__V_MED3_U32::Inst_VOP3__V_MED3_U32
Inst_VOP3__V_MED3_U32(InFmt_VOP3 *)
Definition: instructions.cc:28705
Gcn3ISA::Inst_VOP2__V_MIN_U32::~Inst_VOP2__V_MIN_U32
~Inst_VOP2__V_MIN_U32()
Definition: instructions.cc:6015
Gcn3ISA::Inst_VOP3__V_CVT_I32_F64::Inst_VOP3__V_CVT_I32_F64
Inst_VOP3__V_CVT_I32_F64(InFmt_VOP3 *)
Definition: instructions.cc:25251
Gcn3ISA::Inst_SOP2__S_ADD_U32::Inst_SOP2__S_ADD_U32
Inst_SOP2__S_ADD_U32(InFmt_SOP2 *)
Definition: instructions.cc:46
Gcn3ISA::Inst_DS__DS_READ_B64::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:33553
Gcn3ISA::Inst_VOP3__V_CMP_NGT_F64::~Inst_VOP3__V_CMP_NGT_F64
~Inst_VOP3__V_CMP_NGT_F64()
Definition: instructions.cc:18319
Gcn3ISA::Inst_SOP1__S_MOV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1899
Gcn3ISA::Inst_SOPK__S_CBRANCH_I_FORK::Inst_SOPK__S_CBRANCH_I_FORK
Inst_SOPK__S_CBRANCH_I_FORK(InFmt_SOPK *)
Definition: instructions.cc:1760
Gcn3ISA::Inst_SOP1__S_FLBIT_I32_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2412
Gcn3ISA::Inst_SOP2__S_ADDC_U32::~Inst_SOP2__S_ADDC_U32
~Inst_SOP2__S_ADDC_U32()
Definition: instructions.cc:179
Gcn3ISA::Inst_VOP3__V_CMP_NE_U32::Inst_VOP3__V_CMP_NE_U32
Inst_VOP3__V_CMP_NE_U32(InFmt_VOP3 *)
Definition: instructions.cc:21142
Gcn3ISA::Inst_SOP2__S_ADD_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:122
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX4::~Inst_MUBUF__BUFFER_STORE_DWORDX4
~Inst_MUBUF__BUFFER_STORE_DWORDX4()
Definition: instructions.cc:36224
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_AND::~Inst_MIMG__IMAGE_ATOMIC_AND
~Inst_MIMG__IMAGE_ATOMIC_AND()
Definition: instructions.cc:38201
Gcn3ISA::Inst_SOP1__S_CMOV_B64::~Inst_SOP1__S_CMOV_B64
~Inst_SOP1__S_CMOV_B64()
Definition: instructions.cc:1970
Gcn3ISA::Inst_VOPC__V_CMP_LE_U64::~Inst_VOPC__V_CMP_LE_U64
~Inst_VOPC__V_CMP_LE_U64()
Definition: instructions.cc:14824
Gcn3ISA::Inst_VOP1__V_EXP_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8306
Gcn3ISA::Inst_VOP3_SDST_ENC::instData
InFmt_VOP3_SDST_ENC instData
Definition: op_encodings.hh:402
Gcn3ISA::Inst_VOPC__V_CMP_LT_F16::Inst_VOPC__V_CMP_LT_F16
Inst_VOPC__V_CMP_LT_F16(InFmt_VOPC *)
Definition: instructions.cc:9937
Gcn3ISA::Inst_VOPC__V_CMPX_LT_I64::Inst_VOPC__V_CMPX_LT_I64
Inst_VOPC__V_CMPX_LT_I64(InFmt_VOPC *)
Definition: instructions.cc:14995
Gcn3ISA::Inst_VOP3__V_ADD_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23185
Gcn3ISA::Inst_VOP3__V_INTERP_P1_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29871
Gcn3ISA::Inst_FLAT__FLAT_STORE_BYTE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40023
Gcn3ISA::Inst_VOP3__V_LERP_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28176
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21650
Gcn3ISA::Inst_VOP3__V_CUBESC_F32::~Inst_VOP3__V_CUBESC_F32
~Inst_VOP3__V_CUBESC_F32()
Definition: instructions.cc:27865
Gcn3ISA::Inst_VOPC__V_CMPX_GT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13167
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_ADD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40713
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX4::~Inst_SMEM__S_BUFFER_LOAD_DWORDX4
~Inst_SMEM__S_BUFFER_LOAD_DWORDX4()
Definition: instructions.cc:4874
Gcn3ISA::Inst_SOP2__S_BFE_U32::Inst_SOP2__S_BFE_U32
Inst_SOP2__S_BFE_U32(InFmt_SOP2 *)
Definition: instructions.cc:1157
Gcn3ISA::Inst_VOP1__V_RNDNE_F32::~Inst_VOP1__V_RNDNE_F32
~Inst_VOP1__V_RNDNE_F32()
Definition: instructions.cc:8240
Gcn3ISA::Inst_DS__DS_READ2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33582
Gcn3ISA::Inst_DS__DS_RSUB_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33185
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE1::~Inst_VOP1__V_CVT_F32_UBYTE1
~Inst_VOP1__V_CVT_F32_UBYTE1()
Definition: instructions.cc:7863
Gcn3ISA::Inst_VOP3__V_DIV_FIXUP_F64::Inst_VOP3__V_DIV_FIXUP_F64
Inst_VOP3__V_DIV_FIXUP_F64(InFmt_VOP3 *)
Definition: instructions.cc:29073
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34601
Gcn3ISA::Inst_SOP2__S_ORN2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:696
Gcn3ISA::Inst_VOP3__V_CMP_NLE_F64::Inst_VOP3__V_CMP_NLE_F64
Inst_VOP3__V_CMP_NLE_F64(InFmt_VOP3 *)
Definition: instructions.cc:18366
Gcn3ISA::Inst_VOP3__V_CMPX_LE_U16::~Inst_VOP3__V_CMPX_LE_U16
~Inst_VOP3__V_CMPX_LE_U16()
Definition: instructions.cc:20450
Gcn3ISA::Inst_DS__DS_CMPST_RTN_B64::Inst_DS__DS_CMPST_RTN_B64
Inst_DS__DS_CMPST_RTN_B64(InFmt_DS *)
Definition: instructions.cc:33424
Gcn3ISA::Inst_SOP1__S_FF0_I32_B32::~Inst_SOP1__S_FF0_I32_B32
~Inst_SOP1__S_FF0_I32_B32()
Definition: instructions.cc:2274
Gcn3ISA::Inst_DS__DS_MIN_RTN_I32::Inst_DS__DS_MIN_RTN_I32
Inst_DS__DS_MIN_RTN_I32(InFmt_DS *)
Definition: instructions.cc:31744
Gcn3ISA::Inst_VOP3__V_SUBREV_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24761
Gcn3ISA::Inst_SOP1__S_MOV_B64::~Inst_SOP1__S_MOV_B64
~Inst_SOP1__S_MOV_B64()
Definition: instructions.cc:1917
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SUB_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41459
Gcn3ISA::Inst_DS__DS_MIN_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32778
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34547
Gcn3ISA::Inst_FLAT__FLAT_LOAD_SSHORT::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39656
Gcn3ISA::Inst_VOP3__V_CMPX_NE_I16::~Inst_VOP3__V_CMPX_NE_I16
~Inst_VOP3__V_CMPX_NE_I16()
Definition: instructions.cc:20222
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_L_O::~Inst_MIMG__IMAGE_SAMPLE_L_O
~Inst_MIMG__IMAGE_SAMPLE_L_O()
Definition: instructions.cc:38652
Gcn3ISA::Inst_SOPK__S_CMPK_LE_U32::~Inst_SOPK__S_CMPK_LE_U32
~Inst_SOPK__S_CMPK_LE_U32()
Definition: instructions.cc:1687
Wavefront::wfSlotId
const int wfSlotId
Definition: wavefront.hh:94
Gcn3ISA::Inst_DS__DS_OR_RTN_B32::Inst_DS__DS_OR_RTN_B32
Inst_DS__DS_OR_RTN_B32(InFmt_DS *)
Definition: instructions.cc:31834
Gcn3ISA::Inst_VOP3__V_TRUNC_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26223
Gcn3ISA::Inst_VOP2__V_MIN_U16::Inst_VOP2__V_MIN_U16
Inst_VOP2__V_MIN_U16(InFmt_VOP2 *)
Definition: instructions.cc:7216
Gcn3ISA::Inst_SOP1__S_MOV_B32::Inst_SOP1__S_MOV_B32
Inst_SOP1__S_MOV_B32(InFmt_SOP1 *)
Definition: instructions.cc:1887
Gcn3ISA::Inst_VOPC__V_CMP_GT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12925
Gcn3ISA::Inst_VOP1__V_CEIL_F32::Inst_VOP1__V_CEIL_F32
Inst_VOP1__V_CEIL_F32(InFmt_VOP1 *)
Definition: instructions.cc:8203
Gcn3ISA::Inst_DS__DS_RSUB_U32::~Inst_DS__DS_RSUB_U32
~Inst_DS__DS_RSUB_U32()
Definition: instructions.cc:31034
Gcn3ISA::Inst_VOP2__V_LDEXP_F16::~Inst_VOP2__V_LDEXP_F16
~Inst_VOP2__V_LDEXP_F16()
Definition: instructions.cc:7285
Gcn3ISA::Inst_DS__DS_WRITE_B32::~Inst_DS__DS_WRITE_B32
~Inst_DS__DS_WRITE_B32()
Definition: instructions.cc:31235
Gcn3ISA::Inst_VOP1__V_RNDNE_F16::Inst_VOP1__V_RNDNE_F16
Inst_VOP1__V_RNDNE_F16(InFmt_VOP1 *)
Definition: instructions.cc:9274
Gcn3ISA::Inst_VOP3__V_CMPX_GE_F32::~Inst_VOP3__V_CMPX_GE_F32
~Inst_VOP3__V_CMPX_GE_F32()
Definition: instructions.cc:17400
Gcn3ISA::Inst_VOPC__V_CMP_T_U32::~Inst_VOPC__V_CMP_T_U32
~Inst_VOPC__V_CMP_T_U32()
Definition: instructions.cc:13980
Gcn3ISA::InFmt_VOP_SDWA::SRC1_SEXT
unsigned int SRC1_SEXT
Definition: gpu_decoder.hh:1604
Gcn3ISA::Inst_VOP3__V_CMP_NE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22087
Gcn3ISA::Inst_VOP3__V_LOG_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27616
Gcn3ISA::Inst_VOPC__V_CMP_CLASS_F64::Inst_VOPC__V_CMP_CLASS_F64
Inst_VOPC__V_CMP_CLASS_F64(InFmt_VOPC *)
Definition: instructions.cc:9631
Gcn3ISA::Inst_SOP2__S_BFM_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1089
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13349
Gcn3ISA::Inst_DS__DS_WRXCHG2_RTN_B32::~Inst_DS__DS_WRXCHG2_RTN_B32
~Inst_DS__DS_WRXCHG2_RTN_B32()
Definition: instructions.cc:31912
Gcn3ISA::Inst_VOP3__V_CMPX_NLG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19111
Gcn3ISA::Inst_VOP3__V_CMP_NLT_F32::Inst_VOP3__V_CMP_NLT_F32
Inst_VOP3__V_CMP_NLT_F32(InFmt_VOP3 *)
Definition: instructions.cc:17131
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:5745
Gcn3ISA::Inst_VOP3__V_CMP_LE_U16::Inst_VOP3__V_CMP_LE_U16
Inst_VOP3__V_CMP_LE_U16(InFmt_VOP3 *)
Definition: instructions.cc:19821
Gcn3ISA::Inst_VOP3__V_CMP_GT_I16::Inst_VOP3__V_CMP_GT_I16
Inst_VOP3__V_CMP_GT_I16(InFmt_VOP3 *)
Definition: instructions.cc:19559
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SUB_X2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41520
Gcn3ISA::Inst_VOP3__V_MUL_LO_U32::~Inst_VOP3__V_MUL_LO_U32
~Inst_VOP3__V_MUL_LO_U32()
Definition: instructions.cc:30336
Gcn3ISA::Inst_VOPC__V_CMP_T_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13748
Gcn3ISA::Inst_SOP2__S_NOR_B64::~Inst_SOP2__S_NOR_B64
~Inst_SOP2__S_NOR_B64()
Definition: instructions.cc:809
Gcn3ISA::Inst_SOPP__S_CBRANCH_EXECNZ::~Inst_SOPP__S_CBRANCH_EXECNZ
~Inst_SOPP__S_CBRANCH_EXECNZ()
Definition: instructions.cc:4074
Gcn3ISA::Inst_SOP2__S_ADDC_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:187
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMAX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40901
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX8::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:4971
Gcn3ISA::Inst_VOP3__V_CMP_NLT_F32::~Inst_VOP3__V_CMP_NLT_F32
~Inst_VOP3__V_CMP_NLT_F32()
Definition: instructions.cc:17139
Gcn3ISA::Inst_VOPC__V_CMP_NE_U64::Inst_VOPC__V_CMP_NE_U64
Inst_VOPC__V_CMP_NE_U64(InFmt_VOPC *)
Definition: instructions.cc:14880
Gcn3ISA::Inst_VOP3__V_DIV_FIXUP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29830
Gcn3ISA::Inst_VOP3__V_RCP_IFLAG_F32::Inst_VOP3__V_RCP_IFLAG_F32
Inst_VOP3__V_RCP_IFLAG_F32(InFmt_VOP3 *)
Definition: instructions.cc:26484
Gcn3ISA::Inst_VOP2__V_LSHRREV_B32::~Inst_VOP2__V_LSHRREV_B32
~Inst_VOP2__V_LSHRREV_B32()
Definition: instructions.cc:6077
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37458
Gcn3ISA::Inst_DS__DS_CMPST_RTN_F32::~Inst_DS__DS_CMPST_RTN_F32
~Inst_DS__DS_CMPST_RTN_F32()
Definition: instructions.cc:31967
Gcn3ISA::Inst_VOPC__V_CMPX_NE_I64::Inst_VOPC__V_CMPX_NE_I64
Inst_VOPC__V_CMPX_NE_I64(InFmt_VOPC *)
Definition: instructions.cc:15123
Gcn3ISA::Inst_SOP2__S_AND_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:426
Gcn3ISA::Inst_SOP2__S_ORN2_B32::Inst_SOP2__S_ORN2_B32
Inst_SOP2__S_ORN2_B32(InFmt_SOP2 *)
Definition: instructions.cc:653
Gcn3ISA::Inst_VOP3__V_LERP_U8::Inst_VOP3__V_LERP_U8
Inst_VOP3__V_LERP_U8(InFmt_VOP3 *)
Definition: instructions.cc:28161
Gcn3ISA::Inst_VOPC__V_CMPX_LE_F32::~Inst_VOPC__V_CMPX_LE_F32
~Inst_VOPC__V_CMPX_LE_F32()
Definition: instructions.cc:11104
Gcn3ISA::Inst_DS__DS_WRITE_B64::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:32955
Gcn3ISA::Inst_SOPP__S_CBRANCH_VCCZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3998
Gcn3ISA::Inst_VOP3__V_CMP_GT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22045
Gcn3ISA::Inst_VOP2__V_MAX_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7197
Gcn3ISA::Inst_DS__DS_WRITE_B128::~Inst_DS__DS_WRITE_B128
~Inst_DS__DS_WRITE_B128()
Definition: instructions.cc:34478
Gcn3ISA::Inst_VOP3__V_LSHLREV_B64::Inst_VOP3__V_LSHLREV_B64
Inst_VOP3__V_LSHLREV_B64(InFmt_VOP3 *)
Definition: instructions.cc:30718
Gcn3ISA::Inst_VOP1__V_CVT_I16_F16::Inst_VOP1__V_CVT_I16_F16
Inst_VOP1__V_CVT_I16_F16(InFmt_VOP1 *)
Definition: instructions.cc:9053
Gcn3ISA::Inst_SOP1__S_MOVRELS_B64::~Inst_SOP1__S_MOVRELS_B64
~Inst_SOP1__S_MOVRELS_B64()
Definition: instructions.cc:3061
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_LZ::~Inst_MIMG__IMAGE_SAMPLE_LZ
~Inst_MIMG__IMAGE_SAMPLE_LZ()
Definition: instructions.cc:38438
Gcn3ISA::Inst_VOP3__V_TRIG_PREOP_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30856
Gcn3ISA::Inst_DS__DS_READ2_B32::Inst_DS__DS_READ2_B32
Inst_DS__DS_READ2_B32(InFmt_DS *)
Definition: instructions.cc:32119
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_U64::Inst_VOP3__V_CMPX_EQ_U64
Inst_VOP3__V_CMPX_EQ_U64(InFmt_VOP3 *)
Definition: instructions.cc:22873
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_F32::~Inst_VOP3__V_CMPX_EQ_F32
~Inst_VOP3__V_CMPX_EQ_F32()
Definition: instructions.cc:17263
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_CL::~Inst_MIMG__IMAGE_GATHER4_C_CL
~Inst_MIMG__IMAGE_GATHER4_C_CL()
Definition: instructions.cc:38967
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMIN::Inst_MUBUF__BUFFER_ATOMIC_UMIN
Inst_MUBUF__BUFFER_ATOMIC_UMIN(InFmt_MUBUF *)
Definition: instructions.cc:36582
Gcn3ISA::Inst_VOP3__V_CMPX_NLT_F64::Inst_VOP3__V_CMPX_NLT_F64
Inst_VOP3__V_CMPX_NLT_F64(InFmt_VOP3 *)
Definition: instructions.cc:19322
Gcn3ISA::Inst_MUBUF::calcAddr
void calcAddr(GPUDynInstPtr gpuDynInst, VOFF v_off, VIDX v_idx, SRSRC s_rsrc_desc, SOFF s_offset, int inst_offset)
MUBUF insructions calculate their addresses as follows:
Definition: op_encodings.hh:614
Gcn3ISA::Inst_VOPC__V_CMP_EQ_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13593
Gcn3ISA::Inst_VOP3__V_SUB_U32::Inst_VOP3__V_SUB_U32
Inst_VOP3__V_SUB_U32(InFmt_VOP3_SDST_ENC *)
Definition: instructions.cc:24329
Gcn3ISA::Inst_SOP2__S_BFM_B32::Inst_SOP2__S_BFM_B32
Inst_SOP2__S_BFM_B32(InFmt_SOP2 *)
Definition: instructions.cc:1077
Gcn3ISA::Inst_VOP3__V_CMPX_LE_F16::~Inst_VOP3__V_CMPX_LE_F16
~Inst_VOP3__V_CMPX_LE_F16()
Definition: instructions.cc:16423
Gcn3ISA::Inst_SOPK__S_MOVK_I32::Inst_SOPK__S_MOVK_I32
Inst_SOPK__S_MOVK_I32(InFmt_SOPK *)
Definition: instructions.cc:1356
Nop
def format Nop(code, *opt_flags)
Definition: nop.cc:82
Gcn3ISA::InFmt_DS::OFFSET1
unsigned int OFFSET1
Definition: gpu_decoder.hh:1356
Gcn3ISA::Inst_VOPC__V_CMP_LT_I16::~Inst_VOPC__V_CMP_LT_I16
~Inst_VOPC__V_CMP_LT_I16()
Definition: instructions.cc:12588
Gcn3ISA::Inst_VOP3__V_INTERP_P1LV_F16::~Inst_VOP3__V_INTERP_P1LV_F16
~Inst_VOP3__V_INTERP_P1LV_F16()
Definition: instructions.cc:29939
Gcn3ISA::Inst_VOPC__V_CMP_LE_U16::~Inst_VOPC__V_CMP_LE_U16
~Inst_VOPC__V_CMP_LE_U16()
Definition: instructions.cc:12888
Gcn3ISA::Inst_VOPC__V_CMP_NGE_F32::~Inst_VOPC__V_CMP_NGE_F32
~Inst_VOPC__V_CMP_NGE_F32()
Definition: instructions.cc:10790
Gcn3ISA::Inst_VOP3__V_CMPX_F_F32::~Inst_VOP3__V_CMPX_F_F32
~Inst_VOP3__V_CMPX_F_F32()
Definition: instructions.cc:17200
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:37631
Gcn3ISA::Inst_DS__DS_WRXCHG2ST64_RTN_B32::~Inst_DS__DS_WRXCHG2ST64_RTN_B32
~Inst_DS__DS_WRXCHG2ST64_RTN_B32()
Definition: instructions.cc:31929
Gcn3ISA::Inst_VOP3__V_LSHLREV_B64::~Inst_VOP3__V_LSHLREV_B64
~Inst_VOP3__V_LSHLREV_B64()
Definition: instructions.cc:30724
Gcn3ISA::Inst_VOP3__V_ADD_U32::~Inst_VOP3__V_ADD_U32
~Inst_VOP3__V_ADD_U32()
Definition: instructions.cc:24290
Gcn3ISA::Inst_VOPC__V_CMP_TRU_F16::Inst_VOPC__V_CMP_TRU_F16
Inst_VOPC__V_CMP_TRU_F16(InFmt_VOPC *)
Definition: instructions.cc:10189
Gcn3ISA::Inst_VOP3__V_SIN_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27534
Gcn3ISA::Inst_MIMG__IMAGE_STORE_MIP_PCK::~Inst_MIMG__IMAGE_STORE_MIP_PCK
~Inst_MIMG__IMAGE_STORE_MIP_PCK()
Definition: instructions.cc:37934
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B_CL::Inst_MIMG__IMAGE_SAMPLE_B_CL
Inst_MIMG__IMAGE_SAMPLE_B_CL(InFmt_MIMG *)
Definition: instructions.cc:38415
Gcn3ISA::InFmt_FLAT
Definition: gpu_decoder.hh:1387
Gcn3ISA::Inst_VOP3__V_CUBEID_F32::Inst_VOP3__V_CUBEID_F32
Inst_VOP3__V_CUBEID_F32(InFmt_VOP3 *)
Definition: instructions.cc:27841
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_INC::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36765
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38459
Gcn3ISA::Inst_VOP3__V_CMP_LG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17993
Gcn3ISA::Inst_SOPP__S_INCPERFLEVEL::~Inst_SOPP__S_INCPERFLEVEL
~Inst_SOPP__S_INCPERFLEVEL()
Definition: instructions.cc:4291
Gcn3ISA::Inst_VOPC__V_CMPX_TRU_F16::~Inst_VOPC__V_CMPX_TRU_F16
~Inst_VOPC__V_CMPX_TRU_F16()
Definition: instructions.cc:10486
Wavefront::setStatus
void setStatus(status_e newStatus)
Definition: wavefront.cc:517
Gcn3ISA::Inst_VOPC__V_CMP_F_F64::~Inst_VOPC__V_CMP_F_F64
~Inst_VOPC__V_CMP_F_F64()
Definition: instructions.cc:11533
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SMAX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38156
Gcn3ISA::Inst_SOPP__S_CBRANCH_CDBGSYS::~Inst_SOPP__S_CBRANCH_CDBGSYS
~Inst_SOPP__S_CBRANCH_CDBGSYS()
Definition: instructions.cc:4338
Gcn3ISA::Inst_DS__DS_READ_I8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32264
Gcn3ISA::Inst_SOPK__S_CMPK_LT_I32::~Inst_SOPK__S_CMPK_LT_I32
~Inst_SOPK__S_CMPK_LT_I32()
Definition: instructions.cc:1512
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX2::Inst_SMEM__S_LOAD_DWORDX2
Inst_SMEM__S_LOAD_DWORDX2(InFmt_SMEM *)
Definition: instructions.cc:4518
Gcn3ISA::Inst_VOPC__V_CMP_NGT_F32::Inst_VOPC__V_CMP_NGT_F32
Inst_VOPC__V_CMP_NGT_F32(InFmt_VOPC *)
Definition: instructions.cc:10848
Gcn3ISA::Inst_VOP3__V_SQRT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26671
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39713
Gcn3ISA::Inst_DS__DS_OR_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31847
Gcn3ISA::Inst_VOP3__V_CMP_F_I16::~Inst_VOP3__V_CMP_F_I16
~Inst_VOP3__V_CMP_F_I16()
Definition: instructions.cc:19413
Gcn3ISA::InFmt_VOP2
Definition: gpu_decoder.hh:1539
Gcn3ISA::Inst_VOP3__V_MAX_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24975
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_INC::Inst_MUBUF__BUFFER_ATOMIC_INC
Inst_MUBUF__BUFFER_ATOMIC_INC(InFmt_MUBUF *)
Definition: instructions.cc:36744
Gcn3ISA::Inst_DS__DS_INC_U32::Inst_DS__DS_INC_U32
Inst_DS__DS_INC_U32(InFmt_DS *)
Definition: instructions.cc:31048
Gcn3ISA::Inst_VOP2__V_MUL_F16::Inst_VOP2__V_MUL_F16
Inst_VOP2__V_MUL_F16(InFmt_VOP2 *)
Definition: instructions.cc:6818
Gcn3ISA::Inst_DS__DS_READ2ST64_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33647
Gcn3ISA::Inst_VOP3__V_CEIL_F32::Inst_VOP3__V_CEIL_F32
Inst_VOP3__V_CEIL_F32(InFmt_VOP3 *)
Definition: instructions.cc:26248
Gcn3ISA::Inst_VOP1__V_COS_F32::~Inst_VOP1__V_COS_F32
~Inst_VOP1__V_COS_F32()
Definition: instructions.cc:8629
Gcn3ISA::Inst_VOP3__V_LSHRREV_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30772
Gcn3ISA::Inst_VOPC__V_CMPX_NE_I32::Inst_VOPC__V_CMPX_NE_I32
Inst_VOPC__V_CMPX_NE_I32(InFmt_VOPC *)
Definition: instructions.cc:14155
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE2::Inst_VOP1__V_CVT_F32_UBYTE2
Inst_VOP1__V_CVT_F32_UBYTE2(InFmt_VOP1 *)
Definition: instructions.cc:7886
Gcn3ISA::Inst_VOP1__V_LOG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8336
Gcn3ISA::Inst_VOP3__V_CMPX_LE_I32::Inst_VOP3__V_CMPX_LE_I32
Inst_VOP3__V_CMPX_LE_I32(InFmt_VOP3 *)
Definition: instructions.cc:21366
Gcn3ISA::Inst_VOP3__V_BCNT_U32_B32::Inst_VOP3__V_BCNT_U32_B32
Inst_VOP3__V_BCNT_U32_B32(InFmt_VOP3 *)
Definition: instructions.cc:30581
Gcn3ISA::Inst_VOP3__V_MOV_FED_B32::Inst_VOP3__V_MOV_FED_B32
Inst_VOP3__V_MOV_FED_B32(InFmt_VOP3 *)
Definition: instructions.cc:25533
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SUB::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36549
Gcn3ISA::Inst_DS__DS_MIN_RTN_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33481
Gcn3ISA::Inst_SOPP__S_ICACHE_INV::Inst_SOPP__S_ICACHE_INV
Inst_SOPP__S_ICACHE_INV(InFmt_SOPP *)
Definition: instructions.cc:4270
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_DEC_X2::Inst_FLAT__FLAT_ATOMIC_DEC_X2
Inst_FLAT__FLAT_ATOMIC_DEC_X2(InFmt_FLAT *)
Definition: instructions.cc:41818
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMAX::Inst_MUBUF__BUFFER_ATOMIC_SMAX
Inst_MUBUF__BUFFER_ATOMIC_SMAX(InFmt_MUBUF *)
Definition: instructions.cc:36609
Gcn3ISA::Inst_VOPC__V_CMP_O_F32::~Inst_VOPC__V_CMP_O_F32
~Inst_VOPC__V_CMP_O_F32()
Definition: instructions.cc:10724
Gcn3ISA::Inst_VOP3__V_CUBEID_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27853
Gcn3ISA::Inst_SOP1__S_CBRANCH_JOIN::~Inst_SOP1__S_CBRANCH_JOIN
~Inst_SOP1__S_CBRANCH_JOIN()
Definition: instructions.cc:3141
Gcn3ISA::Inst_VOP2__V_ADD_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5489
Gcn3ISA::Inst_VOP3__V_CMP_GT_U16::Inst_VOP3__V_CMP_GT_U16
Inst_VOP3__V_CMP_GT_U16(InFmt_VOP3 *)
Definition: instructions.cc:19863
Gcn3ISA::Inst_VOP3__V_CMP_LT_I64::Inst_VOP3__V_CMP_LT_I64
Inst_VOP3__V_CMP_LT_I64(InFmt_VOP3 *)
Definition: instructions.cc:21906
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35625
Gcn3ISA::Inst_VOP1__V_CVT_OFF_F32_I4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7761
Gcn3ISA::InFmt_DS
Definition: gpu_decoder.hh:1354
Gcn3ISA::Inst_VOP1__V_RSQ_F32::~Inst_VOP1__V_RSQ_F32
~Inst_VOP1__V_RSQ_F32()
Definition: instructions.cc:8420
Gcn3ISA::Inst_VOP3__V_CMPX_LT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20056
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_PCK_SGN::~Inst_MIMG__IMAGE_LOAD_PCK_SGN
~Inst_MIMG__IMAGE_LOAD_PCK_SGN()
Definition: instructions.cc:37758
Gcn3ISA::Inst_SOP1__S_BITSET1_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2588
Wavefront::wrLmReqsInPipe
int wrLmReqsInPipe
Definition: wavefront.hh:184
Gcn3ISA::Inst_VOP1__V_NOT_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8671
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:17938
Gcn3ISA::Inst_VOP1__V_SQRT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9108
Gcn3ISA::Inst_MIMG__IMAGE_STORE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37864
Gcn3ISA::Inst_VOP3__V_BFE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27967
Gcn3ISA::Inst_VOP3__V_CVT_F16_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25564
Gcn3ISA::Inst_VOP2__V_SUB_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6942
Gcn3ISA::Inst_VOPC__V_CMPX_LE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15071
Gcn3ISA::Inst_VOP3__V_MIN3_F32::Inst_VOP3__V_MIN3_F32
Inst_VOP3__V_MIN3_F32(InFmt_VOP3 *)
Definition: instructions.cc:28310
ComputeUnit
Definition: compute_unit.hh:200
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37452
Gcn3ISA::Inst_VOP3__V_CMPX_F_F64::~Inst_VOP3__V_CMPX_F_F64
~Inst_VOP3__V_CMPX_F_F64()
Definition: instructions.cc:18567
Gcn3ISA::Inst_VOPC__V_CMP_NLE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11922
Gcn3ISA::Inst_VOP3__V_FREXP_MANT_F16::~Inst_VOP3__V_FREXP_MANT_F16
~Inst_VOP3__V_FREXP_MANT_F16()
Definition: instructions.cc:27399
Gcn3ISA::Inst_VOP3__V_ADDC_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24438
Gcn3ISA::Inst_SOP2__S_LSHR_B32::Inst_SOP2__S_LSHR_B32
Inst_SOP2__S_LSHR_B32(InFmt_SOP2 *)
Definition: instructions.cc:953
Gcn3ISA::Inst_SOP2__S_ABSDIFF_I32::~Inst_SOP2__S_ABSDIFF_I32
~Inst_SOP2__S_ABSDIFF_I32()
Definition: instructions.cc:1316
Gcn3ISA::Inst_VOP3__V_CMPX_F_I64::~Inst_VOP3__V_CMPX_F_I64
~Inst_VOP3__V_CMPX_F_I64()
Definition: instructions.cc:22495
Gcn3ISA::Inst_DS__DS_INC_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31061
Gcn3ISA::Inst_VOP3__V_COS_F32::Inst_VOP3__V_COS_F32
Inst_VOP3__V_COS_F32(InFmt_VOP3 *)
Definition: instructions.cc:26774
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_XOR_X2::Inst_FLAT__FLAT_ATOMIC_XOR_X2
Inst_FLAT__FLAT_ATOMIC_XOR_X2(InFmt_FLAT *)
Definition: instructions.cc:41693
Gcn3ISA::Inst_VOP3__V_CMPX_F_F16::Inst_VOP3__V_CMPX_F_F16
Inst_VOP3__V_CMPX_F_F16(InFmt_VOP3 *)
Definition: instructions.cc:16349
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_SBYTE::Inst_MUBUF__BUFFER_LOAD_SBYTE
Inst_MUBUF__BUFFER_LOAD_SBYTE(InFmt_MUBUF *)
Definition: instructions.cc:35131
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_AND::Inst_MIMG__IMAGE_ATOMIC_AND
Inst_MIMG__IMAGE_ATOMIC_AND(InFmt_MIMG *)
Definition: instructions.cc:38188
Gcn3ISA::Inst_VOP3__V_DIV_SCALE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29180
Gcn3ISA::Inst_VOP3__V_CMPX_GE_U16::~Inst_VOP3__V_CMPX_GE_U16
~Inst_VOP3__V_CMPX_GE_U16()
Definition: instructions.cc:20579
Gcn3ISA::Inst_VOPC__V_CMP_GE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12749
Gcn3ISA::Inst_SOPC__S_CMP_LT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3490
Gcn3ISA::Inst_VOP3__V_CMP_EQ_I32::Inst_VOP3__V_CMP_EQ_I32
Inst_VOP3__V_CMP_EQ_I32(InFmt_VOP3 *)
Definition: instructions.cc:20712
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4::Inst_MIMG__IMAGE_GATHER4
Inst_MIMG__IMAGE_GATHER4(InFmt_MIMG *)
Definition: instructions.cc:38847
Gcn3ISA::Inst_VOP3__V_CMP_EQ_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20725
Gcn3ISA::Inst_VOP2__V_MUL_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5611
Gcn3ISA::Inst_VOP3__V_DIV_SCALE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29236
Gcn3ISA::InFmt_VOP_SDWA::DST_UNUSED
unsigned int DST_UNUSED
Definition: gpu_decoder.hh:1595
Gcn3ISA::Inst_VOP2__V_MUL_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5643
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35473
Gcn3ISA::Inst_VOP1__V_LOG_F16::Inst_VOP1__V_LOG_F16
Inst_VOP1__V_LOG_F16(InFmt_VOP1 *)
Definition: instructions.cc:9134
Gcn3ISA::Inst_DS__DS_ORDERED_COUNT::Inst_DS__DS_ORDERED_COUNT
Inst_DS__DS_ORDERED_COUNT(InFmt_DS *)
Definition: instructions.cc:34146
Gcn3ISA::Inst_VOP3__V_ADD_F64::~Inst_VOP3__V_ADD_F64
~Inst_VOP3__V_ADD_F64()
Definition: instructions.cc:29974
Gcn3ISA::Inst_VOP3__V_DIV_FIXUP_F16::Inst_VOP3__V_DIV_FIXUP_F16
Inst_VOP3__V_DIV_FIXUP_F16(InFmt_VOP3 *)
Definition: instructions.cc:29789
Gcn3ISA::Inst_VOP3__V_LOG_F32::Inst_VOP3__V_LOG_F32
Inst_VOP3__V_LOG_F32(InFmt_VOP3 *)
Definition: instructions.cc:26400
Gcn3ISA::Inst_VOP3__V_MAX3_U32::Inst_VOP3__V_MAX3_U32
Inst_VOP3__V_MAX3_U32(InFmt_VOP3 *)
Definition: instructions.cc:28560
Gcn3ISA::Inst_VOP3__V_FMA_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28057
Gcn3ISA::Inst_VOP3__V_CMPX_GT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21422
Gcn3ISA::Inst_VOP3__V_ALIGNBIT_B32::~Inst_VOP3__V_ALIGNBIT_B32
~Inst_VOP3__V_ALIGNBIT_B32()
Definition: instructions.cc:28223
Gcn3ISA::Inst_VOP1__V_CVT_F64_F32::Inst_VOP1__V_CVT_F64_F32
Inst_VOP1__V_CVT_F64_F32(InFmt_VOP1 *)
Definition: instructions.cc:7796
Gcn3ISA::Inst_VOPC__V_CMPX_GT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12172
Gcn3ISA::Inst_DS__DS_READ_B64::Inst_DS__DS_READ_B64
Inst_DS__DS_READ_B64(InFmt_DS *)
Definition: instructions.cc:33506
Gcn3ISA::Inst_SOP1__S_FF0_I32_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2308
Gcn3ISA::Inst_VOP3__V_CMPX_NE_I64::Inst_VOP3__V_CMPX_NE_I64
Inst_VOP3__V_CMPX_NE_I64(InFmt_VOP3 *)
Definition: instructions.cc:22688
Gcn3ISA::Inst_DS__DS_MSKOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31223
Gcn3ISA::Inst_VOP1__V_RSQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9129
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4591
Gcn3ISA::Inst_VOP3__V_CMP_NLE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16278
Gcn3ISA::Inst_SOP1__S_FF0_I32_B64::Inst_SOP1__S_FF0_I32_B64
Inst_SOP1__S_FF0_I32_B64(InFmt_SOP1 *)
Definition: instructions.cc:2294
Gcn3ISA::Inst_DS__DS_RSUB_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31703
Gcn3ISA::Inst_VOP3__V_BFE_I32::~Inst_VOP3__V_BFE_I32
~Inst_VOP3__V_BFE_I32()
Definition: instructions.cc:27960
Gcn3ISA::Inst_VOP3__V_CMPX_LG_F16::Inst_VOP3__V_CMPX_LG_F16
Inst_VOP3__V_CMPX_LG_F16(InFmt_VOP3 *)
Definition: instructions.cc:16453
Gcn3ISA::Inst_DS__DS_ADD_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33148
Gcn3ISA::Inst_VOP3__V_DIV_FMAS_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29382
Gcn3ISA::Inst_VOP3__V_FLOOR_F32::Inst_VOP3__V_FLOOR_F32
Inst_VOP3__V_FLOOR_F32(InFmt_VOP3 *)
Definition: instructions.cc:26324
Wavefront::getStatus
status_e getStatus()
Definition: wavefront.hh:135
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10256
Gcn3ISA::Inst_VINTRP__V_INTERP_P1_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15474
Gcn3ISA::Inst_VOPC__V_CMPX_F_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12045
Gcn3ISA::Inst_DS__DS_MIN_RTN_F32::Inst_DS__DS_MIN_RTN_F32
Inst_DS__DS_MIN_RTN_F32(InFmt_DS *)
Definition: instructions.cc:31982
Gcn3ISA::Inst_VOPC__V_CMP_GE_F64::Inst_VOPC__V_CMP_GE_F64
Inst_VOPC__V_CMP_GE_F64(InFmt_VOPC *)
Definition: instructions.cc:11714
Gcn3ISA::Inst_MUBUF__BUFFER_WBINVL1_VOL::Inst_MUBUF__BUFFER_WBINVL1_VOL
Inst_MUBUF__BUFFER_WBINVL1_VOL(InFmt_MUBUF *)
Definition: instructions.cc:36389
Gcn3ISA::Inst_VOP3__V_CMPX_LT_F16::~Inst_VOP3__V_CMPX_LT_F16
~Inst_VOP3__V_CMPX_LT_F16()
Definition: instructions.cc:16385
Gcn3ISA::Inst_VOP2__V_ADDC_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6651
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40164
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_LDS_DWORD::~Inst_MUBUF__BUFFER_STORE_LDS_DWORD
~Inst_MUBUF__BUFFER_STORE_LDS_DWORD()
Definition: instructions.cc:36325
Gcn3ISA::Inst_VOP2__V_SUBREV_U32::~Inst_VOP2__V_SUBREV_U32
~Inst_VOP2__V_SUBREV_U32()
Definition: instructions.cc:6602
Gcn3ISA::Inst_VOPC__V_CMPX_U_F16::~Inst_VOPC__V_CMPX_U_F16
~Inst_VOPC__V_CMPX_U_F16()
Definition: instructions.cc:10359
Gcn3ISA::Inst_VOP1__V_CVT_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7603
Gcn3ISA::Inst_VOP3__V_MAX3_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28572
Gcn3ISA::Inst_EXP__EXP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39409
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41323
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE::~Inst_MIMG__IMAGE_SAMPLE
~Inst_MIMG__IMAGE_SAMPLE()
Definition: instructions.cc:38324
Gcn3ISA::Inst_SOPC__S_CMP_EQ_I32::Inst_SOPC__S_CMP_EQ_I32
Inst_SOPC__S_CMP_EQ_I32(InFmt_SOPC *)
Definition: instructions.cc:3218
Gcn3ISA::Inst_VOPC__V_CMPX_F_I16::~Inst_VOPC__V_CMPX_F_I16
~Inst_VOPC__V_CMPX_F_I16()
Definition: instructions.cc:13038
Gcn3ISA::Inst_VOP3__V_LSHRREV_B32::~Inst_VOP3__V_LSHRREV_B32
~Inst_VOP3__V_LSHRREV_B32()
Definition: instructions.cc:23982
Gcn3ISA::Inst_VOPC__V_CMPX_LT_I16::Inst_VOPC__V_CMPX_LT_I16
Inst_VOPC__V_CMPX_LT_I16(InFmt_VOPC *)
Definition: instructions.cc:13059
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34814
Gcn3ISA::Inst_SOP1__S_BREV_B64::Inst_SOP1__S_BREV_B64
Inst_SOP1__S_BREV_B64(InFmt_SOP1 *)
Definition: instructions.cc:2132
Gcn3ISA::Inst_VOP3__V_CMP_LT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17773
Gcn3ISA::Inst_VOP3__V_CMPX_LT_F64::~Inst_VOP3__V_CMPX_LT_F64
~Inst_VOP3__V_CMPX_LT_F64()
Definition: instructions.cc:18596
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CL_O::Inst_MIMG__IMAGE_SAMPLE_CL_O
Inst_MIMG__IMAGE_SAMPLE_CL_O(InFmt_MIMG *)
Definition: instructions.cc:38596
Gcn3ISA::Inst_VOP3__V_CMPX_NLG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17546
Gcn3ISA::Inst_VOP3__V_CMP_NGT_F16::Inst_VOP3__V_CMP_NGT_F16
Inst_VOP3__V_CMP_NGT_F16(InFmt_VOP3 *)
Definition: instructions.cc:16245
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_USHORT::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35236
Gcn3ISA::Inst_VOP3
Definition: op_encodings.hh:353
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:294
Gcn3ISA::Inst_SOPC__S_CMP_EQ_I32::~Inst_SOPC__S_CMP_EQ_I32
~Inst_SOPC__S_CMP_EQ_I32()
Definition: instructions.cc:3224
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_DEC::~Inst_MUBUF__BUFFER_ATOMIC_DEC
~Inst_MUBUF__BUFFER_ATOMIC_DEC()
Definition: instructions.cc:36784
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP::~Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP
~Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP()
Definition: instructions.cc:36485
Shader::dispatcher
GPUDispatcher & dispatcher()
Definition: shader.cc:98
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_O::~Inst_MIMG__IMAGE_GATHER4_C_O
~Inst_MIMG__IMAGE_GATHER4_C_O()
Definition: instructions.cc:39153
Gcn3ISA::Inst_DS__DS_SUB_SRC2_U32::Inst_DS__DS_SUB_SRC2_U32
Inst_DS__DS_SUB_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:33733
Gcn3ISA::InFmt_SOP2
Definition: gpu_decoder.hh:1495
Gcn3ISA::Inst_VOP3__V_CMPX_NE_U32::Inst_VOP3__V_CMPX_NE_U32
Inst_VOP3__V_CMPX_NE_U32(InFmt_VOP3 *)
Definition: instructions.cc:21766
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38591
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:34768
Gcn3ISA::Inst_VOP3__V_CMP_O_F16::~Inst_VOP3__V_CMP_O_F16
~Inst_VOP3__V_CMP_O_F16()
Definition: instructions.cc:16178
Gcn3ISA::Inst_VOP1__V_CVT_F32_F64::Inst_VOP1__V_CVT_F32_F64
Inst_VOP1__V_CVT_F32_F64(InFmt_VOP1 *)
Definition: instructions.cc:7766
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38641
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW::~Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW
~Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW()
Definition: instructions.cc:34625
Gcn3ISA::Inst_VOP3__V_CMPX_GE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21508
Gcn3ISA::Inst_SOP1__S_XOR_SAVEEXEC_B64::Inst_SOP1__S_XOR_SAVEEXEC_B64
Inst_SOP1__S_XOR_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2779
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C::Inst_MIMG__IMAGE_GATHER4_C
Inst_MIMG__IMAGE_GATHER4_C(InFmt_MIMG *)
Definition: instructions.cc:38944
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_XOR_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37092
Gcn3ISA::Inst_VOP3__V_MIN3_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28381
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_DEC_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41840
Gcn3ISA::Inst_VOP3__V_CMP_LE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16781
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE2::~Inst_VOP1__V_CVT_F32_UBYTE2
~Inst_VOP1__V_CVT_F32_UBYTE2()
Definition: instructions.cc:7893
Gcn3ISA::Inst_VOP3__V_CMP_T_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19697
Gcn3ISA::Inst_VOP3__V_CMP_EQ_F16::~Inst_VOP3__V_CMP_EQ_F16
~Inst_VOP3__V_CMP_EQ_F16()
Definition: instructions.cc:16084
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:39231
Gcn3ISA::InFmt_MUBUF::IDXEN
unsigned int IDXEN
Definition: gpu_decoder.hh:1455
Gcn3ISA::Inst_DS__DS_GWS_SEMA_BR::~Inst_DS__DS_GWS_SEMA_BR
~Inst_DS__DS_GWS_SEMA_BR()
Definition: instructions.cc:34076
Gcn3ISA::Inst_VOP3__V_MAD_I64_I32::~Inst_VOP3__V_MAD_I64_I32
~Inst_VOP3__V_MAD_I64_I32()
Definition: instructions.cc:29562
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:37598
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:25665
Gcn3ISA::Inst_VOP3__V_CNDMASK_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23140
Gcn3ISA::Inst_VOP2__V_MAX_F16::~Inst_VOP2__V_MAX_F16
~Inst_VOP2__V_MAX_F16()
Definition: instructions.cc:7125
Gcn3ISA::Inst_FLAT__FLAT_LOAD_SSHORT::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39651
Gcn3ISA::Inst_SOP1__S_BCNT1_I32_B32::Inst_SOP1__S_BCNT1_I32_B32
Inst_SOP1__S_BCNT1_I32_B32(InFmt_SOP1 *)
Definition: instructions.cc:2212
Gcn3ISA::InFmt_MUBUF::LDS
unsigned int LDS
Definition: gpu_decoder.hh:1458
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39947
Gcn3ISA::Inst_DS__DS_READ_I16::Inst_DS__DS_READ_I16
Inst_DS__DS_READ_I16(InFmt_DS *)
Definition: instructions.cc:32331
Gcn3ISA::Inst_VOP3__V_CMPX_GE_U32::~Inst_VOP3__V_CMPX_GE_U32
~Inst_VOP3__V_CMPX_GE_U32()
Definition: instructions.cc:21816
Gcn3ISA::Inst_VOP3__V_OR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24156
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34637
FetchUnit::flushBuf
void flushBuf(int wfSlotId)
Definition: fetch_unit.cc:308
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:38497
Gcn3ISA::Inst_VOPC__V_CMPX_NLG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12375
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:38762
Gcn3ISA::Inst_VOP3__V_MAD_I16::~Inst_VOP3__V_MAD_I16
~Inst_VOP3__V_MAD_I16()
Definition: instructions.cc:29671
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D_O::Inst_MIMG__IMAGE_SAMPLE_D_O
Inst_MIMG__IMAGE_SAMPLE_D_O(InFmt_MIMG *)
Definition: instructions.cc:38613
Gcn3ISA::Inst_VOP3__V_SUB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24345
Gcn3ISA::Inst_DS__DS_CONDXCHG32_RTN_B64::~Inst_DS__DS_CONDXCHG32_RTN_B64
~Inst_DS__DS_CONDXCHG32_RTN_B64()
Definition: instructions.cc:33703
Gcn3ISA::Inst_VOP3__V_CMP_LT_U16::~Inst_VOP3__V_CMP_LT_U16
~Inst_VOP3__V_CMP_LT_U16()
Definition: instructions.cc:19744
Gcn3ISA::Inst_VOPC__V_CMPX_NLE_F16::~Inst_VOPC__V_CMPX_NLE_F16
~Inst_VOPC__V_CMPX_NLE_F16()
Definition: instructions.cc:10432
Gcn3ISA::Inst_DS__DS_MIN_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34309
Gcn3ISA::Inst_VOPC__V_CMP_LE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12656
Gcn3ISA::Inst_DS__DS_WRITE2ST64_B32::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:31403
Gcn3ISA::Inst_VOP3__V_FLOOR_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26337
Gcn3ISA::Inst_VOP1__V_CVT_I16_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9066
Gcn3ISA::Inst_DS__DS_WRXCHG2ST64_RTN_B32::Inst_DS__DS_WRXCHG2ST64_RTN_B32
Inst_DS__DS_WRXCHG2ST64_RTN_B32(InFmt_DS *)
Definition: instructions.cc:31923
Gcn3ISA::Inst_VOP3__V_CMP_U_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18158
Gcn3ISA::Inst_SOP2__S_XNOR_B32::Inst_SOP2__S_XNOR_B32
Inst_SOP2__S_XNOR_B32(InFmt_SOP2 *)
Definition: instructions.cc:833
Gcn3ISA::Inst_VOP3__V_EXP_F32::Inst_VOP3__V_EXP_F32
Inst_VOP3__V_EXP_F32(InFmt_VOP3 *)
Definition: instructions.cc:26362
Gcn3ISA::Inst_FLAT__FLAT_STORE_SHORT::Inst_FLAT__FLAT_STORE_SHORT
Inst_FLAT__FLAT_STORE_SHORT(InFmt_FLAT *)
Definition: instructions.cc:40043
Gcn3ISA::Inst_VOP3__V_CVT_U16_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27264
Gcn3ISA::Inst_VOPC__V_CMP_GT_F32::~Inst_VOPC__V_CMP_GT_F32
~Inst_VOPC__V_CMP_GT_F32()
Definition: instructions.cc:10627
Gcn3ISA::Inst_VOPC__V_CMPX_F_F64::Inst_VOPC__V_CMPX_F_F64
Inst_VOPC__V_CMPX_F_F64(InFmt_VOPC *)
Definition: instructions.cc:12032
Gcn3ISA::Inst_VOP3__V_CMP_F_U64::Inst_VOP3__V_CMP_F_U64
Inst_VOP3__V_CMP_F_U64(InFmt_VOP3 *)
Definition: instructions.cc:22184
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SUB::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40755
Gcn3ISA::Inst_DS__DS_CMPST_RTN_B32::Inst_DS__DS_CMPST_RTN_B32
Inst_DS__DS_CMPST_RTN_B32(InFmt_DS *)
Definition: instructions.cc:31940
Gcn3ISA::Inst_VOP3__V_LSHRREV_B32::Inst_VOP3__V_LSHRREV_B32
Inst_VOP3__V_LSHRREV_B32(InFmt_VOP3 *)
Definition: instructions.cc:23976
Gcn3ISA::Inst_FLAT::instData
InFmt_FLAT instData
Definition: op_encodings.hh:829
Gcn3ISA::Inst_VOP3__V_FRACT_F64::~Inst_VOP3__V_FRACT_F64
~Inst_VOP3__V_FRACT_F64()
Definition: instructions.cc:27078
Wavefront::outstandingReqs
int outstandingReqs
Definition: wavefront.hh:169
Wavefront::computeUnit
ComputeUnit * computeUnit
Definition: wavefront.hh:104
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_OR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40976
Gcn3ISA::Inst_SOPC__S_CMP_GE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3464
Gcn3ISA::Inst_VOP3__V_CMP_NLG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17012
Gcn3ISA::Inst_VOP3__V_MAC_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24662
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:39119
Gcn3ISA::Inst_VOP1__V_TRUNC_F32::Inst_VOP1__V_TRUNC_F32
Inst_VOP1__V_TRUNC_F32(InFmt_VOP1 *)
Definition: instructions.cc:8173
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:4417
Gcn3ISA::Inst_VOP3__V_CMPX_NGE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17512
Gcn3ISA::Inst_VOPC__V_CMPX_LT_F64::Inst_VOPC__V_CMPX_LT_F64
Inst_VOPC__V_CMPX_LT_F64(InFmt_VOPC *)
Definition: instructions.cc:12060
Gcn3ISA::Inst_SOPC__S_CMP_EQ_U64::~Inst_SOPC__S_CMP_EQ_U64
~Inst_SOPC__S_CMP_EQ_U64()
Definition: instructions.cc:3684
Gcn3ISA::Inst_DS__DS_READ2ST64_B32::Inst_DS__DS_READ2ST64_B32
Inst_DS__DS_READ2ST64_B32(InFmt_DS *)
Definition: instructions.cc:32184
Gcn3ISA::Inst_VOP3__V_ADDC_U32::Inst_VOP3__V_ADDC_U32
Inst_VOP3__V_ADDC_U32(InFmt_VOP3_SDST_ENC *)
Definition: instructions.cc:24420
Gcn3ISA::Inst_VOP3__V_CMP_NE_U64::Inst_VOP3__V_CMP_NE_U64
Inst_VOP3__V_CMP_NE_U64(InFmt_VOP3 *)
Definition: instructions.cc:22378
ComputeUnit::decMaxBarrierCnt
void decMaxBarrierCnt(int bar_id)
Definition: compute_unit.cc:687
Gcn3ISA::Inst_VOPC__V_CMP_TRU_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12018
Gcn3ISA::Inst_VOPC__V_CMP_F_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12806
Gcn3ISA::Inst_VOP2__V_MAC_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6358
Gcn3ISA::Inst_VOP2__V_ADD_U32::~Inst_VOP2__V_ADD_U32
~Inst_VOP2__V_ADD_U32()
Definition: instructions.cc:6482
Gcn3ISA::Inst_SOP2__S_CSELECT_B32::~Inst_SOP2__S_CSELECT_B32
~Inst_SOP2__S_CSELECT_B32()
Definition: instructions.cc:363
Gcn3ISA::Inst_VOP3__V_NOP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25217
Gcn3ISA::Inst_VOP3__V_MIN3_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28323
Gcn3ISA::Inst_VOP1__V_LOG_LEGACY_F32::Inst_VOP1__V_LOG_LEGACY_F32
Inst_VOP1__V_LOG_LEGACY_F32(InFmt_VOP1 *)
Definition: instructions.cc:9376
Gcn3ISA::Inst_SOPP__S_ICACHE_INV::~Inst_SOPP__S_ICACHE_INV
~Inst_SOPP__S_ICACHE_INV()
Definition: instructions.cc:4275
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_INC::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38287
Gcn3ISA::Inst_VOP3__V_FRACT_F16::Inst_VOP3__V_FRACT_F16
Inst_VOP3__V_FRACT_F16(InFmt_VOP3 *)
Definition: instructions.cc:27503
Gcn3ISA::Inst_VOP1__V_RCP_IFLAG_F32::~Inst_VOP1__V_RCP_IFLAG_F32
~Inst_VOP1__V_RCP_IFLAG_F32()
Definition: instructions.cc:8390
Gcn3ISA::Inst_VOPC__V_CMPX_T_I64::Inst_VOPC__V_CMPX_T_I64
Inst_VOPC__V_CMPX_T_I64(InFmt_VOPC *)
Definition: instructions.cc:15187
Gcn3ISA::Inst_VOP2::instData
InFmt_VOP2 instData
Definition: op_encodings.hh:283
Gcn3ISA::Inst_VOP2__V_LSHLREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6147
Wavefront::S_RETURNING
@ S_RETURNING
Definition: wavefront.hh:66
Gcn3ISA::Inst_DS__DS_MIN_RTN_U64::Inst_DS__DS_MIN_RTN_U64
Inst_DS__DS_MIN_RTN_U64(InFmt_DS *)
Definition: instructions.cc:33263
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX2::~Inst_FLAT__FLAT_LOAD_DWORDX2
~Inst_FLAT__FLAT_LOAD_DWORDX2()
Definition: instructions.cc:39740
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_U16::~Inst_VOPC__V_CMPX_EQ_U16
~Inst_VOPC__V_CMPX_EQ_U16()
Definition: instructions.cc:13343
Gcn3ISA::Inst_VOP3__V_CMPX_TRU_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19392
Gcn3ISA::Inst_VOPC__V_CMPX_GT_F64::Inst_VOPC__V_CMPX_GT_F64
Inst_VOPC__V_CMPX_GT_F64(InFmt_VOPC *)
Definition: instructions.cc:12159
Gcn3ISA::Inst_VOPC__V_CMP_F_U32::~Inst_VOPC__V_CMP_F_U32
~Inst_VOPC__V_CMP_F_U32()
Definition: instructions.cc:13768
Gcn3ISA::Inst_VOP3__V_CMPX_NLE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16602
Gcn3ISA::Inst_VOP3__V_CMP_U_F64::Inst_VOP3__V_CMP_U_F64
Inst_VOP3__V_CMP_U_F64(InFmt_VOP3 *)
Definition: instructions.cc:18145
Gcn3ISA::Inst_VOP3__V_CMPX_O_F16::Inst_VOP3__V_CMPX_O_F16
Inst_VOP3__V_CMPX_O_F16(InFmt_VOP3 *)
Definition: instructions.cc:16491
Gcn3ISA::Inst_SOP1::instData
InFmt_SOP1 instData
Definition: op_encodings.hh:134
Gcn3ISA::Inst_VOP2__V_MAC_F32::~Inst_VOP2__V_MAC_F32
~Inst_VOP2__V_MAC_F32()
Definition: instructions.cc:6352
Gcn3ISA::Inst_VOPC__V_CMP_NLT_F32::Inst_VOPC__V_CMP_NLT_F32
Inst_VOPC__V_CMP_NLT_F32(InFmt_VOPC *)
Definition: instructions.cc:10944
Gcn3ISA::Inst_VOPC__V_CMP_GT_F64::~Inst_VOPC__V_CMP_GT_F64
~Inst_VOPC__V_CMP_GT_F64()
Definition: instructions.cc:11656
Gcn3ISA::VecElemF64
double VecElemF64
Definition: registers.hh:169
Gcn3ISA::Inst_VOPC__V_CMPX_LT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11044
Gcn3ISA::Inst_VOPC__V_CMPX_O_F32::Inst_VOPC__V_CMPX_O_F32
Inst_VOPC__V_CMPX_O_F32(InFmt_VOPC *)
Definition: instructions.cc:11230
Gcn3ISA::Inst_VOP2__V_LSHLREV_B16::Inst_VOP2__V_LSHLREV_B16
Inst_VOP2__V_LSHLREV_B16(InFmt_VOP2 *)
Definition: instructions.cc:7023
Gcn3ISA::Inst_VOP1__V_CEIL_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8065
Gcn3ISA::Inst_DS__DS_INC_U32::~Inst_DS__DS_INC_U32
~Inst_DS__DS_INC_U32()
Definition: instructions.cc:31053
Gcn3ISA::Inst_VOP3__V_MUL_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23446
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE2::~Inst_VOP3__V_CVT_F32_UBYTE2
~Inst_VOP3__V_CVT_F32_UBYTE2()
Definition: instructions.cc:25858
Gcn3ISA::Inst_VOP3__V_SUBREV_U16::Inst_VOP3__V_SUBREV_U16
Inst_VOP3__V_SUBREV_U16(InFmt_VOP3 *)
Definition: instructions.cc:24749
Gcn3ISA::Inst_SMEM__S_STORE_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5150
Gcn3ISA::Inst_VOPC__V_CMPX_LE_I16::Inst_VOPC__V_CMPX_LE_I16
Inst_VOPC__V_CMPX_LE_I16(InFmt_VOPC *)
Definition: instructions.cc:13123
Gcn3ISA::Inst_VOP3__V_CMP_GE_U64::~Inst_VOP3__V_CMP_GE_U64
~Inst_VOP3__V_CMP_GE_U64()
Definition: instructions.cc:22427
Gcn3ISA::Inst_VOP3__V_CMPX_LE_F32::~Inst_VOP3__V_CMPX_LE_F32
~Inst_VOP3__V_CMPX_LE_F32()
Definition: instructions.cc:17297
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE3::~Inst_VOP1__V_CVT_F32_UBYTE3
~Inst_VOP1__V_CVT_F32_UBYTE3()
Definition: instructions.cc:7923
Gcn3ISA::Inst_VOP3__V_CMP_CLASS_F32::Inst_VOP3__V_CMP_CLASS_F32
Inst_VOP3__V_CMP_CLASS_F32(InFmt_VOP3 *)
Definition: instructions.cc:15516
Gcn3ISA::Inst_VOPC__V_CMP_CLASS_F32::Inst_VOPC__V_CMP_CLASS_F32
Inst_VOPC__V_CMP_CLASS_F32(InFmt_VOPC *)
Definition: instructions.cc:9406
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_AND_X2::Inst_MUBUF__BUFFER_ATOMIC_AND_X2
Inst_MUBUF__BUFFER_ATOMIC_AND_X2(InFmt_MUBUF *)
Definition: instructions.cc:37017
Gcn3ISA::Inst_DS__DS_MAX_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31811
Gcn3ISA::Inst_VOP3__V_TRUNC_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27480
Gcn3ISA::Inst_VOP3__V_SAD_HI_U8::~Inst_VOP3__V_SAD_HI_U8
~Inst_VOP3__V_SAD_HI_U8()
Definition: instructions.cc:28807
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:4859
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34794
Gcn3ISA::Inst_VOP3__V_CMPX_NLG_F32::Inst_VOP3__V_CMPX_NLG_F32
Inst_VOP3__V_CMPX_NLG_F32(InFmt_VOP3 *)
Definition: instructions.cc:17532
Gcn3ISA::Inst_DS__DS_NOP::~Inst_DS__DS_NOP
~Inst_DS__DS_NOP()
Definition: instructions.cc:31505
Gcn3ISA::Inst_VOP3__V_CMPX_LG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18826
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMIN_X2::~Inst_FLAT__FLAT_ATOMIC_SMIN_X2
~Inst_FLAT__FLAT_ATOMIC_SMIN_X2()
Definition: instructions.cc:41550
Gcn3ISA::Inst_VOP3__V_CMP_EQ_U64::Inst_VOP3__V_CMP_EQ_U64
Inst_VOP3__V_CMP_EQ_U64(InFmt_VOP3 *)
Definition: instructions.cc:22252
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX4::Inst_SMEM__S_LOAD_DWORDX4
Inst_SMEM__S_LOAD_DWORDX4(InFmt_SMEM *)
Definition: instructions.cc:4577
Gcn3ISA::Inst_VOP2__V_CNDMASK_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5454
Gcn3ISA::Inst_VOPC__V_CMPX_CLASS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9543
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE1::Inst_VOP1__V_CVT_F32_UBYTE1
Inst_VOP1__V_CVT_F32_UBYTE1(InFmt_VOP1 *)
Definition: instructions.cc:7856
Gcn3ISA::Inst_VOP2__V_LSHRREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6084
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:39214
Gcn3ISA::Inst_VOP1__V_FLOOR_F64::~Inst_VOP1__V_FLOOR_F64
~Inst_VOP1__V_FLOOR_F64()
Definition: instructions.cc:8119
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B::~Inst_MIMG__IMAGE_SAMPLE_B
~Inst_MIMG__IMAGE_SAMPLE_B()
Definition: instructions.cc:38405
Gcn3ISA::Inst_DS__DS_DEC_SRC2_U64::~Inst_DS__DS_DEC_SRC2_U64
~Inst_DS__DS_DEC_SRC2_U64()
Definition: instructions.cc:34242
Gcn3ISA::Inst_DS__DS_GWS_SEMA_P::Inst_DS__DS_GWS_SEMA_P
Inst_DS__DS_GWS_SEMA_P(InFmt_DS *)
Definition: instructions.cc:34086
Gcn3ISA::Inst_VOPC__V_CMP_LE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10601
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:30941
Gcn3ISA::Inst_VOPC__V_CMP_F_U64::~Inst_VOPC__V_CMP_F_U64
~Inst_VOPC__V_CMP_F_U64()
Definition: instructions.cc:14736
Gcn3ISA::Inst_SOP1__S_XNOR_SAVEEXEC_B64::~Inst_SOP1__S_XNOR_SAVEEXEC_B64
~Inst_SOP1__S_XNOR_SAVEEXEC_B64()
Definition: instructions.cc:2946
Gcn3ISA::Inst_SOP2
Definition: op_encodings.hh:72
Gcn3ISA::Inst_VOP3__V_CMPX_LE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22929
Gcn3ISA::Inst_VOPC__V_CMP_EQ_I32::~Inst_VOPC__V_CMP_EQ_I32
~Inst_VOPC__V_CMP_EQ_I32()
Definition: instructions.cc:13587
Gcn3ISA::Inst_SOPK__S_CMPK_LT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1668
Gcn3ISA::Inst_SMEM__S_LOAD_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:4506
Gcn3ISA::Inst_SMEM__S_LOAD_DWORD::execute
void execute(GPUDynInstPtr) override
Read 1 dword from scalar data cache.
Definition: instructions.cc:4475
Gcn3ISA::Inst_VOP3__V_RNDNE_F64::Inst_VOP3__V_RNDNE_F64
Inst_VOP3__V_RNDNE_F64(InFmt_VOP3 *)
Definition: instructions.cc:26095
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:7725
Wavefront::scalarOutstandingReqsRdGm
int scalarOutstandingReqsRdGm
Definition: wavefront.hh:179
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5244
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SWAP_X2::Inst_FLAT__FLAT_ATOMIC_SWAP_X2
Inst_FLAT__FLAT_ATOMIC_SWAP_X2(InFmt_FLAT *)
Definition: instructions.cc:41200
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39360
Gcn3ISA::Inst_SOP2__S_ASHR_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1029
Gcn3ISA::Inst_DS__DS_APPEND::~Inst_DS__DS_APPEND
~Inst_DS__DS_APPEND()
Definition: instructions.cc:34136
Gcn3ISA::Inst_SOP2__S_ADD_I32::~Inst_SOP2__S_ADD_I32
~Inst_SOP2__S_ADD_I32()
Definition: instructions.cc:114
Gcn3ISA::Inst_DS__DS_WRITE2_B64::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:33020
Gcn3ISA::Inst_VOP1__V_RCP_F16::~Inst_VOP1__V_RCP_F16
~Inst_VOP1__V_RCP_F16()
Definition: instructions.cc:9078
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:22966
Gcn3ISA::InFmt_SMEM::IMM
unsigned int IMM
Definition: gpu_decoder.hh:1479
Gcn3ISA::Inst_VOP3__V_MUL_F64::~Inst_VOP3__V_MUL_F64
~Inst_VOP3__V_MUL_F64()
Definition: instructions.cc:30071
Gcn3ISA::Inst_VOPC__V_CMP_U_F64::Inst_VOPC__V_CMP_U_F64
Inst_VOPC__V_CMP_U_F64(InFmt_VOPC *)
Definition: instructions.cc:11779
Gcn3ISA::Inst_VOP1__V_SQRT_F16::Inst_VOP1__V_SQRT_F16
Inst_VOP1__V_SQRT_F16(InFmt_VOP1 *)
Definition: instructions.cc:9092
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37318
Gcn3ISA::Inst_VOP2__V_ASHRREV_I32::~Inst_VOP2__V_ASHRREV_I32
~Inst_VOP2__V_ASHRREV_I32()
Definition: instructions.cc:6109
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORD::Inst_FLAT__FLAT_STORE_DWORD
Inst_FLAT__FLAT_STORE_DWORD(InFmt_FLAT *)
Definition: instructions.cc:40114
Gcn3ISA::Inst_DS__DS_WRXCHG2_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31918
Gcn3ISA::Inst_VOP3__V_CMP_U_F16::~Inst_VOP3__V_CMP_U_F16
~Inst_VOP3__V_CMP_U_F16()
Definition: instructions.cc:16196
Gcn3ISA::Inst_VOPC__V_CMPX_F_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13044
Gcn3ISA::Inst_VOP3__V_XOR_B32::~Inst_VOP3__V_XOR_B32
~Inst_VOP3__V_XOR_B32()
Definition: instructions.cc:24191
Gcn3ISA::Inst_SOP2__S_OR_B32::~Inst_SOP2__S_OR_B32
~Inst_SOP2__S_OR_B32()
Definition: instructions.cc:479
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37355
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_LZ::Inst_MIMG__IMAGE_SAMPLE_LZ
Inst_MIMG__IMAGE_SAMPLE_LZ(InFmt_MIMG *)
Definition: instructions.cc:38432
Gcn3ISA::Inst_VOPC__V_CMP_LE_F32::~Inst_VOPC__V_CMP_LE_F32
~Inst_VOPC__V_CMP_LE_F32()
Definition: instructions.cc:10595
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38740
Gcn3ISA::Inst_DS__DS_RSUB_U64::~Inst_DS__DS_RSUB_U64
~Inst_DS__DS_RSUB_U64()
Definition: instructions.cc:32714
Gcn3ISA::Inst_VOP3__V_DIV_FMAS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29320
Gcn3ISA::Inst_VOP3__V_MIN_I16::~Inst_VOP3__V_MIN_I16
~Inst_VOP3__V_MIN_I16()
Definition: instructions.cc:25145
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_U64::~Inst_VOP3__V_CMPX_EQ_U64
~Inst_VOP3__V_CMPX_EQ_U64()
Definition: instructions.cc:22880
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:39348
Gcn3ISA::Inst_VOP1__V_CEIL_F16::~Inst_VOP1__V_CEIL_F16
~Inst_VOP1__V_CEIL_F16()
Definition: instructions.cc:9245
Gcn3ISA::Inst_DS__DS_OR_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33330
Gcn3ISA::Inst_VOP3__V_DIV_FIXUP_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29087
Gcn3ISA::Inst_VOP3__V_CUBEMA_F32::~Inst_VOP3__V_CUBEMA_F32
~Inst_VOP3__V_CUBEMA_F32()
Definition: instructions.cc:27899
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_LDS_DWORD::Inst_MUBUF__BUFFER_STORE_LDS_DWORD
Inst_MUBUF__BUFFER_STORE_LDS_DWORD(InFmt_MUBUF *)
Definition: instructions.cc:36319
Gcn3ISA::Inst_DS__DS_MIN_SRC2_F32::~Inst_DS__DS_MIN_SRC2_F32
~Inst_DS__DS_MIN_SRC2_F32()
Definition: instructions.cc:33971
Gcn3ISA::Inst_VOP3__V_CMPX_U_F16::Inst_VOP3__V_CMPX_U_F16
Inst_VOP3__V_CMPX_U_F16(InFmt_VOP3 *)
Definition: instructions.cc:16511
Gcn3ISA::ScalarRegI32
int32_t ScalarRegI32
Definition: registers.hh:153
Gcn3ISA::Inst_VOP3__V_XOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24198
Gcn3ISA::InFmt_VOPC
Definition: gpu_decoder.hh:1572
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX16::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:4736
Gcn3ISA::Inst_VOP3__V_CMP_F_F64::Inst_VOP3__V_CMP_F_F64
Inst_VOP3__V_CMP_F_F64(InFmt_VOP3 *)
Definition: instructions.cc:17732
Gcn3ISA::Inst_VOP3__V_CMP_NE_U16::Inst_VOP3__V_CMP_NE_U16
Inst_VOP3__V_CMP_NE_U16(InFmt_VOP3 *)
Definition: instructions.cc:19905
Gcn3ISA::Inst_VOP3__V_CMPX_GT_F64::Inst_VOP3__V_CMPX_GT_F64
Inst_VOP3__V_CMPX_GT_F64(InFmt_VOP3 *)
Definition: instructions.cc:18756
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_PCK::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37745
Gcn3ISA::Inst_DS__DS_SUB_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31685
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX3::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35515
Gcn3ISA::Inst_SOP2__S_CBRANCH_G_FORK::Inst_SOP2__S_CBRANCH_G_FORK
Inst_SOP2__S_CBRANCH_G_FORK(InFmt_SOP2 *)
Definition: instructions.cc:1291
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37269
Gcn3ISA::Inst_DS__DS_WRITE2_B64::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:33029
Gcn3ISA::Inst_SOPP__S_CBRANCH_CDBGSYS_OR_USER::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4378
Gcn3ISA::Inst_DS__DS_MSKOR_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33367
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_O::Inst_MIMG__IMAGE_SAMPLE_O
Inst_MIMG__IMAGE_SAMPLE_O(InFmt_MIMG *)
Definition: instructions.cc:38580
Gcn3ISA::Inst_VOPC__V_CMP_LT_F32::~Inst_VOPC__V_CMP_LT_F32
~Inst_VOPC__V_CMP_LT_F32()
Definition: instructions.cc:10531
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2::Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2
Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2(InFmt_MUBUF *)
Definition: instructions.cc:36936
Gcn3ISA::Inst_VOP3__V_CMP_T_U16::~Inst_VOP3__V_CMP_T_U16
~Inst_VOP3__V_CMP_T_U16()
Definition: instructions.cc:19995
Gcn3ISA::Inst_SOPP__S_WAITCNT::~Inst_SOPP__S_WAITCNT
~Inst_SOPP__S_WAITCNT()
Definition: instructions.cc:4149
Gcn3ISA::Inst_SOPK__S_CMPK_GE_U32::~Inst_SOPK__S_CMPK_GE_U32
~Inst_SOPK__S_CMPK_GE_U32()
Definition: instructions.cc:1637
Gcn3ISA::Inst_SOPC__S_SETVSKIP::Inst_SOPC__S_SETVSKIP
Inst_SOPC__S_SETVSKIP(InFmt_SOPC *)
Definition: instructions.cc:3634
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B_CL::Inst_MIMG__IMAGE_GATHER4_B_CL
Inst_MIMG__IMAGE_GATHER4_B_CL(InFmt_MIMG *)
Definition: instructions.cc:38911
Gcn3ISA::Inst_MUBUF::instData
InFmt_MUBUF instData
Definition: op_encodings.hh:711
Gcn3ISA::Inst_VOP3__V_CMPX_NLE_F16::~Inst_VOP3__V_CMPX_NLE_F16
~Inst_VOP3__V_CMPX_NLE_F16()
Definition: instructions.cc:16596
Gcn3ISA::Inst_SOP1__S_ABS_I32::Inst_SOP1__S_ABS_I32
Inst_SOP1__S_ABS_I32(InFmt_SOP1 *)
Definition: instructions.cc:3152
Gcn3ISA::Inst_VOPC__V_CMP_EQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11598
Gcn3ISA::Inst_VOP3__V_FFBL_B32::~Inst_VOP3__V_FFBL_B32
~Inst_VOP3__V_FFBL_B32()
Definition: instructions.cc:26918
Gcn3ISA::Inst_VOPC__V_CMP_F_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14504
Gcn3ISA::Inst_SOPC__S_CMP_GT_U32::Inst_SOPC__S_CMP_GT_U32
Inst_SOPC__S_CMP_GT_U32(InFmt_SOPC *)
Definition: instructions.cc:3426
Gcn3ISA::Inst_VOP3__V_CMPX_CLASS_F64::~Inst_VOP3__V_CMPX_CLASS_F64
~Inst_VOP3__V_CMPX_CLASS_F64()
Definition: instructions.cc:15868
Gcn3ISA::Inst_VOP3__V_SQRT_F32::Inst_VOP3__V_SQRT_F32
Inst_VOP3__V_SQRT_F32(InFmt_VOP3 *)
Definition: instructions.cc:26658
Gcn3ISA::Inst_VOPC__V_CMPX_LE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13135
Gcn3ISA::Inst_VOP3__V_CMP_LE_U32::Inst_VOP3__V_CMP_LE_U32
Inst_VOP3__V_CMP_LE_U32(InFmt_VOP3 *)
Definition: instructions.cc:21058
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:34997
Gcn3ISA::Inst_VOP2__V_LSHLREV_B16::~Inst_VOP2__V_LSHLREV_B16
~Inst_VOP2__V_LSHLREV_B16()
Definition: instructions.cc:7029
Gcn3ISA::Inst_SOPK__S_GETREG_B32::~Inst_SOPK__S_GETREG_B32
~Inst_SOPK__S_GETREG_B32()
Definition: instructions.cc:1784
Gcn3ISA::Inst_VOP3__V_FMA_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29784
Gcn3ISA::Inst_VOP3__V_CMP_LT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19446
Gcn3ISA::Inst_DS__DS_READ_B32::Inst_DS__DS_READ_B32
Inst_DS__DS_READ_B32(InFmt_DS *)
Definition: instructions.cc:32058
Gcn3ISA
classes that represnt vector/scalar operands in GCN3 ISA.
Definition: decoder.cc:41
Gcn3ISA::Inst_VOP3__V_CEIL_F16::Inst_VOP3__V_CEIL_F16
Inst_VOP3__V_CEIL_F16(InFmt_VOP3 *)
Definition: instructions.cc:27449
Gcn3ISA::Inst_VOP1__V_TRUNC_F64::~Inst_VOP1__V_TRUNC_F64
~Inst_VOP1__V_TRUNC_F64()
Definition: instructions.cc:8029
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ
Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ(InFmt_MUBUF *)
Definition: instructions.cc:34707
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:30629
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_PCK::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37740
Gcn3ISA::Inst_SOP2__S_MAX_U32::Inst_SOP2__S_MAX_U32
Inst_SOP2__S_MAX_U32(InFmt_SOP2 *)
Definition: instructions.cc:327
Gcn3ISA::Inst_VOP3__V_MED3_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28674
Gcn3ISA::Inst_DS__DS_RSUB_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34213
Gcn3ISA::Inst_VOPC__V_CMPX_TRU_F64::Inst_VOPC__V_CMPX_TRU_F64
Inst_VOPC__V_CMPX_TRU_F64(InFmt_VOPC *)
Definition: instructions.cc:12528
GPUStaticInst::isAtomicRet
bool isAtomicRet() const
Definition: gpu_static_inst.hh:138
Gcn3ISA::Inst_VOP3__V_CMP_TRU_F64::~Inst_VOP3__V_CMP_TRU_F64
~Inst_VOP3__V_CMP_TRU_F64()
Definition: instructions.cc:18539
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW
Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW(InFmt_MUBUF *)
Definition: instructions.cc:34617
Gcn3ISA::Inst_VOP3__V_CMP_NE_I32::Inst_VOP3__V_CMP_NE_I32
Inst_VOP3__V_CMP_NE_I32(InFmt_VOP3 *)
Definition: instructions.cc:20838
Gcn3ISA::Inst_VOPC__V_CMPX_NEQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12475
Gcn3ISA::Inst_VOP3__V_MAD_I32_I24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27764
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SWAP::Inst_MUBUF__BUFFER_ATOMIC_SWAP
Inst_MUBUF__BUFFER_ATOMIC_SWAP(InFmt_MUBUF *)
Definition: instructions.cc:36445
Gcn3ISA::Inst_VOP3__V_MED3_I32::~Inst_VOP3__V_MED3_I32
~Inst_VOP3__V_MED3_I32()
Definition: instructions.cc:28668
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34697
Gcn3ISA::Inst_DS__DS_READ_U8::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:32306
Gcn3ISA::Inst_VOPC__V_CMP_NE_I32::Inst_VOPC__V_CMP_NE_I32
Inst_VOPC__V_CMP_NE_I32(InFmt_VOPC *)
Definition: instructions.cc:13674
Gcn3ISA::ConstVecOperandU32
VecOperand< VecElemU32, true > ConstVecOperandU32
Definition: operand.hh:738
Gcn3ISA::Inst_DS__DS_READ_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32345
Gcn3ISA::Inst_VOPC__V_CMP_O_F16::~Inst_VOPC__V_CMP_O_F16
~Inst_VOPC__V_CMP_O_F16()
Definition: instructions.cc:10052
Gcn3ISA::Inst_VOP1__V_SQRT_F64::~Inst_VOP1__V_SQRT_F64
~Inst_VOP1__V_SQRT_F64()
Definition: instructions.cc:8563
Gcn3ISA::Inst_VOP2__V_MIN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5896
Gcn3ISA::Inst_DS__DS_MAX_RTN_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33258
Gcn3ISA::Inst_FLAT__FLAT_LOAD_SBYTE::~Inst_FLAT__FLAT_LOAD_SBYTE
~Inst_FLAT__FLAT_LOAD_SBYTE()
Definition: instructions.cc:39494
Gcn3ISA::Inst_VOPC__V_CMP_NE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13924
Gcn3ISA::Inst_VOP3__V_CMP_NLG_F32::~Inst_VOP3__V_CMP_NLG_F32
~Inst_VOP3__V_CMP_NLG_F32()
Definition: instructions.cc:17006
Gcn3ISA::Inst_DS__DS_ADD_U64::~Inst_DS__DS_ADD_U64
~Inst_DS__DS_ADD_U64()
Definition: instructions.cc:32678
Gcn3ISA::Inst_VOP3__V_CMPX_NGE_F64::~Inst_VOP3__V_CMPX_NGE_F64
~Inst_VOP3__V_CMPX_NGE_F64()
Definition: instructions.cc:19049
Gcn3ISA::Inst_SOP2__S_AND_B32::~Inst_SOP2__S_AND_B32
~Inst_SOP2__S_AND_B32()
Definition: instructions.cc:419
Gcn3ISA::Inst_VOP3__V_COS_F32::~Inst_VOP3__V_COS_F32
~Inst_VOP3__V_COS_F32()
Definition: instructions.cc:26781
Gcn3ISA::Inst_VOP2__V_MIN_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7228
Gcn3ISA::Inst_SOP1__S_QUADMASK_B32::Inst_SOP1__S_QUADMASK_B32
Inst_SOP1__S_QUADMASK_B32(InFmt_SOP1 *)
Definition: instructions.cc:2971
Gcn3ISA::VecOperand
Definition: operand.hh:100
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2::~Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2
~Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2()
Definition: instructions.cc:41239
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SUB::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38075
Gcn3ISA::Inst_VOP3__V_AND_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24114
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_OR::~Inst_MUBUF__BUFFER_ATOMIC_OR
~Inst_MUBUF__BUFFER_ATOMIC_OR()
Definition: instructions.cc:36703
Wavefront::releaseBarrier
void releaseBarrier()
Definition: wavefront.cc:1436
Gcn3ISA::Inst_DS__DS_WRITE_B32::Inst_DS__DS_WRITE_B32
Inst_DS__DS_WRITE_B32(InFmt_DS *)
Definition: instructions.cc:31228
Gcn3ISA::Inst_VOP1__V_READFIRSTLANE_B32::~Inst_VOP1__V_READFIRSTLANE_B32
~Inst_VOP1__V_READFIRSTLANE_B32()
Definition: instructions.cc:7380
Gcn3ISA::Inst_VOP3__V_LSHRREV_B64::~Inst_VOP3__V_LSHRREV_B64
~Inst_VOP3__V_LSHRREV_B64()
Definition: instructions.cc:30765
DPRINTF
#define DPRINTF(x,...)
Definition: trace.hh:237
Gcn3ISA::InFmt_MTBUF
Definition: gpu_decoder.hh:1431
Gcn3ISA::Inst_VOP3__V_CMPX_LE_I64::Inst_VOP3__V_CMPX_LE_I64
Inst_VOP3__V_CMPX_LE_I64(InFmt_VOP3 *)
Definition: instructions.cc:22602
Gcn3ISA::Inst_VOP3__V_CMPX_F_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18573
Gcn3ISA::Inst_VOP3__V_CMP_GT_I64::~Inst_VOP3__V_CMP_GT_I64
~Inst_VOP3__V_CMP_GT_I64()
Definition: instructions.cc:22039
Gcn3ISA::Inst_SOP1__S_MOV_B64::Inst_SOP1__S_MOV_B64
Inst_SOP1__S_MOV_B64(InFmt_SOP1 *)
Definition: instructions.cc:1911
Gcn3ISA::Inst_DS__DS_WRXCHG2ST64_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33419
Gcn3ISA::Inst_VOP3__V_ALIGNBIT_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28229
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:8916
Gcn3ISA::Inst_DS__DS_MAX_U64::~Inst_DS__DS_MAX_U64
~Inst_DS__DS_MAX_U64()
Definition: instructions.cc:32824
Gcn3ISA::Inst_MUBUF__BUFFER_WBINVL1::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36353
Gcn3ISA::Inst_SOPK__S_CMPK_LG_I32::Inst_SOPK__S_CMPK_LG_I32
Inst_SOPK__S_CMPK_LG_I32(InFmt_SOPK *)
Definition: instructions.cc:1431
Gcn3ISA::Inst_VOP3__V_CMP_GT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21113
ComputeUnit::maxBarrierCnt
int maxBarrierCnt(int bar_id)
Definition: compute_unit.cc:673
Gcn3ISA::Inst_VOPC__V_CMP_NEQ_F64::~Inst_VOPC__V_CMP_NEQ_F64
~Inst_VOPC__V_CMP_NEQ_F64()
Definition: instructions.cc:11948
Gcn3ISA::Inst_MIMG__IMAGE_STORE_MIP_PCK::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37946
Gcn3ISA::Inst_DS__DS_CMPST_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33440
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37830
Gcn3ISA::Inst_DS__DS_OR_SRC2_B32::~Inst_DS__DS_OR_SRC2_B32
~Inst_DS__DS_OR_SRC2_B32()
Definition: instructions.cc:33910
Gcn3ISA::Inst_VOP3__V_CMPX_CLASS_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15887
Gcn3ISA::InFmt_SOPC
Definition: gpu_decoder.hh:1503
Gcn3ISA::Inst_DS__DS_GWS_BARRIER::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34111
Gcn3ISA::Inst_VOP3__V_CMPX_NGE_F64::Inst_VOP3__V_CMPX_NGE_F64
Inst_VOP3__V_CMPX_NGE_F64(InFmt_VOP3 *)
Definition: instructions.cc:19041
Gcn3ISA::InFmt_VOP_DPP::ROW_MASK
unsigned int ROW_MASK
Definition: gpu_decoder.hh:1589
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_LZ_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38842
Gcn3ISA::Inst_VOPC__V_CMPX_U_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10366
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:39355
Gcn3ISA::Inst_VOPC__V_CMPX_LT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14285
Gcn3ISA::Inst_DS__DS_WRITE2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31303
Gcn3ISA::Inst_VOP3__V_MUL_I32_I24::~Inst_VOP3__V_MUL_I32_I24
~Inst_VOP3__V_MUL_I32_I24()
Definition: instructions.cc:23538
Gcn3ISA::Inst_DS__DS_READ_B128::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34521
Gcn3ISA::Inst_VOP3__V_ASHRREV_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24031
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39175
Gcn3ISA::Inst_DS__DS_XOR_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31865
Gcn3ISA::Inst_VOPC__V_CMP_GE_F16::Inst_VOPC__V_CMP_GE_F16
Inst_VOPC__V_CMP_GE_F16(InFmt_VOPC *)
Definition: instructions.cc:10027
Gcn3ISA::Inst_VOPC__V_CMP_T_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14954
Gcn3ISA::Inst_VOPC__V_CMPX_LE_U16::~Inst_VOPC__V_CMPX_LE_U16
~Inst_VOPC__V_CMPX_LE_U16()
Definition: instructions.cc:13375
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX4::~Inst_FLAT__FLAT_STORE_DWORDX4
~Inst_FLAT__FLAT_STORE_DWORDX4()
Definition: instructions.cc:40343
Gcn3ISA::Inst_FLAT__FLAT_STORE_SHORT::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40093
Gcn3ISA::Inst_SOPK__S_CMPK_LE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1543
Gcn3ISA::quadMask
T quadMask(T val)
Definition: inst_util.hh:102
Gcn3ISA::Inst_VOP3__V_MAX_U16::Inst_VOP3__V_MAX_U16
Inst_VOP3__V_MAX_U16(InFmt_VOP3 *)
Definition: instructions.cc:24998
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_XOR::~Inst_MIMG__IMAGE_ATOMIC_XOR
~Inst_MIMG__IMAGE_ATOMIC_XOR()
Definition: instructions.cc:38253
Gcn3ISA::Inst_VOP1__V_SQRT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8539
Gcn3ISA::Inst_VOP3__V_CMPX_GT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17337
Gcn3ISA::Inst_SOPC
Definition: op_encodings.hh:143
Gcn3ISA::Inst_DS__DS_INC_U64::~Inst_DS__DS_INC_U64
~Inst_DS__DS_INC_U64()
Definition: instructions.cc:32733
Gcn3ISA::Inst_FLAT__FLAT_LOAD_UBYTE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39473
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35688
Gcn3ISA::findFirstOneMsb
ScalarRegI32 findFirstOneMsb(T val)
Definition: inst_util.hh:151
Gcn3ISA::Inst_DS__DS_READ_U8::~Inst_DS__DS_READ_U8
~Inst_DS__DS_READ_U8()
Definition: instructions.cc:32276
Gcn3ISA::Inst_VOP3__V_CMPX_NLE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17615
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMAX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40926
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_L::~Inst_MIMG__IMAGE_GATHER4_L
~Inst_MIMG__IMAGE_GATHER4_L()
Definition: instructions.cc:38885
Gcn3ISA::Inst_VOP3__V_FLOOR_F64::Inst_VOP3__V_FLOOR_F64
Inst_VOP3__V_FLOOR_F64(InFmt_VOP3 *)
Definition: instructions.cc:26133
Gcn3ISA::Inst_VOPC__V_CMPX_NLT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10474
Gcn3ISA::Inst_DS__DS_ADD_SRC2_U32::Inst_DS__DS_ADD_SRC2_U32
Inst_DS__DS_ADD_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:33714
Gcn3ISA::Inst_VOP2__V_MUL_F32::Inst_VOP2__V_MUL_F32
Inst_VOP2__V_MUL_F32(InFmt_VOP2 *)
Definition: instructions.cc:5630
Gcn3ISA::Inst_SOPC__S_CMP_LG_U32::Inst_SOPC__S_CMP_LG_U32
Inst_SOPC__S_CMP_LG_U32(InFmt_SOPC *)
Definition: instructions.cc:3400
Gcn3ISA::Inst_DS__DS_WRITE_B128::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34485
Gcn3ISA::InFmt_SOPP::SIMM16
unsigned int SIMM16
Definition: gpu_decoder.hh:1518
Gcn3ISA::Inst_VOPC__V_CMPX_F_I64::~Inst_VOPC__V_CMPX_F_I64
~Inst_VOPC__V_CMPX_F_I64()
Definition: instructions.cc:14974
Gcn3ISA::Inst_SOPK__S_CMPK_GE_U32::Inst_SOPK__S_CMPK_GE_U32
Inst_SOPK__S_CMPK_GE_U32(InFmt_SOPK *)
Definition: instructions.cc:1631
Gcn3ISA::Inst_SOP2__S_BFE_U64::Inst_SOP2__S_BFE_U64
Inst_SOP2__S_BFE_U64(InFmt_SOP2 *)
Definition: instructions.cc:1224
Gcn3ISA::Inst_SMEM::extData
InFmt_SMEM_1 extData
Definition: op_encodings.hh:265
Gcn3ISA::Inst_DS__DS_WRAP_RTN_B32::~Inst_DS__DS_WRAP_RTN_B32
~Inst_DS__DS_WRAP_RTN_B32()
Definition: instructions.cc:32027
Gcn3ISA::InFmt_VOP1::VDST
unsigned int VDST
Definition: gpu_decoder.hh:1535
Gcn3ISA::Inst_VOP3__V_CMPX_LG_F64::Inst_VOP3__V_CMPX_LG_F64
Inst_VOP3__V_CMPX_LG_F64(InFmt_VOP3 *)
Definition: instructions.cc:18812
Gcn3ISA::Inst_VOP3__V_CMPX_CLASS_F32::~Inst_VOP3__V_CMPX_CLASS_F32
~Inst_VOP3__V_CMPX_CLASS_F32()
Definition: instructions.cc:15638
Gcn3ISA::Inst_SOP1__S_AND_SAVEEXEC_B64::~Inst_SOP1__S_AND_SAVEEXEC_B64
~Inst_SOP1__S_AND_SAVEEXEC_B64()
Definition: instructions.cc:2722
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_PCK_SGN::Inst_MIMG__IMAGE_LOAD_PCK_SGN
Inst_MIMG__IMAGE_LOAD_PCK_SGN(InFmt_MIMG *)
Definition: instructions.cc:37749
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39901
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_B::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38541
Gcn3ISA::REG_SCC
@ REG_SCC
Definition: registers.hh:127
Gcn3ISA::Inst_VOPC__V_CMPX_LE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12139
Gcn3ISA::Inst_SOPC::instData
InFmt_SOPC instData
Definition: op_encodings.hh:158
Gcn3ISA::Inst_SOP2__S_MIN_U32::~Inst_SOP2__S_MIN_U32
~Inst_SOP2__S_MIN_U32()
Definition: instructions.cc:273
Gcn3ISA::Inst_SOP1__S_ANDN2_SAVEEXEC_B64::~Inst_SOP1__S_ANDN2_SAVEEXEC_B64
~Inst_SOP1__S_ANDN2_SAVEEXEC_B64()
Definition: instructions.cc:2818
Gcn3ISA::Inst_VOP3__V_CMPX_LE_U64::~Inst_VOP3__V_CMPX_LE_U64
~Inst_VOP3__V_CMPX_LE_U64()
Definition: instructions.cc:22923
Gcn3ISA::Inst_VOPC__V_CMP_LT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13562
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_O::Inst_MIMG__IMAGE_SAMPLE_C_O
Inst_MIMG__IMAGE_SAMPLE_C_O(InFmt_MIMG *)
Definition: instructions.cc:38712
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2::Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2
Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2(InFmt_MUBUF *)
Definition: instructions.cc:36909
Gcn3ISA::Inst_VOP2__V_MIN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6021
Gcn3ISA::Inst_VOP1__V_CVT_F32_U32::~Inst_VOP1__V_CVT_F32_U32
~Inst_VOP1__V_CVT_F32_U32()
Definition: instructions.cc:7519
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:27875
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_AND::Inst_FLAT__FLAT_ATOMIC_AND
Inst_FLAT__FLAT_ATOMIC_AND(InFmt_FLAT *)
Definition: instructions.cc:40931
Gcn3ISA::Inst_VOP1__V_RCP_F64::Inst_VOP1__V_RCP_F64
Inst_VOP1__V_RCP_F64(InFmt_VOP1 *)
Definition: instructions.cc:8443
Gcn3ISA::Inst_VOP1__V_RCP_IFLAG_F32::Inst_VOP1__V_RCP_IFLAG_F32
Inst_VOP1__V_RCP_IFLAG_F32(InFmt_VOP1 *)
Definition: instructions.cc:8383
Gcn3ISA::Inst_VOP3__V_CMPX_NEQ_F16::Inst_VOP3__V_CMPX_NEQ_F16
Inst_VOP3__V_CMPX_NEQ_F16(InFmt_VOP3 *)
Definition: instructions.cc:16607
Gcn3ISA::Inst_VOP1__V_FLOOR_F16::~Inst_VOP1__V_FLOOR_F16
~Inst_VOP1__V_FLOOR_F16()
Definition: instructions.cc:9227
Gcn3ISA::Inst_VINTRP
Definition: op_encodings.hh:340
Gcn3ISA::Inst_VOP3__V_MAD_I16::Inst_VOP3__V_MAD_I16
Inst_VOP3__V_MAD_I16(InFmt_VOP3 *)
Definition: instructions.cc:29664
Gcn3ISA::Inst_DS__DS_MAX_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31494
Gcn3ISA::Inst_SOP1__S_FLBIT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2439
Gcn3ISA::Inst_VOPC__V_CMPX_NLE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12442
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_UMAX::Inst_MIMG__IMAGE_ATOMIC_UMAX
Inst_MIMG__IMAGE_ATOMIC_UMAX(InFmt_MIMG *)
Definition: instructions.cc:38161
Gcn3ISA::Inst_SOP2__S_SUB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:91
Gcn3ISA::Inst_VOPC__V_CMP_LE_U64::Inst_VOPC__V_CMP_LE_U64
Inst_VOPC__V_CMP_LE_U64(InFmt_VOPC *)
Definition: instructions.cc:14818
Gcn3ISA::Inst_VOPC__V_CMP_EQ_F16::Inst_VOPC__V_CMP_EQ_F16
Inst_VOPC__V_CMP_EQ_F16(InFmt_VOPC *)
Definition: instructions.cc:9955
Gcn3ISA::Inst_DS__DS_MSKOR_B64::Inst_DS__DS_MSKOR_B64
Inst_DS__DS_MSKOR_B64(InFmt_DS *)
Definition: instructions.cc:32891
Gcn3ISA::Inst_VOP3__V_CVT_I16_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27282
Gcn3ISA::Inst_DS__DS_INC_RTN_U32::~Inst_DS__DS_INC_RTN_U32
~Inst_DS__DS_INC_RTN_U32()
Definition: instructions.cc:31713
Gcn3ISA::Inst_SOPP__S_SLEEP::~Inst_SOPP__S_SLEEP
~Inst_SOPP__S_SLEEP()
Definition: instructions.cc:4192
Gcn3ISA::Inst_VOP3__V_MIN_F16::Inst_VOP3__V_MIN_F16
Inst_VOP3__V_MIN_F16(InFmt_VOP3 *)
Definition: instructions.cc:24980
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2::Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2
Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2(InFmt_MUBUF *)
Definition: instructions.cc:36798
Gcn3ISA::Inst_VOP1__V_EXP_F32::Inst_VOP1__V_EXP_F32
Inst_VOP1__V_EXP_F32(InFmt_VOP1 *)
Definition: instructions.cc:8293
Gcn3ISA::Inst_VOPC__V_CMPX_LT_I32::~Inst_VOPC__V_CMPX_LT_I32
~Inst_VOPC__V_CMPX_LT_I32()
Definition: instructions.cc:14033
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP::Inst_FLAT__FLAT_ATOMIC_CMPSWAP
Inst_FLAT__FLAT_ATOMIC_CMPSWAP(InFmt_FLAT *)
Definition: instructions.cc:40526
Gcn3ISA::InFmt_MUBUF
Definition: gpu_decoder.hh:1452
Gcn3ISA::Inst_VOP2__V_ADD_U16::~Inst_VOP2__V_ADD_U16
~Inst_VOP2__V_ADD_U16()
Definition: instructions.cc:6905
Gcn3ISA::Inst_DS__DS_CMPST_RTN_B32::~Inst_DS__DS_CMPST_RTN_B32
~Inst_DS__DS_CMPST_RTN_B32()
Definition: instructions.cc:31945
Gcn3ISA::Inst_SOP1__S_NOT_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2037
Gcn3ISA::Inst_VOP1__V_CVT_F32_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7525
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40851
Gcn3ISA::Inst_MUBUF__BUFFER_WBINVL1::~Inst_MUBUF__BUFFER_WBINVL1
~Inst_MUBUF__BUFFER_WBINVL1()
Definition: instructions.cc:36346
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38427
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:29835
Gcn3ISA::Inst_SOP1__S_BITSET1_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2612
Gcn3ISA::Inst_VOP1__V_SQRT_F16::~Inst_VOP1__V_SQRT_F16
~Inst_VOP1__V_SQRT_F16()
Definition: instructions.cc:9099
Gcn3ISA::Inst_DS__DS_MAX_I32::Inst_DS__DS_MAX_I32
Inst_DS__DS_MAX_I32(InFmt_DS *)
Definition: instructions.cc:31102
Gcn3ISA::Inst_VOPC__V_CMPX_GE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14445
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SUB::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40809
Gcn3ISA::Inst_VOP3__V_CMPX_GT_I16::~Inst_VOP3__V_CMPX_GT_I16
~Inst_VOP3__V_CMPX_GT_I16()
Definition: instructions.cc:20179
Gcn3ISA::Inst_VOPC__V_CMPX_LE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11110
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36849
Gcn3ISA::Inst_VOP3__V_CVT_OFF_F32_I4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25678
Gcn3ISA::Inst_VOP3__V_CVT_F64_F32::Inst_VOP3__V_CVT_F64_F32
Inst_VOP3__V_CVT_F64_F32(InFmt_VOP3 *)
Definition: instructions.cc:25729
Gcn3ISA::Inst_VOPC__V_CMP_NLE_F64::Inst_VOPC__V_CMP_NLE_F64
Inst_VOPC__V_CMP_NLE_F64(InFmt_VOPC *)
Definition: instructions.cc:11909
Gcn3ISA::Inst_VOP3__V_PERM_B32::permute
uint8_t permute(uint64_t in_dword2x, uint32_t sel)
Definition: instructions.hh:56272
Gcn3ISA::Inst_VOPC__V_CMPX_LT_F32::~Inst_VOPC__V_CMPX_LT_F32
~Inst_VOPC__V_CMPX_LT_F32()
Definition: instructions.cc:11038
Gcn3ISA::Inst_VOP3__V_CMP_NE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22391
Gcn3ISA::Inst_VOP3__V_CMP_NE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19918
Gcn3ISA::Inst_SOP1__S_RFE_B64::Inst_SOP1__S_RFE_B64
Inst_SOP1__S_RFE_B64(InFmt_SOP1 *)
Definition: instructions.cc:2699
Gcn3ISA::Inst_VOP3__V_MAD_LEGACY_F32::~Inst_VOP3__V_MAD_LEGACY_F32
~Inst_VOP3__V_MAD_LEGACY_F32()
Definition: instructions.cc:27641
Gcn3ISA::Inst_VOP3__V_BCNT_U32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30593
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_OR::~Inst_MIMG__IMAGE_ATOMIC_OR
~Inst_MIMG__IMAGE_ATOMIC_OR()
Definition: instructions.cc:38227
Gcn3ISA::Inst_VOP3__V_MIN_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23824
Gcn3ISA::Inst_VOP3__V_CMP_NGT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16259
Gcn3ISA::Inst_VOP3__V_PERM_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29733
Gcn3ISA::Inst_DS__DS_READ_U16::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:32396
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SWAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37994
Gcn3ISA::Inst_VOP1__V_TRUNC_F16::Inst_VOP1__V_TRUNC_F16
Inst_VOP1__V_TRUNC_F16(InFmt_VOP1 *)
Definition: instructions.cc:9256
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_INC_X2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41801
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_D_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38509
Gcn3ISA::Inst_VOP3__V_MAX3_I32::~Inst_VOP3__V_MAX3_I32
~Inst_VOP3__V_MAX3_I32()
Definition: instructions.cc:28522
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38858
Gcn3ISA::Inst_VOP3__V_MIN_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25151
Gcn3ISA::Inst_VOP3__V_CMP_NE_I32::~Inst_VOP3__V_CMP_NE_I32
~Inst_VOP3__V_CMP_NE_I32()
Definition: instructions.cc:20845
Gcn3ISA::Inst_VOP3__V_CMP_GE_F64::Inst_VOP3__V_CMP_GE_F64
Inst_VOP3__V_CMP_GE_F64(InFmt_VOP3 *)
Definition: instructions.cc:18035
Gcn3ISA::Inst_VOPC__V_CMP_NEQ_F16::Inst_VOPC__V_CMP_NEQ_F16
Inst_VOPC__V_CMP_NEQ_F16(InFmt_VOPC *)
Definition: instructions.cc:10153
Gcn3ISA::Inst_VOP2__V_MAX_I32::Inst_VOP2__V_MAX_I32
Inst_VOP2__V_MAX_I32(InFmt_VOP2 *)
Definition: instructions.cc:5978
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SWAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36466
Gcn3ISA::Inst_DS__DS_MAX_RTN_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31775
Gcn3ISA::Inst_VOP3__V_CMPX_GE_F64::Inst_VOP3__V_CMPX_GE_F64
Inst_VOP3__V_CMPX_GE_F64(InFmt_VOP3 *)
Definition: instructions.cc:18869
Gcn3ISA::Inst_VOP3__V_ASHRREV_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24933
Gcn3ISA::Inst_VOP3__V_CMP_GE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22129
Gcn3ISA::Inst_DS__DS_DEC_SRC2_U64::Inst_DS__DS_DEC_SRC2_U64
Inst_DS__DS_DEC_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:34237
ComputeUnit::vrf
std::vector< VectorRegisterFile * > vrf
Definition: compute_unit.hh:294
Gcn3ISA::Inst_VOP3__V_MAX_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30230
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_F64::~Inst_VOP3__V_CMPX_EQ_F64
~Inst_VOP3__V_CMPX_EQ_F64()
Definition: instructions.cc:18652
Gcn3ISA::Inst_DS__DS_READ2_B64::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:33614
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX8::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:4977
Gcn3ISA::Inst_VOP3__V_CMP_NGT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17046
Gcn3ISA::Inst_VOP3__V_TRIG_PREOP_F64::Inst_VOP3__V_TRIG_PREOP_F64
Inst_VOP3__V_TRIG_PREOP_F64(InFmt_VOP3 *)
Definition: instructions.cc:30844
Gcn3ISA::Inst_VOP3__V_CEIL_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26070
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_CMPSWAP::~Inst_MIMG__IMAGE_ATOMIC_CMPSWAP
~Inst_MIMG__IMAGE_ATOMIC_CMPSWAP()
Definition: instructions.cc:38013
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_PCK_SGN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37764
Gcn3ISA::Inst_VOP3__V_CMPX_NE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23015
Gcn3ISA::Inst_VOP3__V_SQRT_F16::Inst_VOP3__V_SQRT_F16
Inst_VOP3__V_SQRT_F16(InFmt_VOP3 *)
Definition: instructions.cc:27308
Gcn3ISA::Inst_VOPC__V_CMP_F_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9932
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_L_O::~Inst_MIMG__IMAGE_GATHER4_L_O
~Inst_MIMG__IMAGE_GATHER4_L_O()
Definition: instructions.cc:39085
Gcn3ISA::Inst_VOP3__V_LSHLREV_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30730
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_L_O::Inst_MIMG__IMAGE_GATHER4_L_O
Inst_MIMG__IMAGE_GATHER4_L_O(InFmt_MIMG *)
Definition: instructions.cc:39078
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40548
Gcn3ISA::Inst_VOP3__V_CMP_EQ_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21961
Gcn3ISA::Inst_VOP3__V_BFREV_B32::Inst_VOP3__V_BFREV_B32
Inst_VOP3__V_BFREV_B32(InFmt_VOP3 *)
Definition: instructions.cc:26844
Gcn3ISA::Inst_DS__DS_OR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32868
Gcn3ISA::Inst_SOPP__S_SETKILL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4137
Gcn3ISA::Inst_SOPK__S_SETREG_B32::Inst_SOPK__S_SETREG_B32
Inst_SOPK__S_SETREG_B32(InFmt_SOPK *)
Definition: instructions.cc:1798
Gcn3ISA::Inst_SOP1__S_BITSET0_B32::~Inst_SOP1__S_BITSET0_B32
~Inst_SOP1__S_BITSET0_B32()
Definition: instructions.cc:2534
Gcn3ISA::Inst_VOPC__V_CMPX_NE_I16::~Inst_VOPC__V_CMPX_NE_I16
~Inst_VOPC__V_CMPX_NE_I16()
Definition: instructions.cc:13193
Gcn3ISA::Inst_VOPC__V_CMPX_LE_U64::~Inst_VOPC__V_CMPX_LE_U64
~Inst_VOPC__V_CMPX_LE_U64()
Definition: instructions.cc:15311
Gcn3ISA::Inst_VOPC__V_CMP_NGE_F16::Inst_VOPC__V_CMP_NGE_F16
Inst_VOPC__V_CMP_NGE_F16(InFmt_VOPC *)
Definition: instructions.cc:10081
Gcn3ISA::Inst_DS__DS_APPEND::Inst_DS__DS_APPEND
Inst_DS__DS_APPEND(InFmt_DS *)
Definition: instructions.cc:34131
Gcn3ISA::Inst_SMEM__S_DCACHE_INV_VOL::Inst_SMEM__S_DCACHE_INV_VOL
Inst_SMEM__S_DCACHE_INV_VOL(InFmt_SMEM *)
Definition: instructions.cc:5345
Gcn3ISA::Inst_VOP2__V_MUL_F16::~Inst_VOP2__V_MUL_F16
~Inst_VOP2__V_MUL_F16()
Definition: instructions.cc:6825
Gcn3ISA::ScalarOperand::write
void write() override
Definition: operand.hh:429
Gcn3ISA::Inst_VOP3__V_CMPX_F_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22815
Gcn3ISA::Inst_VOP1__V_FFBH_U32::~Inst_VOP1__V_FFBH_U32
~Inst_VOP1__V_FFBH_U32()
Definition: instructions.cc:8724
Gcn3ISA::Inst_MIMG__IMAGE_LOAD::Inst_MIMG__IMAGE_LOAD
Inst_MIMG__IMAGE_LOAD(InFmt_MIMG *)
Definition: instructions.cc:37664
Gcn3ISA::Inst_VINTRP__V_INTERP_P2_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15493
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:37498
Gcn3ISA::Inst_VOPC__V_CMP_NE_U64::~Inst_VOPC__V_CMP_NE_U64
~Inst_VOPC__V_CMP_NE_U64()
Definition: instructions.cc:14886
Gcn3ISA::Inst_VOP3__V_CVT_I32_F64::~Inst_VOP3__V_CVT_I32_F64
~Inst_VOP3__V_CVT_I32_F64()
Definition: instructions.cc:25258
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORD::~Inst_FLAT__FLAT_LOAD_DWORD
~Inst_FLAT__FLAT_LOAD_DWORD()
Definition: instructions.cc:39667
Gcn3ISA::Inst_SOP1__S_AND_SAVEEXEC_B64::Inst_SOP1__S_AND_SAVEEXEC_B64
Inst_SOP1__S_AND_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2715
Gcn3ISA::Inst_SOP1__S_SET_GPR_IDX_IDX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3213
Gcn3ISA::Inst_DS__DS_MAX_RTN_F64::Inst_DS__DS_MAX_RTN_F64
Inst_DS__DS_MAX_RTN_F64(InFmt_DS *)
Definition: instructions.cc:33486
Gcn3ISA::Inst_VOP1__V_CEIL_F64::Inst_VOP1__V_CEIL_F64
Inst_VOP1__V_CEIL_F64(InFmt_VOP1 *)
Definition: instructions.cc:8052
Gcn3ISA::Inst_DS__DS_ORDERED_COUNT::~Inst_DS__DS_ORDERED_COUNT
~Inst_DS__DS_ORDERED_COUNT()
Definition: instructions.cc:34151
Gcn3ISA::Inst_VOPC__V_CMP_U_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10763
Gcn3ISA::Inst_SOP1__S_ANDN2_SAVEEXEC_B64::Inst_SOP1__S_ANDN2_SAVEEXEC_B64
Inst_SOP1__S_ANDN2_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2811
Gcn3ISA::Inst_DS__DS_ADD_RTN_F32::Inst_DS__DS_ADD_RTN_F32
Inst_DS__DS_ADD_RTN_F32(InFmt_DS *)
Definition: instructions.cc:32040
Gcn3ISA::Inst_VOPC__V_CMPX_GT_U64::Inst_VOPC__V_CMPX_GT_U64
Inst_VOPC__V_CMPX_GT_U64(InFmt_VOPC *)
Definition: instructions.cc:15337
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE0::~Inst_VOP3__V_CVT_F32_UBYTE0
~Inst_VOP3__V_CVT_F32_UBYTE0()
Definition: instructions.cc:25782
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:37541
Gcn3ISA::Inst_VOP3__V_MAX3_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28528
Gcn3ISA::Inst_VOPC__V_CMP_LT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12832
Gcn3ISA::Inst_VOPC__V_CMPX_LT_F64::~Inst_VOPC__V_CMPX_LT_F64
~Inst_VOPC__V_CMPX_LT_F64()
Definition: instructions.cc:12067
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_B_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39209
Gcn3ISA::Inst_VOP3__V_MAX3_U32::~Inst_VOP3__V_MAX3_U32
~Inst_VOP3__V_MAX3_U32()
Definition: instructions.cc:28566
Gcn3ISA::Inst_DS__DS_DEC_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31079
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40415
Gcn3ISA::Inst_VOPC__V_CMP_GE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14923
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_AND::~Inst_FLAT__FLAT_ATOMIC_AND
~Inst_FLAT__FLAT_ATOMIC_AND()
Definition: instructions.cc:40943
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_LZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38939
Gcn3ISA::Inst_VOPC__V_CMPX_NGT_F64::~Inst_VOPC__V_CMPX_NGT_F64
~Inst_VOPC__V_CMPX_NGT_F64()
Definition: instructions.cc:12403
Gcn3ISA::Inst_DS__DS_ADD_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34175
Gcn3ISA::Inst_VOP3__V_INTERP_P1LL_F16::Inst_VOP3__V_INTERP_P1LL_F16
Inst_VOP3__V_INTERP_P1LL_F16(InFmt_VOP3 *)
Definition: instructions.cc:29912
Gcn3ISA::Inst_VOP1__V_CVT_F32_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7681
Gcn3ISA::Inst_VOP2__V_XOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6325
Gcn3ISA::InFmt_VOP_DPP::SRC0
unsigned int SRC0
Definition: gpu_decoder.hh:1580
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39073
Gcn3ISA::Inst_VOP3__V_FRACT_F16::~Inst_VOP3__V_FRACT_F16
~Inst_VOP3__V_FRACT_F16()
Definition: instructions.cc:27510
Gcn3ISA::Inst_VOP3__V_CMPX_NEQ_F64::~Inst_VOP3__V_CMPX_NEQ_F64
~Inst_VOP3__V_CMPX_NEQ_F64()
Definition: instructions.cc:19274
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CD::Inst_MIMG__IMAGE_SAMPLE_C_CD
Inst_MIMG__IMAGE_SAMPLE_C_CD(InFmt_MIMG *)
Definition: instructions.cc:39297
Gcn3ISA::Inst_FLAT__FLAT_LOAD_UBYTE::Inst_FLAT__FLAT_LOAD_UBYTE
Inst_FLAT__FLAT_LOAD_UBYTE(InFmt_FLAT *)
Definition: instructions.cc:39414
Gcn3ISA::Inst_SMEM__S_DCACHE_WB_VOL::~Inst_SMEM__S_DCACHE_WB_VOL
~Inst_SMEM__S_DCACHE_WB_VOL()
Definition: instructions.cc:5366
Gcn3ISA::Inst_VOPC__V_CMPX_NEQ_F64::Inst_VOPC__V_CMPX_NEQ_F64
Inst_VOPC__V_CMPX_NEQ_F64(InFmt_VOPC *)
Definition: instructions.cc:12462
Gcn3ISA::Inst_SOPK__S_ADDK_I32::~Inst_SOPK__S_ADDK_I32
~Inst_SOPK__S_ADDK_I32()
Definition: instructions.cc:1712
Gcn3ISA::Inst_SOPK__S_CMPK_GT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1618
Gcn3ISA::Inst_DS__DS_MAX_SRC2_F64::~Inst_DS__DS_MAX_SRC2_F64
~Inst_DS__DS_MAX_SRC2_F64()
Definition: instructions.cc:34438
Gcn3ISA::Inst_VOP3__V_OR_B32::Inst_VOP3__V_OR_B32
Inst_VOP3__V_OR_B32(InFmt_VOP3 *)
Definition: instructions.cc:24143
Gcn3ISA::InFmt_VOP_SDWA::SRC0
unsigned int SRC0
Definition: gpu_decoder.hh:1593
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_OR_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37065
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:39221
Gcn3ISA::Inst_DS__DS_MIN_SRC2_I32::~Inst_DS__DS_MIN_SRC2_I32
~Inst_DS__DS_MIN_SRC2_I32()
Definition: instructions.cc:33815
Gcn3ISA::Inst_SOP2__S_AND_B64::~Inst_SOP2__S_AND_B64
~Inst_SOP2__S_AND_B64()
Definition: instructions.cc:449
Gcn3ISA::Inst_VOP1__V_CVT_U32_F64::~Inst_VOP1__V_CVT_U32_F64
~Inst_VOP1__V_CVT_U32_F64()
Definition: instructions.cc:7953
Gcn3ISA::Inst_SOP2__S_NAND_B32::~Inst_SOP2__S_NAND_B32
~Inst_SOP2__S_NAND_B32()
Definition: instructions.cc:719
Gcn3ISA::Inst_SOP2__S_XOR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:576
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_O::~Inst_MIMG__IMAGE_SAMPLE_O
~Inst_MIMG__IMAGE_SAMPLE_O()
Definition: instructions.cc:38586
Gcn3ISA::InFmt_SOPK
Definition: gpu_decoder.hh:1510
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_DEC_X2::~Inst_MUBUF__BUFFER_ATOMIC_DEC_X2
~Inst_MUBUF__BUFFER_ATOMIC_DEC_X2()
Definition: instructions.cc:37138
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORD::~Inst_SMEM__S_BUFFER_LOAD_DWORD
~Inst_SMEM__S_BUFFER_LOAD_DWORD()
Definition: instructions.cc:4756
Gcn3ISA::Inst_VOP3__V_CMPX_O_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18940
Gcn3ISA::Inst_VOP3__V_CMP_NEQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17112
Gcn3ISA::Inst_VOP1__V_FFBL_B32::Inst_VOP1__V_FFBL_B32
Inst_VOP1__V_FFBL_B32(InFmt_VOP1 *)
Definition: instructions.cc:8748
GPUDispatcher::scheduleDispatch
void scheduleDispatch()
Definition: dispatcher.cc:340
Gcn3ISA::Inst_VOP3__V_CMPX_NLG_F16::Inst_VOP3__V_CMPX_NLG_F16
Inst_VOP3__V_CMPX_NLG_F16(InFmt_VOP3 *)
Definition: instructions.cc:16550
Gcn3ISA::Inst_SOP1__S_FLBIT_I32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2386
Gcn3ISA::Inst_MUBUF__BUFFER_WBINVL1::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:36384
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:30922
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:38728
Gcn3ISA::Inst_VOP3__V_CMP_O_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16184
Gcn3ISA::Inst_VOP3__V_CMP_NEQ_F16::Inst_VOP3__V_CMP_NEQ_F16
Inst_VOP3__V_CMP_NEQ_F16(InFmt_VOP3 *)
Definition: instructions.cc:16283
Gcn3ISA::Inst_DS__DS_RSUB_RTN_U64::Inst_DS__DS_RSUB_RTN_U64
Inst_DS__DS_RSUB_RTN_U64(InFmt_DS *)
Definition: instructions.cc:33171
Gcn3ISA::Inst_SOPP__S_BARRIER::~Inst_SOPP__S_BARRIER
~Inst_SOPP__S_BARRIER()
Definition: instructions.cc:4099
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4940
Gcn3ISA::InFmt_VINTRP
Definition: gpu_decoder.hh:1523
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36957
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34886
Gcn3ISA::Inst_VOP3__V_CMP_NLT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17145
Gcn3ISA::Inst_SOPC__S_CMP_LG_I32::Inst_SOPC__S_CMP_LG_I32
Inst_SOPC__S_CMP_LG_I32(InFmt_SOPC *)
Definition: instructions.cc:3244
Gcn3ISA::Inst_VOP3__V_MAX_U16::~Inst_VOP3__V_MAX_U16
~Inst_VOP3__V_MAX_U16()
Definition: instructions.cc:25004
Gcn3ISA::Inst_VOP3__V_CMP_LE_F64::~Inst_VOP3__V_CMP_LE_F64
~Inst_VOP3__V_CMP_LE_F64()
Definition: instructions.cc:17877
Gcn3ISA::Inst_VOPC__V_CMPX_U_F32::Inst_VOPC__V_CMPX_U_F32
Inst_VOPC__V_CMPX_U_F32(InFmt_VOPC *)
Definition: instructions.cc:11265
Gcn3ISA::Inst_VOP2__V_MADAK_F16::~Inst_VOP2__V_MADAK_F16
~Inst_VOP2__V_MADAK_F16()
Definition: instructions.cc:6885
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMIN_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41558
Gcn3ISA::Inst_VOP1__V_RCP_F16::Inst_VOP1__V_RCP_F16
Inst_VOP1__V_RCP_F16(InFmt_VOP1 *)
Definition: instructions.cc:9071
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_USHORT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35179
Gcn3ISA::Inst_DS__DS_WRITE2ST64_B32::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:31412
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:34865
Gcn3ISA::Inst_SOP1__S_ORN2_SAVEEXEC_B64::~Inst_SOP1__S_ORN2_SAVEEXEC_B64
~Inst_SOP1__S_ORN2_SAVEEXEC_B64()
Definition: instructions.cc:2850
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38923
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX3::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35578
Gcn3ISA::Inst_VOP3__V_CMP_T_I16::Inst_VOP3__V_CMP_T_I16
Inst_VOP3__V_CMP_T_I16(InFmt_VOP3 *)
Definition: instructions.cc:19685
Gcn3ISA::Inst_SOPP__S_ENDPGM_SAVED::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4412
Gcn3ISA::Inst_VOPC__V_CMP_F_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13774
Gcn3ISA::Inst_VOPC__V_CMPX_NGE_F64::Inst_VOPC__V_CMPX_NGE_F64
Inst_VOPC__V_CMPX_NGE_F64(InFmt_VOPC *)
Definition: instructions.cc:12329
Gcn3ISA::InFmt_MUBUF_1::SOFFSET
unsigned int SOFFSET
Definition: gpu_decoder.hh:1471
Gcn3ISA::Inst_VOP3__V_CMP_LG_F16::~Inst_VOP3__V_CMP_LG_F16
~Inst_VOP3__V_CMP_LG_F16()
Definition: instructions.cc:16141
Gcn3ISA::Inst_SOPK__S_CMPK_EQ_I32::Inst_SOPK__S_CMPK_EQ_I32
Inst_SOPK__S_CMPK_EQ_I32(InFmt_SOPK *)
Definition: instructions.cc:1406
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMAX_X2::Inst_FLAT__FLAT_ATOMIC_SMAX_X2
Inst_FLAT__FLAT_ATOMIC_SMAX_X2(InFmt_FLAT *)
Definition: instructions.cc:41589
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_L::Inst_MIMG__IMAGE_GATHER4_C_L
Inst_MIMG__IMAGE_GATHER4_C_L(InFmt_MIMG *)
Definition: instructions.cc:38977
Gcn3ISA::Inst_VOP3__V_CMPX_F_U64::Inst_VOP3__V_CMPX_F_U64
Inst_VOP3__V_CMPX_F_U64(InFmt_VOP3 *)
Definition: instructions.cc:22802
Gcn3ISA::Inst_DS__DS_OR_SRC2_B64::~Inst_DS__DS_OR_SRC2_B64
~Inst_DS__DS_OR_SRC2_B64()
Definition: instructions.cc:34357
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP::~Inst_FLAT__FLAT_ATOMIC_CMPSWAP
~Inst_FLAT__FLAT_ATOMIC_CMPSWAP()
Definition: instructions.cc:40538
Gcn3ISA::Inst_SOP2__S_BFM_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1116
Gcn3ISA::Inst_VOP3__V_FREXP_MANT_F32::Inst_VOP3__V_FREXP_MANT_F32
Inst_VOP3__V_FREXP_MANT_F32(InFmt_VOP3 *)
Definition: instructions.cc:27156
Gcn3ISA::Inst_VOP3__V_CMPX_F_U16::~Inst_VOP3__V_CMPX_F_U16
~Inst_VOP3__V_CMPX_F_U16()
Definition: instructions.cc:20336
Gcn3ISA::Inst_DS__DS_INC_SRC2_U32::~Inst_DS__DS_INC_SRC2_U32
~Inst_DS__DS_INC_SRC2_U32()
Definition: instructions.cc:33776
Gcn3ISA::Inst_VOP2__V_SUB_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6795
Gcn3ISA::Inst_SOP1__S_FF1_I32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2334
Gcn3ISA::Inst_SOP1__S_SEXT_I32_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2515
Gcn3ISA::Inst_VOP3__V_SUB_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24607
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5309
Gcn3ISA::Inst_VOP3__V_CMP_EQ_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19792
Gcn3ISA::Inst_SOP1__S_FLBIT_I32_B64::Inst_SOP1__S_FLBIT_I32_B64
Inst_SOP1__S_FLBIT_I32_B64(InFmt_SOP1 *)
Definition: instructions.cc:2398
Gcn3ISA::Inst_VOP3__V_CMP_TRU_F32::~Inst_VOP3__V_CMP_TRU_F32
~Inst_VOP3__V_CMP_TRU_F32()
Definition: instructions.cc:17172
Gcn3ISA::Inst_VOP3__V_CVT_F64_F32::~Inst_VOP3__V_CVT_F64_F32
~Inst_VOP3__V_CVT_F64_F32()
Definition: instructions.cc:25736
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:34931
Gcn3ISA::Inst_VOP3::extData
InFmt_VOP3_1 extData
Definition: op_encodings.hh:370
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_BYTE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35813
Gcn3ISA::Inst_VOP3__V_INTERP_MOV_F32::~Inst_VOP3__V_INTERP_MOV_F32
~Inst_VOP3__V_INTERP_MOV_F32()
Definition: instructions.cc:29901
Gcn3ISA::Inst_VOP3__V_CMP_TRU_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18545
Gcn3ISA::Inst_DS__DS_ADD_U64::Inst_DS__DS_ADD_U64
Inst_DS__DS_ADD_U64(InFmt_DS *)
Definition: instructions.cc:32673
Gcn3ISA::Inst_VOP3__V_CMP_NLG_F32::Inst_VOP3__V_CMP_NLG_F32
Inst_VOP3__V_CMP_NLG_F32(InFmt_VOP3 *)
Definition: instructions.cc:16998
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SUB::Inst_FLAT__FLAT_ATOMIC_SUB
Inst_FLAT__FLAT_ATOMIC_SUB(InFmt_FLAT *)
Definition: instructions.cc:40735
Gcn3ISA::Inst_VOP3__V_CMPX_T_I64::~Inst_VOP3__V_CMPX_T_I64
~Inst_VOP3__V_CMPX_T_I64()
Definition: instructions.cc:22781
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX2::Inst_MUBUF__BUFFER_STORE_DWORDX2
Inst_MUBUF__BUFFER_STORE_DWORDX2(InFmt_MUBUF *)
Definition: instructions.cc:36010
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4763
Gcn3ISA::Inst_VOP2__V_ASHRREV_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7099
Gcn3ISA::Inst_VOP3__V_MIN_F64::Inst_VOP3__V_MIN_F64
Inst_VOP3__V_MIN_F64(InFmt_VOP3 *)
Definition: instructions.cc:30163
Gcn3ISA::Inst_VOP3__V_MED3_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28617
Gcn3ISA::Inst_DS__DS_READ_B96::~Inst_DS__DS_READ_B96
~Inst_DS__DS_READ_B96()
Definition: instructions.cc:34497
Gcn3ISA::Inst_DS__DS_READ_B32::~Inst_DS__DS_READ_B32
~Inst_DS__DS_READ_B32()
Definition: instructions.cc:32065
Gcn3ISA::Inst_VOPC__V_CMPX_NGE_F16::~Inst_VOPC__V_CMPX_NGE_F16
~Inst_VOPC__V_CMPX_NGE_F16()
Definition: instructions.cc:10378
Gcn3ISA::Inst_VOP3__V_CMPX_LT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16391
Gcn3ISA::Inst_FLAT__FLAT_STORE_SHORT::~Inst_FLAT__FLAT_STORE_SHORT
~Inst_FLAT__FLAT_STORE_SHORT()
Definition: instructions.cc:40050
Gcn3ISA::Inst_VOP1__V_LOG_F32::Inst_VOP1__V_LOG_F32
Inst_VOP1__V_LOG_F32(InFmt_VOP1 *)
Definition: instructions.cc:8323
Gcn3ISA::Inst_VOP3__V_MAX3_I32::Inst_VOP3__V_MAX3_I32
Inst_VOP3__V_MAX3_I32(InFmt_VOP3 *)
Definition: instructions.cc:28516
Gcn3ISA::Inst_SOP2__S_CBRANCH_G_FORK::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1305
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37547
Gcn3ISA::Inst_VOP3__V_CMP_GE_I32::~Inst_VOP3__V_CMP_GE_I32
~Inst_VOP3__V_CMP_GE_I32()
Definition: instructions.cc:20887
Gcn3ISA::Inst_DS__DS_GWS_SEMA_P::~Inst_DS__DS_GWS_SEMA_P
~Inst_DS__DS_GWS_SEMA_P()
Definition: instructions.cc:34091
Gcn3ISA::Inst_DS__DS_XOR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32886
Gcn3ISA::Inst_VOP2__V_SUBREV_F32::Inst_VOP2__V_SUBREV_F32
Inst_VOP2__V_SUBREV_F32(InFmt_VOP2 *)
Definition: instructions.cc:5566
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_LZ::Inst_MIMG__IMAGE_GATHER4_C_LZ
Inst_MIMG__IMAGE_GATHER4_C_LZ(InFmt_MIMG *)
Definition: instructions.cc:39028
Gcn3ISA::Inst_VOPC__V_CMPX_NLG_F16::Inst_VOPC__V_CMPX_NLG_F16
Inst_VOPC__V_CMPX_NLG_F16(InFmt_VOPC *)
Definition: instructions.cc:10389
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:30930
Gcn3ISA::Inst_VOP1__V_RNDNE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9287
Gcn3ISA::Inst_VOP3__V_FREXP_EXP_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27125
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34783
Gcn3ISA::Inst_DS__DS_WRITE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31242
Gcn3ISA::Inst_SMEM__S_DCACHE_INV_VOL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5356
Gcn3ISA::Inst_DS__DS_ADD_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33728
Gcn3ISA::Inst_SOPC__S_BITCMP0_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3594
Gcn3ISA::Inst_SOP1__S_OR_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2762
Gcn3ISA::Inst_MIMG__IMAGE_STORE::Inst_MIMG__IMAGE_STORE
Inst_MIMG__IMAGE_STORE(InFmt_MIMG *)
Definition: instructions.cc:37839
Gcn3ISA::Inst_VOP3__V_CMP_GE_U64::Inst_VOP3__V_CMP_GE_U64
Inst_VOP3__V_CMP_GE_U64(InFmt_VOP3 *)
Definition: instructions.cc:22420
Gcn3ISA::Inst_VOP3__V_CMPX_NGT_F64::~Inst_VOP3__V_CMPX_NGT_F64
~Inst_VOP3__V_CMPX_NGT_F64()
Definition: instructions.cc:19162
Gcn3ISA::Inst_VOPC__V_CMP_LE_I16::Inst_VOPC__V_CMP_LE_I16
Inst_VOPC__V_CMP_LE_I16(InFmt_VOPC *)
Definition: instructions.cc:12644
Gcn3ISA::Inst_VOP3__V_CMP_LT_I64::~Inst_VOP3__V_CMP_LT_I64
~Inst_VOP3__V_CMP_LT_I64()
Definition: instructions.cc:21913
Gcn3ISA::Inst_SOP1__S_NOT_B64::Inst_SOP1__S_NOT_B64
Inst_SOP1__S_NOT_B64(InFmt_SOP1 *)
Definition: instructions.cc:2023
Gcn3ISA::Inst_DS__DS_OR_B64::~Inst_DS__DS_OR_B64
~Inst_DS__DS_OR_B64()
Definition: instructions.cc:32860
Gcn3ISA::Inst_DS__DS_WRITE2ST64_B64::~Inst_DS__DS_WRITE2ST64_B64
~Inst_DS__DS_WRITE2ST64_B64()
Definition: instructions.cc:33040
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_X::~Inst_MUBUF__BUFFER_STORE_FORMAT_X
~Inst_MUBUF__BUFFER_STORE_FORMAT_X()
Definition: instructions.cc:34655
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX8::Inst_SMEM__S_LOAD_DWORDX8
Inst_SMEM__S_LOAD_DWORDX8(InFmt_SMEM *)
Definition: instructions.cc:4634
Gcn3ISA::Inst_VOPC__V_CMP_EQ_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12625
Wavefront::outstandingReqsRdGm
int outstandingReqsRdGm
Definition: wavefront.hh:175
Gcn3ISA::Inst_VOP3__V_MIN_U16::Inst_VOP3__V_MIN_U16
Inst_VOP3__V_MIN_U16(InFmt_VOP3 *)
Definition: instructions.cc:25092
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38624
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37264
Gcn3ISA::Inst_SOPP::instData
InFmt_SOPP instData
Definition: op_encodings.hh:182
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_I32::Inst_VOP3__V_CMPX_EQ_I32
Inst_VOP3__V_CMPX_EQ_I32(InFmt_VOP3 *)
Definition: instructions.cc:21323
Gcn3ISA::Inst_VOPC__V_CMPX_LE_I16::~Inst_VOPC__V_CMPX_LE_I16
~Inst_VOPC__V_CMPX_LE_I16()
Definition: instructions.cc:13129
Gcn3ISA::Inst_VOP3__V_CVT_U32_F64::~Inst_VOP3__V_CVT_U32_F64
~Inst_VOP3__V_CVT_U32_F64()
Definition: instructions.cc:25934
Gcn3ISA::Inst_DS__DS_SUB_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34194
Gcn3ISA::Inst_SOP2__S_MAX_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:310
Gcn3ISA::Inst_DS__DS_WRITE2ST64_B32::~Inst_DS__DS_WRITE2ST64_B32
~Inst_DS__DS_WRITE2ST64_B32()
Definition: instructions.cc:31359
Gcn3ISA::Inst_VOP3__V_MIN_F32::~Inst_VOP3__V_MIN_F32
~Inst_VOP3__V_MIN_F32()
Definition: instructions.cc:23711
Gcn3ISA::Inst_VOP3__V_CMP_NEQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16297
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5304
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13103
Gcn3ISA::Inst_VOP3__V_SUBREV_F32::Inst_VOP3__V_SUBREV_F32
Inst_VOP3__V_SUBREV_F32(InFmt_VOP3 *)
Definition: instructions.cc:23280
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:39011
Gcn3ISA::Inst_VOPC__V_CMPX_GE_U16::Inst_VOPC__V_CMPX_GE_U16
Inst_VOPC__V_CMPX_GE_U16(InFmt_VOPC *)
Definition: instructions.cc:13465
Gcn3ISA::Inst_VOP3__V_MQSAD_U32_U8::Inst_VOP3__V_MQSAD_U32_U8
Inst_VOP3__V_MQSAD_U32_U8(InFmt_VOP3 *)
Definition: instructions.cc:29488
Gcn3ISA::Inst_SOPC__S_BITCMP0_B64::~Inst_SOPC__S_BITCMP0_B64
~Inst_SOPC__S_BITCMP0_B64()
Definition: instructions.cc:3588
Gcn3ISA::Inst_VOP3__V_CMP_NLE_F32::~Inst_VOP3__V_CMP_NLE_F32
~Inst_VOP3__V_CMP_NLE_F32()
Definition: instructions.cc:17073
Gcn3ISA::Inst_VOP1__V_CLREXCP::Inst_VOP1__V_CLREXCP
Inst_VOP1__V_CLREXCP(InFmt_VOP1 *)
Definition: instructions.cc:8983
Gcn3ISA::Inst_VOP3__V_CMP_GT_I32::~Inst_VOP3__V_CMP_GT_I32
~Inst_VOP3__V_CMP_GT_I32()
Definition: instructions.cc:20803
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38972
Gcn3ISA::Inst_VOP3__V_CMPX_O_F64::Inst_VOP3__V_CMPX_O_F64
Inst_VOP3__V_CMPX_O_F64(InFmt_VOP3 *)
Definition: instructions.cc:18925
Gcn3ISA::Inst_SOP1__S_SETPC_B64::Inst_SOP1__S_SETPC_B64
Inst_SOP1__S_SETPC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2648
Gcn3ISA::InFmt_VOP_DPP::SRC1_NEG
unsigned int SRC1_NEG
Definition: gpu_decoder.hh:1586
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX3::~Inst_MUBUF__BUFFER_LOAD_DWORDX3
~Inst_MUBUF__BUFFER_LOAD_DWORDX3()
Definition: instructions.cc:35509
Gcn3ISA::Inst_VOPC__V_CMPX_NGE_F16::Inst_VOPC__V_CMPX_NGE_F16
Inst_VOPC__V_CMPX_NGE_F16(InFmt_VOPC *)
Definition: instructions.cc:10371
Gcn3ISA::Inst_MIMG__IMAGE_GET_LOD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39259
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:4365
Gcn3ISA::VecElemI64
int64_t VecElemI64
Definition: registers.hh:168
Gcn3ISA::REG_M0
@ REG_M0
Definition: registers.hh:73
Gcn3ISA::Inst_VOP3__V_SAD_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28863
Gcn3ISA::Inst_SOP2__S_BFE_I64::~Inst_SOP2__S_BFE_I64
~Inst_SOP2__S_BFE_I64()
Definition: instructions.cc:1263
Gcn3ISA::Inst_SOP2__S_BFM_B64::Inst_SOP2__S_BFM_B64
Inst_SOP2__S_BFM_B64(InFmt_SOP2 *)
Definition: instructions.cc:1104
Gcn3ISA::Inst_FLAT__FLAT_LOAD_SBYTE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39500
Gcn3ISA::Inst_VOP3__V_CMPX_U_F32::~Inst_VOP3__V_CMPX_U_F32
~Inst_VOP3__V_CMPX_U_F32()
Definition: instructions.cc:17470
Gcn3ISA::Inst_SOP1__S_ABS_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3167
Gcn3ISA::InFmt_SMEM::SBASE
unsigned int SBASE
Definition: gpu_decoder.hh:1475
Gcn3ISA::Inst_DS__DS_WRITE2ST64_B64::Inst_DS__DS_WRITE2ST64_B64
Inst_DS__DS_WRITE2ST64_B64(InFmt_DS *)
Definition: instructions.cc:33033
Gcn3ISA::Inst_VOP3__V_CMP_F_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16687
Gcn3ISA::Inst_VOPC__V_CMP_T_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12780
Gcn3ISA::Inst_VOP3__V_CMP_EQ_F64::~Inst_VOP3__V_CMP_EQ_F64
~Inst_VOP3__V_CMP_EQ_F64()
Definition: instructions.cc:17822
Gcn3ISA::Inst_VINTRP__V_INTERP_MOV_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15511
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_SBYTE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35145
ComputeUnit::releaseBarrier
void releaseBarrier(int bar_id)
Definition: compute_unit.cc:694
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37794
Gcn3ISA::Inst_VOPC__V_CMP_T_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13986
Gcn3ISA::Inst_VOPC__V_CMPX_GE_I16::Inst_VOPC__V_CMPX_GE_I16
Inst_VOPC__V_CMPX_GE_I16(InFmt_VOPC *)
Definition: instructions.cc:13219
Gcn3ISA::Inst_DS__DS_READ2ST64_B64::Inst_DS__DS_READ2ST64_B64
Inst_DS__DS_READ2ST64_B64(InFmt_DS *)
Definition: instructions.cc:33632
Gcn3ISA::Inst_VOP2__V_SUBBREV_U32::~Inst_VOP2__V_SUBBREV_U32
~Inst_VOP2__V_SUBBREV_U32()
Definition: instructions.cc:6729
Gcn3ISA::Inst_VOP1__V_RNDNE_F32::Inst_VOP1__V_RNDNE_F32
Inst_VOP1__V_RNDNE_F32(InFmt_VOP1 *)
Definition: instructions.cc:8233
Gcn3ISA::Inst_SOP1__S_NOT_B32::~Inst_SOP1__S_NOT_B32
~Inst_SOP1__S_NOT_B32()
Definition: instructions.cc:1999
Gcn3ISA::Inst_VOPC__V_CMPX_GT_F64::~Inst_VOPC__V_CMPX_GT_F64
~Inst_VOPC__V_CMPX_GT_F64()
Definition: instructions.cc:12166
Gcn3ISA::Inst_VOP1__V_MOV_FED_B32::Inst_VOP1__V_MOV_FED_B32
Inst_VOP1__V_MOV_FED_B32(InFmt_VOP1 *)
Definition: instructions.cc:7632
Gcn3ISA::Inst_VOPC__V_CMPX_F_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11016
Gcn3ISA::Inst_DS__DS_INC_U64::Inst_DS__DS_INC_U64
Inst_DS__DS_INC_U64(InFmt_DS *)
Definition: instructions.cc:32728
Gcn3ISA::Inst_VOP3__V_CUBESC_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27870
Gcn3ISA::Inst_VOP3__V_CMP_LG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16147
Gcn3ISA::Inst_DS__DS_MAX_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32832
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34991
Gcn3ISA::InFmt_VOP3::VDST
unsigned int VDST
Definition: gpu_decoder.hh:1548
Gcn3ISA::Inst_VOP3__V_CMPX_NE_U64::Inst_VOP3__V_CMPX_NE_U64
Inst_VOP3__V_CMPX_NE_U64(InFmt_VOP3 *)
Definition: instructions.cc:23002
Gcn3ISA::Inst_VOP1__V_RSQ_F16::~Inst_VOP1__V_RSQ_F16
~Inst_VOP1__V_RSQ_F16()
Definition: instructions.cc:9120
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37480
Gcn3ISA::Inst_VOP3__V_MIN_F64::~Inst_VOP3__V_MIN_F64
~Inst_VOP3__V_MIN_F64()
Definition: instructions.cc:30170
Gcn3ISA::Inst_VOP2__V_SUBBREV_U32::Inst_VOP2__V_SUBBREV_U32
Inst_VOP2__V_SUBBREV_U32(InFmt_VOP2 *)
Definition: instructions.cc:6721
Gcn3ISA::Inst_DS__DS_MAX_RTN_U32::Inst_DS__DS_MAX_RTN_U32
Inst_DS__DS_MAX_RTN_U32(InFmt_DS *)
Definition: instructions.cc:31798
Gcn3ISA::InFmt_SOP2::SDST
unsigned int SDST
Definition: gpu_decoder.hh:1498
Gcn3ISA::InFmt_MUBUF::OFFSET
unsigned int OFFSET
Definition: gpu_decoder.hh:1453
Gcn3ISA::Inst_VOP3__V_CMPX_LG_F16::~Inst_VOP3__V_CMPX_LG_F16
~Inst_VOP3__V_CMPX_LG_F16()
Definition: instructions.cc:16461
Gcn3ISA::Inst_VOP3__V_RCP_F64::~Inst_VOP3__V_RCP_F64
~Inst_VOP3__V_RCP_F64()
Definition: instructions.cc:26567
Gcn3ISA::Inst_VOPC__V_CMP_LE_F32::Inst_VOPC__V_CMP_LE_F32
Inst_VOPC__V_CMP_LE_F32(InFmt_VOPC *)
Definition: instructions.cc:10588
Gcn3ISA::Inst_SOPP__S_CBRANCH_EXECNZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4081
Gcn3ISA::Inst_VOPC__V_CMP_GE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11727
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4822
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37011
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_I64::~Inst_VOP3__V_CMPX_EQ_I64
~Inst_VOP3__V_CMPX_EQ_I64()
Definition: instructions.cc:22566
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMAX::Inst_FLAT__FLAT_ATOMIC_SMAX
Inst_FLAT__FLAT_ATOMIC_SMAX(InFmt_FLAT *)
Definition: instructions.cc:40881
Gcn3ISA::Inst_VOP3__V_CMPX_LE_U16::Inst_VOP3__V_CMPX_LE_U16
Inst_VOP3__V_CMPX_LE_U16(InFmt_VOP3 *)
Definition: instructions.cc:20443
Gcn3ISA::Inst_SOP1__S_BCNT0_I32_B64::~Inst_SOP1__S_BCNT0_I32_B64
~Inst_SOP1__S_BCNT0_I32_B64()
Definition: instructions.cc:2190
Gcn3ISA::Inst_DS__DS_MSKOR_B32::~Inst_DS__DS_MSKOR_B32
~Inst_DS__DS_MSKOR_B32()
Definition: instructions.cc:31215
Gcn3ISA::Inst_SMEM__S_STORE_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5209
Gcn3ISA::Inst_VOP3__V_CMPX_NGT_F16::~Inst_VOP3__V_CMPX_NGT_F16
~Inst_VOP3__V_CMPX_NGT_F16()
Definition: instructions.cc:16577
Gcn3ISA::Inst_SOP2__S_NAND_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:756
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_PCK::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37734
Gcn3ISA::Inst_VOP3__V_LSHLREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24072
Gcn3ISA::Inst_VOP3__V_RSQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27345
Gcn3ISA::Inst_VOP3__V_CMP_NE_I16::~Inst_VOP3__V_CMP_NE_I16
~Inst_VOP3__V_CMP_NE_I16()
Definition: instructions.cc:19608
Gcn3ISA::Inst_VOPC__V_CMPX_O_F64::~Inst_VOPC__V_CMPX_O_F64
~Inst_VOPC__V_CMPX_O_F64()
Definition: instructions.cc:12266
FetchStage::fetchUnit
FetchUnit & fetchUnit(int simdId)
Definition: fetch_stage.hh:65
Gcn3ISA::InFmt_SOP1::SSRC0
unsigned int SSRC0
Definition: gpu_decoder.hh:1489
Gcn3ISA::Inst_DS__DS_READ2_B64::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:33605
Gcn3ISA::Inst_VOPC__V_CMP_GT_U32::Inst_VOPC__V_CMP_GT_U32
Inst_VOPC__V_CMP_GT_U32(InFmt_VOPC *)
Definition: instructions.cc:13881
Gcn3ISA::Inst_VOPC__V_CMPX_GT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13413
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B_CL::~Inst_MIMG__IMAGE_GATHER4_B_CL
~Inst_MIMG__IMAGE_GATHER4_B_CL()
Definition: instructions.cc:38918
Gcn3ISA::Inst_VOP3__V_RSQ_F16::~Inst_VOP3__V_RSQ_F16
~Inst_VOP3__V_RSQ_F16()
Definition: instructions.cc:27336
Gcn3ISA::Inst_VOP3__V_MAX_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23865
Gcn3ISA::Inst_DS__DS_WRITE2ST64_B32::Inst_DS__DS_WRITE2ST64_B32
Inst_DS__DS_WRITE2ST64_B32(InFmt_DS *)
Definition: instructions.cc:31352
Gcn3ISA::Inst_VOP3__V_CMP_F_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19723
Gcn3ISA::Inst_DS__DS_INC_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31721
Gcn3ISA::Inst_DS__DS_MIN_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31793
Gcn3ISA::Inst_VOP3__V_CMP_F_U16::~Inst_VOP3__V_CMP_F_U16
~Inst_VOP3__V_CMP_F_U16()
Definition: instructions.cc:19717
Gcn3ISA::Inst_DS__DS_READ_I16::~Inst_DS__DS_READ_I16
~Inst_DS__DS_READ_I16()
Definition: instructions.cc:32338
Gcn3ISA::Inst_VOP3__V_CMP_EQ_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21029
Gcn3ISA::Inst_VOP3__V_CMP_LT_U16::Inst_VOP3__V_CMP_LT_U16
Inst_VOP3__V_CMP_LT_U16(InFmt_VOP3 *)
Definition: instructions.cc:19737
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XY::Inst_MTBUF__TBUFFER_STORE_FORMAT_XY
Inst_MTBUF__TBUFFER_STORE_FORMAT_XY(InFmt_MTBUF *)
Definition: instructions.cc:37304
Gcn3ISA::Inst_VOP3__V_CMPX_NEQ_F16::~Inst_VOP3__V_CMPX_NEQ_F16
~Inst_VOP3__V_CMPX_NEQ_F16()
Definition: instructions.cc:16615
Gcn3ISA::Inst_VOPC__V_CMPX_NGT_F32::Inst_VOPC__V_CMPX_NGT_F32
Inst_VOPC__V_CMPX_NGT_F32(InFmt_VOPC *)
Definition: instructions.cc:11367
Gcn3ISA::Inst_SMEM
Definition: op_encodings.hh:185
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B::~Inst_MIMG__IMAGE_GATHER4_B
~Inst_MIMG__IMAGE_GATHER4_B()
Definition: instructions.cc:38901
Gcn3ISA::Inst_SOP2__S_ADD_I32::Inst_SOP2__S_ADD_I32
Inst_SOP2__S_ADD_I32(InFmt_SOP2 *)
Definition: instructions.cc:108
Gcn3ISA::Inst_VOP3__V_CMPX_NLG_F32::~Inst_VOP3__V_CMPX_NLG_F32
~Inst_VOP3__V_CMPX_NLG_F32()
Definition: instructions.cc:17540
Gcn3ISA::Inst_VOPC__V_CMP_O_F32::Inst_VOPC__V_CMP_O_F32
Inst_VOPC__V_CMP_O_F32(InFmt_VOPC *)
Definition: instructions.cc:10717
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:34832
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SMAX::~Inst_MIMG__IMAGE_ATOMIC_SMAX
~Inst_MIMG__IMAGE_ATOMIC_SMAX()
Definition: instructions.cc:38148
Gcn3ISA::Inst_SMEM__S_DCACHE_INV::Inst_SMEM__S_DCACHE_INV
Inst_SMEM__S_DCACHE_INV(InFmt_SMEM *)
Definition: instructions.cc:5313
Wavefront::validateRequestCounters
void validateRequestCounters()
Definition: wavefront.cc:745
Gcn3ISA::Inst_VOP1__V_CVT_F64_I32::Inst_VOP1__V_CVT_F64_I32
Inst_VOP1__V_CVT_F64_I32(InFmt_VOP1 *)
Definition: instructions.cc:7452
Gcn3ISA::Inst_SOP1__S_QUADMASK_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3014
Gcn3ISA::Inst_VOP3__V_RNDNE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27498
Gcn3ISA::Inst_DS__DS_DEC_U32::Inst_DS__DS_DEC_U32
Inst_DS__DS_DEC_U32(InFmt_DS *)
Definition: instructions.cc:31066
Gcn3ISA::Inst_DS__DS_ADD_RTN_F32::~Inst_DS__DS_ADD_RTN_F32
~Inst_DS__DS_ADD_RTN_F32()
Definition: instructions.cc:32046
Gcn3ISA::Inst_DS__DS_MIN_U32::~Inst_DS__DS_MIN_U32
~Inst_DS__DS_MIN_U32()
Definition: instructions.cc:31125
Gcn3ISA::Inst_SOPP__S_SENDMSGHALT::~Inst_SOPP__S_SENDMSGHALT
~Inst_SOPP__S_SENDMSGHALT()
Definition: instructions.cc:4244
Gcn3ISA::Inst_VOPC__V_CMPX_LT_F16::Inst_VOPC__V_CMPX_LT_F16
Inst_VOPC__V_CMPX_LT_F16(InFmt_VOPC *)
Definition: instructions.cc:10225
Gcn3ISA::Inst_VOP3__V_SUBBREV_U32::~Inst_VOP3__V_SUBBREV_U32
~Inst_VOP3__V_SUBBREV_U32()
Definition: instructions.cc:24533
Gcn3ISA::Inst_VOPC__V_CMP_LE_I64::~Inst_VOPC__V_CMP_LE_I64
~Inst_VOPC__V_CMP_LE_I64()
Definition: instructions.cc:14586
Gcn3ISA::Inst_SOPP
Definition: op_encodings.hh:167
Gcn3ISA::Inst_VOPC__V_CMPX_F_U32::~Inst_VOPC__V_CMPX_F_U32
~Inst_VOPC__V_CMPX_F_U32()
Definition: instructions.cc:14252
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34577
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:28948
Gcn3ISA::InFmt_VOP_DPP::BOUND_CTRL
unsigned int BOUND_CTRL
Definition: gpu_decoder.hh:1583
Gcn3ISA::Inst_SOPC__S_CMP_GT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3438
Gcn3ISA::Inst_VOP3__V_MAX_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25010
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39124
Gcn3ISA::Inst_VOP1__V_EXP_LEGACY_F32::~Inst_VOP1__V_EXP_LEGACY_F32
~Inst_VOP1__V_EXP_LEGACY_F32()
Definition: instructions.cc:9353
Gcn3ISA::Inst_VOPC__V_CMP_T_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13018
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39343
Gcn3ISA::Inst_SOP1__S_BCNT1_I32_B64::~Inst_SOP1__S_BCNT1_I32_B64
~Inst_SOP1__S_BCNT1_I32_B64()
Definition: instructions.cc:2246
Gcn3ISA::Inst_VOPC__V_CMP_T_U32::Inst_VOPC__V_CMP_T_U32
Inst_VOPC__V_CMP_T_U32(InFmt_VOPC *)
Definition: instructions.cc:13974
Gcn3ISA::Inst_VOPC__V_CMP_U_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11792
Gcn3ISA::Inst_VOP2__V_MIN_U16::~Inst_VOP2__V_MIN_U16
~Inst_VOP2__V_MIN_U16()
Definition: instructions.cc:7222
Gcn3ISA::Inst_DS__DS_OR_B32::Inst_DS__DS_OR_B32
Inst_DS__DS_OR_B32(InFmt_DS *)
Definition: instructions.cc:31174
ComputeUnit::fetchStage
FetchStage fetchStage
Definition: compute_unit.hh:279
Gcn3ISA::Inst_SOPK__S_CMPK_LE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1693
Gcn3ISA::Inst_VOP3__V_CMP_LE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17883
Gcn3ISA::Inst_VOP3__V_CMP_CLASS_F64::~Inst_VOP3__V_CMP_CLASS_F64
~Inst_VOP3__V_CMP_CLASS_F64()
Definition: instructions.cc:15754
Gcn3ISA::Inst_DS__DS_WRXCHG2ST64_RTN_B64::Inst_DS__DS_WRXCHG2ST64_RTN_B64
Inst_DS__DS_WRXCHG2ST64_RTN_B64(InFmt_DS *)
Definition: instructions.cc:33407
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_AND::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40951
Gcn3ISA::Inst_VOP3__V_CMPX_NGE_F16::Inst_VOP3__V_CMPX_NGE_F16
Inst_VOP3__V_CMPX_NGE_F16(InFmt_VOP3 *)
Definition: instructions.cc:16531
Gcn3ISA::Inst_VOPC__V_CMPX_NLG_F32::Inst_VOPC__V_CMPX_NLG_F32
Inst_VOPC__V_CMPX_NLG_F32(InFmt_VOPC *)
Definition: instructions.cc:11333
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12106
Gcn3ISA::Inst_VOPC__V_CMP_NLT_F64::Inst_VOPC__V_CMP_NLT_F64
Inst_VOPC__V_CMP_NLT_F64(InFmt_VOPC *)
Definition: instructions.cc:11973
Gcn3ISA::Inst_DS__DS_WRITE_B96::Inst_DS__DS_WRITE_B96
Inst_DS__DS_WRITE_B96(InFmt_DS *)
Definition: instructions.cc:34452
Gcn3ISA::Inst_VOP3__V_FRACT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27516
Gcn3ISA::Inst_VOP3__V_LSHLREV_B16::~Inst_VOP3__V_LSHLREV_B16
~Inst_VOP3__V_LSHLREV_B16()
Definition: instructions.cc:24837
Gcn3ISA::Inst_SMEM__S_ATC_PROBE_BUFFER::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5435
Gcn3ISA::Inst_DS__DS_AND_RTN_B32::~Inst_DS__DS_AND_RTN_B32
~Inst_DS__DS_AND_RTN_B32()
Definition: instructions.cc:31821
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SUB_X2::Inst_FLAT__FLAT_ATOMIC_SUB_X2
Inst_FLAT__FLAT_ATOMIC_SUB_X2(InFmt_FLAT *)
Definition: instructions.cc:41438
Gcn3ISA::Inst_FLAT__FLAT_LOAD_SSHORT::~Inst_FLAT__FLAT_LOAD_SSHORT
~Inst_FLAT__FLAT_LOAD_SSHORT()
Definition: instructions.cc:39639
Gcn3ISA::Inst_VOP3__V_CMP_GT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16128
Gcn3ISA::Inst_VOP1__V_LOG_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9389
Gcn3ISA::Inst_SOP2__S_NAND_B64::Inst_SOP2__S_NAND_B64
Inst_SOP2__S_NAND_B64(InFmt_SOP2 *)
Definition: instructions.cc:743
Gcn3ISA::Inst_VOP3__V_MUL_F16::~Inst_VOP3__V_MUL_F16
~Inst_VOP3__V_MUL_F16()
Definition: instructions.cc:24637
Gcn3ISA::Inst_DS__DS_CMPST_RTN_F32::Inst_DS__DS_CMPST_RTN_F32
Inst_DS__DS_CMPST_RTN_F32(InFmt_DS *)
Definition: instructions.cc:31961
Gcn3ISA::InFmt_VOP1
Definition: gpu_decoder.hh:1532
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:4853
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD::~Inst_MIMG__IMAGE_SAMPLE_CD
~Inst_MIMG__IMAGE_SAMPLE_CD()
Definition: instructions.cc:39270
Gcn3ISA::Inst_VOP3__V_MIN_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25104
Gcn3ISA::Inst_VOPC__V_CMP_GE_U64::Inst_VOPC__V_CMP_GE_U64
Inst_VOPC__V_CMP_GE_U64(InFmt_VOPC *)
Definition: instructions.cc:14911
Gcn3ISA::Inst_SOP1__S_XOR_SAVEEXEC_B64::~Inst_SOP1__S_XOR_SAVEEXEC_B64
~Inst_SOP1__S_XOR_SAVEEXEC_B64()
Definition: instructions.cc:2786
Gcn3ISA::Inst_DS__DS_MIN_I64::Inst_DS__DS_MIN_I64
Inst_DS__DS_MIN_I64(InFmt_DS *)
Definition: instructions.cc:32765
Gcn3ISA::Inst_VOP3__V_CMP_U_F64::~Inst_VOP3__V_CMP_U_F64
~Inst_VOP3__V_CMP_U_F64()
Definition: instructions.cc:18152
Gcn3ISA::Inst_VOPC__V_CMPX_TRU_F64::~Inst_VOPC__V_CMPX_TRU_F64
~Inst_VOPC__V_CMPX_TRU_F64()
Definition: instructions.cc:12535
Gcn3ISA::Inst_VOP3__V_CMPX_GE_I64::~Inst_VOP3__V_CMPX_GE_I64
~Inst_VOP3__V_CMPX_GE_I64()
Definition: instructions.cc:22738
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_L_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38657
Gcn3ISA::Inst_VOPC__V_CMP_LT_F32::Inst_VOPC__V_CMP_LT_F32
Inst_VOPC__V_CMP_LT_F32(InFmt_VOPC *)
Definition: instructions.cc:10524
Gcn3ISA::Inst_DS__DS_READ_U16::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:32386
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORDX4::Inst_SMEM__S_BUFFER_STORE_DWORDX4
Inst_SMEM__S_BUFFER_STORE_DWORDX4(InFmt_SMEM *)
Definition: instructions.cc:5283
Gcn3ISA::Inst_VOPC__V_CMP_GE_U32::Inst_VOPC__V_CMP_GE_U32
Inst_VOPC__V_CMP_GE_U32(InFmt_VOPC *)
Definition: instructions.cc:13943
Gcn3ISA::Inst_VOPC__V_CMPX_NLG_F16::~Inst_VOPC__V_CMPX_NLG_F16
~Inst_VOPC__V_CMPX_NLG_F16()
Definition: instructions.cc:10396
Gcn3ISA::Inst_SOPK__S_SETREG_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1813
Gcn3ISA::Inst_VOP2__V_CNDMASK_B32::~Inst_VOP2__V_CNDMASK_B32
~Inst_VOP2__V_CNDMASK_B32()
Definition: instructions.cc:5447
Gcn3ISA::Inst_VOPC__V_CMPX_NLE_F64::~Inst_VOPC__V_CMPX_NLE_F64
~Inst_VOPC__V_CMPX_NLE_F64()
Definition: instructions.cc:12436
Gcn3ISA::Inst_VOPC__V_CMPX_F_I16::Inst_VOPC__V_CMPX_F_I16
Inst_VOPC__V_CMPX_F_I16(InFmt_VOPC *)
Definition: instructions.cc:13032
Gcn3ISA::Inst_SOP2__S_BFE_I32::Inst_SOP2__S_BFE_I32
Inst_SOP2__S_BFE_I32(InFmt_SOP2 *)
Definition: instructions.cc:1190
Gcn3ISA::Inst_VOP3__V_CMPX_NLT_F16::~Inst_VOP3__V_CMPX_NLT_F16
~Inst_VOP3__V_CMPX_NLT_F16()
Definition: instructions.cc:16634
Gcn3ISA::Inst_VOPC__V_CMP_T_U16::~Inst_VOPC__V_CMP_T_U16
~Inst_VOPC__V_CMP_T_U16()
Definition: instructions.cc:13012
Gcn3ISA::Inst_VOPC__V_CMPX_LT_F16::~Inst_VOPC__V_CMPX_LT_F16
~Inst_VOPC__V_CMPX_LT_F16()
Definition: instructions.cc:10232
Gcn3ISA::Inst_SOPP__S_CBRANCH_SCC1::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3968
Gcn3ISA::Inst_MIMG__IMAGE_STORE_PCK::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37921
Gcn3ISA::Inst_VOP3__V_CMP_NEQ_F64::~Inst_VOP3__V_CMP_NEQ_F64
~Inst_VOP3__V_CMP_NEQ_F64()
Definition: instructions.cc:18429
Gcn3ISA::Inst_VOP3__V_SIN_F16::Inst_VOP3__V_SIN_F16
Inst_VOP3__V_SIN_F16(InFmt_VOP3 *)
Definition: instructions.cc:27521
Gcn3ISA::Inst_SOPK__S_CMPK_LT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1518
Gcn3ISA::Inst_DS__DS_READ2_B64::~Inst_DS__DS_READ2_B64
~Inst_DS__DS_READ2_B64()
Definition: instructions.cc:33574
Gcn3ISA::Inst_VOPC__V_CMPX_T_I64::~Inst_VOPC__V_CMPX_T_I64
~Inst_VOPC__V_CMPX_T_I64()
Definition: instructions.cc:15193
Gcn3ISA::Inst_VOPC__V_CMPX_NGE_F32::Inst_VOPC__V_CMPX_NGE_F32
Inst_VOPC__V_CMPX_NGE_F32(InFmt_VOPC *)
Definition: instructions.cc:11300
Gcn3ISA::Inst_SOPP__S_WAKEUP::Inst_SOPP__S_WAKEUP
Inst_SOPP__S_WAKEUP(InFmt_SOPP *)
Definition: instructions.cc:3908
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:37464
Gcn3ISA::InFmt_MUBUF_1::VADDR
unsigned int VADDR
Definition: gpu_decoder.hh:1466
Gcn3ISA::Inst_DS__DS_XOR_SRC2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33938
Gcn3ISA::Inst_VOPC__V_CMP_NLG_F16::~Inst_VOPC__V_CMP_NLG_F16
~Inst_VOPC__V_CMP_NLG_F16()
Definition: instructions.cc:10106
Gcn3ISA::Inst_VOP3__V_LSHRREV_B16::~Inst_VOP3__V_LSHRREV_B16
~Inst_VOP3__V_LSHRREV_B16()
Definition: instructions.cc:24878
Gcn3ISA::Inst_VOP1__V_CVT_I32_F32::~Inst_VOP1__V_CVT_I32_F32
~Inst_VOP1__V_CVT_I32_F32()
Definition: instructions.cc:7595
Gcn3ISA::Inst_VOPC__V_CMP_T_I16::~Inst_VOPC__V_CMP_T_I16
~Inst_VOPC__V_CMP_T_I16()
Definition: instructions.cc:12774
Gcn3ISA::Inst_VOPC__V_CMP_NLT_F64::~Inst_VOPC__V_CMP_NLT_F64
~Inst_VOPC__V_CMP_NLT_F64()
Definition: instructions.cc:11980
Gcn3ISA::Inst_VOP3__V_CNDMASK_B32::~Inst_VOP3__V_CNDMASK_B32
~Inst_VOP3__V_CNDMASK_B32()
Definition: instructions.cc:23133
Gcn3ISA::Inst_VOP1__V_CVT_F16_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9030
Gcn3ISA::Inst_DS__DS_MSKOR_B32::Inst_DS__DS_MSKOR_B32
Inst_DS__DS_MSKOR_B32(InFmt_DS *)
Definition: instructions.cc:31210
Gcn3ISA::Inst_VOPC__V_CMPX_NGT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12409
Gcn3ISA::Inst_VOP2__V_MAX_F16::Inst_VOP2__V_MAX_F16
Inst_VOP2__V_MAX_F16(InFmt_VOP2 *)
Definition: instructions.cc:7118
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37824
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:29217
Gcn3ISA::Inst_VOP3__V_ADD_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24679
Gcn3ISA::Inst_VOP3__V_CMP_GT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19876
Gcn3ISA::Inst_VOP2__V_SUBBREV_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6739
Gcn3ISA::Inst_VOP2__V_MIN_F16::Inst_VOP2__V_MIN_F16
Inst_VOP2__V_MIN_F16(InFmt_VOP2 *)
Definition: instructions.cc:7136
Gcn3ISA::Inst_VOP2__V_SUBB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6696
Gcn3ISA::Inst_VOP3__V_CMPX_GE_I16::Inst_VOP3__V_CMPX_GE_I16
Inst_VOP3__V_CMPX_GE_I16(InFmt_VOP3 *)
Definition: instructions.cc:20258
Gcn3ISA::Inst_SOP2__S_RFE_RESTORE_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1351
Gcn3ISA::Inst_SOP1__S_ORN2_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2858
Gcn3ISA::Inst_SOP1__S_BCNT0_I32_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2197
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_X::Inst_MTBUF__TBUFFER_LOAD_FORMAT_X
Inst_MTBUF__TBUFFER_LOAD_FORMAT_X(InFmt_MTBUF *)
Definition: instructions.cc:37153
Gcn3ISA::Inst_VOP3__V_CMP_F_U64::~Inst_VOP3__V_CMP_F_U64
~Inst_VOP3__V_CMP_F_U64()
Definition: instructions.cc:22190
Gcn3ISA::Inst_VOP3__V_CMPX_LT_U64::~Inst_VOP3__V_CMPX_LT_U64
~Inst_VOP3__V_CMPX_LT_U64()
Definition: instructions.cc:22837
Gcn3ISA::Inst_DS__DS_MAX_SRC2_U64::Inst_DS__DS_MAX_SRC2_U64
Inst_DS__DS_MAX_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:34314
Gcn3ISA::Inst_VOP3__V_CMPX_F_F64::Inst_VOP3__V_CMPX_F_F64
Inst_VOP3__V_CMPX_F_F64(InFmt_VOP3 *)
Definition: instructions.cc:18559
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_U16::~Inst_VOP3__V_CMPX_EQ_U16
~Inst_VOP3__V_CMPX_EQ_U16()
Definition: instructions.cc:20407
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34763
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_U16::Inst_VOP3__V_CMPX_EQ_U16
Inst_VOP3__V_CMPX_EQ_U16(InFmt_VOP3 *)
Definition: instructions.cc:20400
Gcn3ISA::Inst_VOP1__V_COS_F16::Inst_VOP1__V_COS_F16
Inst_VOP1__V_COS_F16(InFmt_VOP1 *)
Definition: instructions.cc:9328
Gcn3ISA::Inst_DS__DS_XOR_B32::~Inst_DS__DS_XOR_B32
~Inst_DS__DS_XOR_B32()
Definition: instructions.cc:31197
Gcn3ISA::Inst_VOP3__V_FFBL_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26925
Gcn3ISA::Inst_VOP3__V_CMP_GE_I16::~Inst_VOP3__V_CMP_GE_I16
~Inst_VOP3__V_CMP_GE_I16()
Definition: instructions.cc:19650
Gcn3ISA::Inst_VOPC__V_CMP_F_U32::Inst_VOPC__V_CMP_F_U32
Inst_VOPC__V_CMP_F_U32(InFmt_VOPC *)
Definition: instructions.cc:13762
Gcn3ISA::Inst_VOP1__V_FREXP_MANT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8856
Gcn3ISA::Inst_VOP3__V_CMPX_LE_I16::Inst_VOP3__V_CMPX_LE_I16
Inst_VOP3__V_CMPX_LE_I16(InFmt_VOP3 *)
Definition: instructions.cc:20129
Gcn3ISA::Inst_SOP2__S_XNOR_B32::~Inst_SOP2__S_XNOR_B32
~Inst_SOP2__S_XNOR_B32()
Definition: instructions.cc:839
Gcn3ISA::Inst_VOP3__V_MAD_I32_I24::Inst_VOP3__V_MAD_I32_I24
Inst_VOP3__V_MAD_I32_I24(InFmt_VOP3 *)
Definition: instructions.cc:27751
Gcn3ISA::Inst_VOP3__V_CMPX_CLASS_F16::~Inst_VOP3__V_CMPX_CLASS_F16
~Inst_VOP3__V_CMPX_CLASS_F16()
Definition: instructions.cc:16015
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_BYTE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35740
Gcn3ISA::Inst_VOPC__V_CMP_NEQ_F16::~Inst_VOPC__V_CMP_NEQ_F16
~Inst_VOPC__V_CMP_NEQ_F16()
Definition: instructions.cc:10160
Gcn3ISA::Inst_VOP3__V_CMPX_CLASS_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16034
Gcn3ISA::Inst_VOPC__V_CMP_U_F64::~Inst_VOPC__V_CMP_U_F64
~Inst_VOPC__V_CMP_U_F64()
Definition: instructions.cc:11786
Gcn3ISA::Inst_VOP1__V_SQRT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8569
Gcn3ISA::Inst_VOP3__V_LDEXP_F32::Inst_VOP3__V_LDEXP_F32
Inst_VOP3__V_LDEXP_F32(InFmt_VOP3 *)
Definition: instructions.cc:30461
Gcn3ISA::Inst_VOP3__V_CMP_F_F64::~Inst_VOP3__V_CMP_F_F64
~Inst_VOP3__V_CMP_F_F64()
Definition: instructions.cc:17739
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX8::~Inst_SMEM__S_LOAD_DWORDX8
~Inst_SMEM__S_LOAD_DWORDX8()
Definition: instructions.cc:4641
Gcn3ISA::Inst_VOPC__V_CMP_NLG_F32::~Inst_VOPC__V_CMP_NLG_F32
~Inst_VOPC__V_CMP_NLG_F32()
Definition: instructions.cc:10822
Gcn3ISA::InFmt_VOP3
Definition: gpu_decoder.hh:1547
Gcn3ISA::Inst_VOP3__V_ADD_F16::Inst_VOP3__V_ADD_F16
Inst_VOP3__V_ADD_F16(InFmt_VOP3 *)
Definition: instructions.cc:24576
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX2::~Inst_MUBUF__BUFFER_LOAD_DWORDX2
~Inst_MUBUF__BUFFER_LOAD_DWORDX2()
Definition: instructions.cc:35404
Gcn3ISA::Inst_DS__DS_MSKOR_RTN_B32::~Inst_DS__DS_MSKOR_RTN_B32
~Inst_DS__DS_MSKOR_RTN_B32()
Definition: instructions.cc:31875
Gcn3ISA::Inst_VOPC__V_CMP_GT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13893
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX2::execute
void execute(GPUDynInstPtr) override
Read 2 dwords from scalar data cache.
Definition: instructions.cc:4534
Gcn3ISA::Inst_MIMG__IMAGE_STORE_MIP::~Inst_MIMG__IMAGE_STORE_MIP
~Inst_MIMG__IMAGE_STORE_MIP()
Definition: instructions.cc:37876
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX16::Inst_SMEM__S_BUFFER_LOAD_DWORDX16
Inst_SMEM__S_BUFFER_LOAD_DWORDX16(InFmt_SMEM *)
Definition: instructions.cc:4984
Gcn3ISA::Inst_VOP3__V_EXP_F32::~Inst_VOP3__V_EXP_F32
~Inst_VOP3__V_EXP_F32()
Definition: instructions.cc:26369
Gcn3ISA::Inst_SOP1__S_XNOR_SAVEEXEC_B64::Inst_SOP1__S_XNOR_SAVEEXEC_B64
Inst_SOP1__S_XNOR_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2939
Gcn3ISA::Inst_SOP2__S_NOR_B64::Inst_SOP2__S_NOR_B64
Inst_SOP2__S_NOR_B64(InFmt_SOP2 *)
Definition: instructions.cc:803
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_B::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39006
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_OR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38235
Gcn3ISA::Inst_VOP3__V_CVT_FLR_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25640
Gcn3ISA::Inst_SOPC__S_SETVSKIP::~Inst_SOPC__S_SETVSKIP
~Inst_SOPC__S_SETVSKIP()
Definition: instructions.cc:3640
Gcn3ISA::Inst_VOP3__V_MUL_HI_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30429
Gcn3ISA::Inst_VOP2__V_ADD_F32::Inst_VOP2__V_ADD_F32
Inst_VOP2__V_ADD_F32(InFmt_VOP2 *)
Definition: instructions.cc:5476
Gcn3ISA::Inst_VOP3__V_MIN_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30176
Wavefront::simdId
const int simdId
Definition: wavefront.hh:97
Gcn3ISA::Inst_DS__DS_ADD_F32::Inst_DS__DS_ADD_F32
Inst_DS__DS_ADD_F32(InFmt_DS *)
Definition: instructions.cc:31515
Gcn3ISA::Inst_VOP2
Definition: op_encodings.hh:268
Gcn3ISA::Inst_SOPP__S_SENDMSGHALT::Inst_SOPP__S_SENDMSGHALT
Inst_SOPP__S_SENDMSGHALT(InFmt_SOPP *)
Definition: instructions.cc:4239
Gcn3ISA::Inst_VOP3__V_SUB_F16::~Inst_VOP3__V_SUB_F16
~Inst_VOP3__V_SUB_F16()
Definition: instructions.cc:24601
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_D_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38774
Gcn3ISA::InFmt_SOP1
Definition: gpu_decoder.hh:1488
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SUB_X2::Inst_MUBUF__BUFFER_ATOMIC_SUB_X2
Inst_MUBUF__BUFFER_ATOMIC_SUB_X2(InFmt_MUBUF *)
Definition: instructions.cc:36882
Gcn3ISA::Inst_VOP3__V_FREXP_MANT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27408
Gcn3ISA::Inst_DS__DS_MAX_SRC2_F32::Inst_DS__DS_MAX_SRC2_F32
Inst_DS__DS_MAX_SRC2_F32(InFmt_DS *)
Definition: instructions.cc:33985
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:30622
Gcn3ISA::Inst_VOP3__V_CMPX_T_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20628
Gcn3ISA::Inst_VOP2__V_MUL_I32_I24::Inst_VOP2__V_MUL_I32_I24
Inst_VOP2__V_MUL_I32_I24(InFmt_VOP2 *)
Definition: instructions.cc:5707
Gcn3ISA::Inst_VOP3__V_CMPX_LE_I16::~Inst_VOP3__V_CMPX_LE_I16
~Inst_VOP3__V_CMPX_LE_I16()
Definition: instructions.cc:20136
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:4800
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39746
Gcn3ISA::Inst_VOP3__V_OR_B32::~Inst_VOP3__V_OR_B32
~Inst_VOP3__V_OR_B32()
Definition: instructions.cc:24149
Gcn3ISA::Inst_VOPC__V_CMP_F_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13536
Gcn3ISA::Inst_VOP3__V_SAD_U16::Inst_VOP3__V_SAD_U16
Inst_VOP3__V_SAD_U16(InFmt_VOP3 *)
Definition: instructions.cc:28849
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE1::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7869
Gcn3ISA::Inst_DS__DS_MSKOR_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31883
Gcn3ISA::Inst_VOP3__V_CMPX_T_U64::Inst_VOP3__V_CMPX_T_U64
Inst_VOP3__V_CMPX_T_U64(InFmt_VOP3 *)
Definition: instructions.cc:23088
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMAX_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41610
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:9205
Gcn3ISA::Inst_SOPP__S_BRANCH::Inst_SOPP__S_BRANCH
Inst_SOPP__S_BRANCH(InFmt_SOPP *)
Definition: instructions.cc:3885
Gcn3ISA::Inst_VOPC__V_CMPX_LE_U64::Inst_VOPC__V_CMPX_LE_U64
Inst_VOPC__V_CMPX_LE_U64(InFmt_VOPC *)
Definition: instructions.cc:15305
Gcn3ISA::Inst_VOP2__V_ADDC_U32::Inst_VOP2__V_ADDC_U32
Inst_VOP2__V_ADDC_U32(InFmt_VOP2 *)
Definition: instructions.cc:6633
Gcn3ISA::Inst_SOPC__S_CMP_EQ_U32::~Inst_SOPC__S_CMP_EQ_U32
~Inst_SOPC__S_CMP_EQ_U32()
Definition: instructions.cc:3380
Gcn3ISA::Inst_VOPC__V_CMPX_NGT_F64::Inst_VOPC__V_CMPX_NGT_F64
Inst_VOPC__V_CMPX_NGT_F64(InFmt_VOPC *)
Definition: instructions.cc:12396
Gcn3ISA::Inst_VOP3__V_CMPX_NLE_F64::~Inst_VOP3__V_CMPX_NLE_F64
~Inst_VOP3__V_CMPX_NLE_F64()
Definition: instructions.cc:19218
Gcn3ISA::Inst_DS__DS_OR_RTN_B64::~Inst_DS__DS_OR_RTN_B64
~Inst_DS__DS_OR_RTN_B64()
Definition: instructions.cc:33322
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_OR_X2::Inst_FLAT__FLAT_ATOMIC_OR_X2
Inst_FLAT__FLAT_ATOMIC_OR_X2(InFmt_FLAT *)
Definition: instructions.cc:41667
Gcn3ISA::Inst_VOPC__V_CMP_NE_U32::Inst_VOPC__V_CMP_NE_U32
Inst_VOPC__V_CMP_NE_U32(InFmt_VOPC *)
Definition: instructions.cc:13912
Gcn3ISA::Inst_VOP3__V_PERM_B32::~Inst_VOP3__V_PERM_B32
~Inst_VOP3__V_PERM_B32()
Definition: instructions.cc:29715
Gcn3ISA::Inst_VOP1__V_CVT_F32_U32::Inst_VOP1__V_CVT_F32_U32
Inst_VOP1__V_CVT_F32_U32(InFmt_VOP1 *)
Definition: instructions.cc:7512
Gcn3ISA::Inst_SOP2__S_BFE_U64::~Inst_SOP2__S_BFE_U64
~Inst_SOP2__S_BFE_U64()
Definition: instructions.cc:1230
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_SSHORT::Inst_MUBUF__BUFFER_LOAD_SSHORT
Inst_MUBUF__BUFFER_LOAD_SSHORT(InFmt_MUBUF *)
Definition: instructions.cc:35262
Gcn3ISA::Inst_VOP3__V_CMPX_F_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20342
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX3::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39865
Gcn3ISA::Inst_VOPC__V_CMP_CLASS_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9656
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:4442
Gcn3ISA::Inst_VOP3__V_MIN3_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28425
Gcn3ISA::Inst_VOP3__V_CMPX_LG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17371
Gcn3ISA::Inst_VOP3__V_CMPX_LT_F32::Inst_VOP3__V_CMPX_LT_F32
Inst_VOP3__V_CMPX_LT_F32(InFmt_VOP3 *)
Definition: instructions.cc:17221
Gcn3ISA::Inst_VOP3__V_MAX_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23771
Gcn3ISA::Inst_SOPP__S_ENDPGM::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3758
Gcn3ISA::Inst_VOPC__V_CMP_F_I64::Inst_VOPC__V_CMP_F_I64
Inst_VOPC__V_CMP_F_I64(InFmt_VOPC *)
Definition: instructions.cc:14492
Gcn3ISA::Inst_VOPC__V_CMPX_NGE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11313
Gcn3ISA::Inst_DS__DS_OR_RTN_B64::Inst_DS__DS_OR_RTN_B64
Inst_DS__DS_OR_RTN_B64(InFmt_DS *)
Definition: instructions.cc:33317
Gcn3ISA::Inst_VOPC__V_CMP_EQ_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13831
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:148
Gcn3ISA::Inst_SMEM__S_STORE_DWORD::~Inst_SMEM__S_STORE_DWORD
~Inst_SMEM__S_STORE_DWORD()
Definition: instructions.cc:5050
Gcn3ISA::Inst_MIMG__IMAGE_LOAD::~Inst_MIMG__IMAGE_LOAD
~Inst_MIMG__IMAGE_LOAD()
Definition: instructions.cc:37672
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_INC_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37119
Gcn3ISA::Inst_DS__DS_CMPST_B64::~Inst_DS__DS_CMPST_B64
~Inst_DS__DS_CMPST_B64()
Definition: instructions.cc:33058
Gcn3ISA::Inst_VOP3__V_CMPX_U_F64::~Inst_VOP3__V_CMPX_U_F64
~Inst_VOP3__V_CMPX_U_F64()
Definition: instructions.cc:18991
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_I16::Inst_VOPC__V_CMPX_EQ_I16
Inst_VOPC__V_CMPX_EQ_I16(InFmt_VOPC *)
Definition: instructions.cc:13091
Gcn3ISA::Inst_VOP3__V_CVT_I16_F16::~Inst_VOP3__V_CVT_I16_F16
~Inst_VOP3__V_CVT_I16_F16()
Definition: instructions.cc:27276
Wavefront::lastInstExec
uint64_t lastInstExec
Definition: wavefront.hh:227
Gcn3ISA::Inst_VOP3__V_CMPX_GT_I16::Inst_VOP3__V_CMPX_GT_I16
Inst_VOP3__V_CMPX_GT_I16(InFmt_VOP3 *)
Definition: instructions.cc:20172
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38608
Gcn3ISA::Inst_VOP3__V_MIN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23717
Gcn3ISA::Inst_MIMG__IMAGE_STORE_PCK::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37916
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP::~Inst_MIMG__IMAGE_LOAD_MIP
~Inst_MIMG__IMAGE_LOAD_MIP()
Definition: instructions.cc:37701
Gcn3ISA::Inst_VOP3__V_CMPX_TRU_F32::Inst_VOP3__V_CMPX_TRU_F32
Inst_VOP3__V_CMPX_TRU_F32(InFmt_VOP3 *)
Definition: instructions.cc:17703
Gcn3ISA::Inst_VOP3__V_MUL_U32_U24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23632
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:38553
Gcn3ISA::Inst_VOP3__V_CMPX_O_F32::Inst_VOP3__V_CMPX_O_F32
Inst_VOP3__V_CMPX_O_F32(InFmt_VOP3 *)
Definition: instructions.cc:17426
Gcn3ISA::Inst_VOPC__V_CMP_LE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12894
Gcn3ISA::Inst_VOP1__V_SIN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8599
Gcn3ISA::Inst_DS__DS_XOR_SRC2_B64::Inst_DS__DS_XOR_SRC2_B64
Inst_DS__DS_XOR_SRC2_B64(InFmt_DS *)
Definition: instructions.cc:34371
Gcn3ISA::Inst_VOP2__V_MADMK_F16::Inst_VOP2__V_MADMK_F16
Inst_VOP2__V_MADMK_F16(InFmt_VOP2 *)
Definition: instructions.cc:6855
Gcn3ISA::Inst_DS__DS_DEC_RTN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31739
Gcn3ISA::Inst_VOP3__V_CMP_F_I16::Inst_VOP3__V_CMP_F_I16
Inst_VOP3__V_CMP_F_I16(InFmt_VOP3 *)
Definition: instructions.cc:19407
Gcn3ISA::Inst_VOP2__V_MIN_F32::~Inst_VOP2__V_MIN_F32
~Inst_VOP2__V_MIN_F32()
Definition: instructions.cc:5890
Gcn3ISA::Inst_SOP2__S_BFE_I64::Inst_SOP2__S_BFE_I64
Inst_SOP2__S_BFE_I64(InFmt_SOP2 *)
Definition: instructions.cc:1257
Gcn3ISA::Inst_VOPC__V_CMP_GT_U64::Inst_VOPC__V_CMP_GT_U64
Inst_VOPC__V_CMP_GT_U64(InFmt_VOPC *)
Definition: instructions.cc:14849
Gcn3ISA::Inst_VOP3__V_CVT_F64_U32::~Inst_VOP3__V_CVT_F64_U32
~Inst_VOP3__V_CVT_F64_U32()
Definition: instructions.cc:25988
Gcn3ISA::Inst_VOPC__V_CMP_LT_U64::~Inst_VOPC__V_CMP_LT_U64
~Inst_VOPC__V_CMP_LT_U64()
Definition: instructions.cc:14762
Gcn3ISA::Inst_SOPP__S_CBRANCH_VCCNZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4028
Gcn3ISA::Inst_SOPC__S_CMP_LT_U32::~Inst_SOPC__S_CMP_LT_U32
~Inst_SOPC__S_CMP_LT_U32()
Definition: instructions.cc:3484
Gcn3ISA::Inst_SOP2__S_ASHR_I64::Inst_SOP2__S_ASHR_I64
Inst_SOP2__S_ASHR_I64(InFmt_SOP2 *)
Definition: instructions.cc:1046
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMAX::~Inst_MUBUF__BUFFER_ATOMIC_UMAX
~Inst_MUBUF__BUFFER_ATOMIC_UMAX()
Definition: instructions.cc:36649
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SUB::Inst_MIMG__IMAGE_ATOMIC_SUB
Inst_MIMG__IMAGE_ATOMIC_SUB(InFmt_MIMG *)
Definition: instructions.cc:38054
Wavefront::rdLmReqsInPipe
int rdLmReqsInPipe
Definition: wavefront.hh:182
Gcn3ISA::Inst_VOP1__V_FRACT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9305
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_LZ_O::~Inst_MIMG__IMAGE_SAMPLE_LZ_O
~Inst_MIMG__IMAGE_SAMPLE_LZ_O()
Definition: instructions.cc:38702
Gcn3ISA::Inst_VOP3__V_CMPX_GT_U32::~Inst_VOP3__V_CMPX_GT_U32
~Inst_VOP3__V_CMPX_GT_U32()
Definition: instructions.cc:21730
Gcn3ISA::Inst_VOPC__V_CMP_EQ_U32::Inst_VOPC__V_CMP_EQ_U32
Inst_VOPC__V_CMP_EQ_U32(InFmt_VOPC *)
Definition: instructions.cc:13819
Gcn3ISA::Inst_DS__DS_INC_RTN_U32::Inst_DS__DS_INC_RTN_U32
Inst_DS__DS_INC_RTN_U32(InFmt_DS *)
Definition: instructions.cc:31708
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORD::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:4794
Gcn3ISA::Inst_DS__DS_SUB_SRC2_U64::Inst_DS__DS_SUB_SRC2_U64
Inst_DS__DS_SUB_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:34180
Gcn3ISA::Inst_VOPC__V_CMPX_GE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15413
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_U16::Inst_VOPC__V_CMPX_EQ_U16
Inst_VOPC__V_CMPX_EQ_U16(InFmt_VOPC *)
Definition: instructions.cc:13337
Gcn3ISA::Inst_VOPC__V_CMP_NE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14654
Gcn3ISA::Inst_VOPC__V_CMP_GT_I64::Inst_VOPC__V_CMP_GT_I64
Inst_VOPC__V_CMP_GT_I64(InFmt_VOPC *)
Definition: instructions.cc:14611
Gcn3ISA::Inst_SOPP__S_SENDMSG::Inst_SOPP__S_SENDMSG
Inst_SOPP__S_SENDMSG(InFmt_SOPP *)
Definition: instructions.cc:4224
Gcn3ISA::Inst_SOP1__S_WQM_B64::~Inst_SOP1__S_WQM_B64
~Inst_SOP1__S_WQM_B64()
Definition: instructions.cc:2086
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SMAX::Inst_MIMG__IMAGE_ATOMIC_SMAX
Inst_MIMG__IMAGE_ATOMIC_SMAX(InFmt_MIMG *)
Definition: instructions.cc:38134
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SWAP::~Inst_MUBUF__BUFFER_ATOMIC_SWAP
~Inst_MUBUF__BUFFER_ATOMIC_SWAP()
Definition: instructions.cc:36458
Gcn3ISA::Inst_FLAT__FLAT_STORE_BYTE::Inst_FLAT__FLAT_STORE_BYTE
Inst_FLAT__FLAT_STORE_BYTE(InFmt_FLAT *)
Definition: instructions.cc:39973
Gcn3ISA::Inst_VOP1__V_FLOOR_F16::Inst_VOP1__V_FLOOR_F16
Inst_VOP1__V_FLOOR_F16(InFmt_VOP1 *)
Definition: instructions.cc:9220
Gcn3ISA::Inst_VOP3__V_MAX_F16::~Inst_VOP3__V_MAX_F16
~Inst_VOP3__V_MAX_F16()
Definition: instructions.cc:24969
Gcn3ISA::Inst_VOP3__V_MAX_I16::~Inst_VOP3__V_MAX_I16
~Inst_VOP3__V_MAX_I16()
Definition: instructions.cc:25051
Wavefront::S_STOPPED
@ S_STOPPED
Definition: wavefront.hh:64
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B_O::Inst_MIMG__IMAGE_SAMPLE_B_O
Inst_MIMG__IMAGE_SAMPLE_B_O(InFmt_MIMG *)
Definition: instructions.cc:38662
Gcn3ISA::Inst_VOP3__V_CMP_LE_F32::Inst_VOP3__V_CMP_LE_F32
Inst_VOP3__V_CMP_LE_F32(InFmt_VOP3 *)
Definition: instructions.cc:16767
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:33396
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX3::Inst_MUBUF__BUFFER_STORE_DWORDX3
Inst_MUBUF__BUFFER_STORE_DWORDX3(InFmt_MUBUF *)
Definition: instructions.cc:36109
Wavefront::hasBarrier
bool hasBarrier() const
Definition: wavefront.cc:1430
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_SSHORT::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35282
Gcn3ISA::Inst_VOP3__V_FREXP_MANT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27170
Gcn3ISA::Inst_VOP3__V_FLOOR_F16::Inst_VOP3__V_FLOOR_F16
Inst_VOP3__V_FLOOR_F16(InFmt_VOP3 *)
Definition: instructions.cc:27431
Gcn3ISA::Inst_VOP3__V_MAX3_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28470
Gcn3ISA::Inst_VOPC__V_CMPX_NE_I64::~Inst_VOPC__V_CMPX_NE_I64
~Inst_VOPC__V_CMPX_NE_I64()
Definition: instructions.cc:15129
Gcn3ISA::countZeroBitsMsb
ScalarRegI32 countZeroBitsMsb(T val)
Definition: inst_util.hh:162
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4705
Gcn3ISA::Inst_DS__DS_MAX_RTN_I64::~Inst_DS__DS_MAX_RTN_I64
~Inst_DS__DS_MAX_RTN_I64()
Definition: instructions.cc:33250
Gcn3ISA::Inst_VOP3__V_MAX_F64::Inst_VOP3__V_MAX_F64
Inst_VOP3__V_MAX_F64(InFmt_VOP3 *)
Definition: instructions.cc:30217
Gcn3ISA::Inst_VOPC__V_CMP_LE_I32::Inst_VOPC__V_CMP_LE_I32
Inst_VOPC__V_CMP_LE_I32(InFmt_VOPC *)
Definition: instructions.cc:13612
Gcn3ISA::VecOperand::readSrc
void readSrc()
certain vector operands can read from the vrf/srf or constants.
Definition: operand.hh:129
Gcn3ISA::Inst_VOP3__V_CMP_LE_F16::Inst_VOP3__V_CMP_LE_F16
Inst_VOP3__V_CMP_LE_F16(InFmt_VOP3 *)
Definition: instructions.cc:16095
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMAX_X2::~Inst_FLAT__FLAT_ATOMIC_SMAX_X2
~Inst_FLAT__FLAT_ATOMIC_SMAX_X2()
Definition: instructions.cc:41602
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40386
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_SBYTE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35151
Gcn3ISA::InFmt_VOP2::VSRC1
unsigned int VSRC1
Definition: gpu_decoder.hh:1541
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX16::Inst_SMEM__S_LOAD_DWORDX16
Inst_SMEM__S_LOAD_DWORDX16(InFmt_SMEM *)
Definition: instructions.cc:4691
Gcn3ISA::Inst_MIMG__IMAGE_STORE::~Inst_MIMG__IMAGE_STORE
~Inst_MIMG__IMAGE_STORE()
Definition: instructions.cc:37847
Gcn3ISA::Inst_VOP3__V_CMPX_T_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22787
Gcn3ISA::Inst_VOP3__V_ADD_F32::Inst_VOP3__V_ADD_F32
Inst_VOP3__V_ADD_F32(InFmt_VOP3 *)
Definition: instructions.cc:23172
Gcn3ISA::Inst_DS__DS_MIN_RTN_U32::Inst_DS__DS_MIN_RTN_U32
Inst_DS__DS_MIN_RTN_U32(InFmt_DS *)
Definition: instructions.cc:31780
Gcn3ISA::InFmt_FLAT_1::DATA
unsigned int DATA
Definition: gpu_decoder.hh:1398
Gcn3ISA::Inst_VOP3__V_MUL_LO_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30342
Gcn3ISA::Inst_SOP2__S_ANDN2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:636
Gcn3ISA::Inst_SOPP__S_BARRIER::execute
void execute(GPUDynInstPtr) override
Synchronize waves within a workgroup.
Definition: instructions.cc:4110
Gcn3ISA::Inst_VOP3__V_SUBREV_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23293
Gcn3ISA::Inst_VOP3__V_MAC_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24241
Gcn3ISA::Inst_VOP3__V_CVT_F64_I32::Inst_VOP3__V_CVT_F64_I32
Inst_VOP3__V_CVT_F64_I32(InFmt_VOP3 *)
Definition: instructions.cc:25303
Gcn3ISA::Inst_VOP3__V_CMP_GE_I32::Inst_VOP3__V_CMP_GE_I32
Inst_VOP3__V_CMP_GE_I32(InFmt_VOP3 *)
Definition: instructions.cc:20880
Gcn3ISA::Inst_SOP1
Definition: op_encodings.hh:119
Gcn3ISA::ScalarOperand::setBit
std::enable_if_t< Condition, void > setBit(int bit, int bit_val)
bit access to scalar data.
Definition: operand.hh:493
Gcn3ISA::Inst_DS__DS_WRITE_SRC2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34407
Gcn3ISA::Inst_VOP3__V_CMPX_GE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23058
Gcn3ISA::InFmt_VOP_SDWA::SRC0_SEL
unsigned int SRC0_SEL
Definition: gpu_decoder.hh:1598
Gcn3ISA::Inst_VOPC__V_CMPX_LE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14349
Gcn3ISA::Inst_SMEM__S_DCACHE_INV::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5324
Gcn3ISA::Inst_VOPC__V_CMP_LT_I64::Inst_VOPC__V_CMP_LT_I64
Inst_VOPC__V_CMP_LT_I64(InFmt_VOPC *)
Definition: instructions.cc:14518
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE0::Inst_VOP1__V_CVT_F32_UBYTE0
Inst_VOP1__V_CVT_F32_UBYTE0(InFmt_VOP1 *)
Definition: instructions.cc:7826
Gcn3ISA::Inst_SOP2__S_XNOR_B64::~Inst_SOP2__S_XNOR_B64
~Inst_SOP2__S_XNOR_B64()
Definition: instructions.cc:869
Gcn3ISA::Inst_SOPC__S_CMP_GT_I32::Inst_SOPC__S_CMP_GT_I32
Inst_SOPC__S_CMP_GT_I32(InFmt_SOPC *)
Definition: instructions.cc:3270
Gcn3ISA::Inst_VOP1__V_SQRT_F32::~Inst_VOP1__V_SQRT_F32
~Inst_VOP1__V_SQRT_F32()
Definition: instructions.cc:8533
Gcn3ISA::Inst_VOP3__V_MAD_I32_I24::~Inst_VOP3__V_MAD_I32_I24
~Inst_VOP3__V_MAD_I32_I24()
Definition: instructions.cc:27758
Gcn3ISA::Inst_DS__DS_ADD_F32::~Inst_DS__DS_ADD_F32
~Inst_DS__DS_ADD_F32()
Definition: instructions.cc:31521
Gcn3ISA::Inst_VOP3__V_CMP_GE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16880
Gcn3ISA::Inst_VOP3__V_CMP_EQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16748
Gcn3ISA::Inst_VOPC__V_CMP_NE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12718
Gcn3ISA::Inst_VOP3__V_CMPX_GT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20499
Gcn3ISA::Inst_VOPC__V_CMPX_GT_F16::~Inst_VOPC__V_CMPX_GT_F16
~Inst_VOPC__V_CMPX_GT_F16()
Definition: instructions.cc:10286
Gcn3ISA::Inst_VOP3__V_FREXP_MANT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27045
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX16::~Inst_SMEM__S_LOAD_DWORDX16
~Inst_SMEM__S_LOAD_DWORDX16()
Definition: instructions.cc:4698
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:37574
Gcn3ISA::Inst_VOP3__V_ADDC_U32::~Inst_VOP3__V_ADDC_U32
~Inst_VOP3__V_ADDC_U32()
Definition: instructions.cc:24428
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22886
Gcn3ISA::Inst_VOP3__V_CMP_NGT_F32::Inst_VOP3__V_CMP_NGT_F32
Inst_VOP3__V_CMP_NGT_F32(InFmt_VOP3 *)
Definition: instructions.cc:17032
Gcn3ISA::Inst_VOPC__V_CMP_O_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11759
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34691
Gcn3ISA::Inst_VOPC__V_CMP_LT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14768
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_SSHORT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35276
Gcn3ISA::Inst_VOP2__V_MAC_F32::Inst_VOP2__V_MAC_F32
Inst_VOP2__V_MAC_F32(InFmt_VOP2 *)
Definition: instructions.cc:6344
Gcn3ISA::Inst_VOP2__V_MUL_LEGACY_F32::~Inst_VOP2__V_MUL_LEGACY_F32
~Inst_VOP2__V_MUL_LEGACY_F32()
Definition: instructions.cc:5605
Gcn3ISA::Inst_VOPC__V_CMPX_NLT_F64::~Inst_VOPC__V_CMPX_NLT_F64
~Inst_VOPC__V_CMPX_NLT_F64()
Definition: instructions.cc:12502
Gcn3ISA::Inst_VOPC__V_CMP_O_F64::Inst_VOPC__V_CMP_O_F64
Inst_VOPC__V_CMP_O_F64(InFmt_VOPC *)
Definition: instructions.cc:11746
Gcn3ISA::Inst_VOP1__V_RCP_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8366
Gcn3ISA::Inst_VOP3__V_CMPX_NGT_F64::Inst_VOP3__V_CMPX_NGT_F64
Inst_VOP3__V_CMPX_NGT_F64(InFmt_VOP3 *)
Definition: instructions.cc:19154
Gcn3ISA::Inst_VOPC
Definition: op_encodings.hh:316
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:4565
Gcn3ISA::Inst_VOP3__V_CVT_RPI_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25601
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_CL::~Inst_MIMG__IMAGE_GATHER4_CL
~Inst_MIMG__IMAGE_GATHER4_CL()
Definition: instructions.cc:38869
Gcn3ISA::Inst_VOPC__V_CMP_GT_I16::~Inst_VOPC__V_CMP_GT_I16
~Inst_VOPC__V_CMP_GT_I16()
Definition: instructions.cc:12681
Gcn3ISA::Inst_VOPC__V_CMP_LT_F16::~Inst_VOPC__V_CMP_LT_F16
~Inst_VOPC__V_CMP_LT_F16()
Definition: instructions.cc:9944
Gcn3ISA::Inst_SOP1__S_BITSET0_B64::Inst_SOP1__S_BITSET0_B64
Inst_SOP1__S_BITSET0_B64(InFmt_SOP1 *)
Definition: instructions.cc:2552
Gcn3ISA::Inst_VOP3__V_RCP_F64::Inst_VOP3__V_RCP_F64
Inst_VOP3__V_RCP_F64(InFmt_VOP3 *)
Definition: instructions.cc:26560
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_UBYTE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35111
Gcn3ISA::Inst_VOPC__V_CMP_LT_U64::Inst_VOPC__V_CMP_LT_U64
Inst_VOPC__V_CMP_LT_U64(InFmt_VOPC *)
Definition: instructions.cc:14756
Gcn3ISA::Inst_VOPC__V_CMPX_LG_F16::Inst_VOPC__V_CMPX_LG_F16
Inst_VOPC__V_CMPX_LG_F16(InFmt_VOPC *)
Definition: instructions.cc:10297
Gcn3ISA::Inst_DS__DS_RSUB_SRC2_U32::Inst_DS__DS_RSUB_SRC2_U32
Inst_DS__DS_RSUB_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:33752
Gcn3ISA::Inst_DS__DS_WRXCHG_RTN_B64::Inst_DS__DS_WRXCHG_RTN_B64
Inst_DS__DS_WRXCHG_RTN_B64(InFmt_DS *)
Definition: instructions.cc:33372
Gcn3ISA::Inst_VOP3__V_EXP_F16::Inst_VOP3__V_EXP_F16
Inst_VOP3__V_EXP_F16(InFmt_VOP3 *)
Definition: instructions.cc:27371
Gcn3ISA::Inst_VOP3__V_DIV_FIXUP_F32::~Inst_VOP3__V_DIV_FIXUP_F32
~Inst_VOP3__V_DIV_FIXUP_F32()
Definition: instructions.cc:29004
Gcn3ISA::Inst_VOPC__V_CMPX_F_U16::~Inst_VOPC__V_CMPX_F_U16
~Inst_VOPC__V_CMPX_F_U16()
Definition: instructions.cc:13284
Gcn3ISA::Inst_VOPC__V_CMPX_LT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13071
Gcn3ISA::Inst_VOP3__V_CMPX_LT_I32::~Inst_VOP3__V_CMPX_LT_I32
~Inst_VOP3__V_CMPX_LT_I32()
Definition: instructions.cc:21287
Gcn3ISA::Inst_VOPC__V_CMP_NEQ_F64::Inst_VOPC__V_CMP_NEQ_F64
Inst_VOPC__V_CMP_NEQ_F64(InFmt_VOPC *)
Definition: instructions.cc:11941
Gcn3ISA::Inst_VOP1__V_RSQ_F64::Inst_VOP1__V_RSQ_F64
Inst_VOP1__V_RSQ_F64(InFmt_VOP1 *)
Definition: instructions.cc:8485
Gcn3ISA::Inst_VOP2__V_SUBREV_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5579
Wavefront::rawDist
std::unordered_map< int, uint64_t > rawDist
Definition: wavefront.hh:231
Gcn3ISA::Inst_SOP2__S_CSELECT_B64::~Inst_SOP2__S_CSELECT_B64
~Inst_SOP2__S_CSELECT_B64()
Definition: instructions.cc:391
Gcn3ISA::Inst_VOP3__V_SAD_U8::Inst_VOP3__V_SAD_U8
Inst_VOP3__V_SAD_U8(InFmt_VOP3 *)
Definition: instructions.cc:28748
Gcn3ISA::InFmt_VOP1::SRC0
unsigned int SRC0
Definition: gpu_decoder.hh:1533
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_AND_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41662
Gcn3ISA::Inst_DS__DS_MIN_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33276
Wavefront::decLGKMInstsIssued
void decLGKMInstsIssued()
Definition: wavefront.cc:1359
Gcn3ISA::InFmt_VOP_DPP::DPP_CTRL
unsigned int DPP_CTRL
Definition: gpu_decoder.hh:1581
ComputeUnit::numAtBarrier
int numAtBarrier(int bar_id)
Definition: compute_unit.cc:666
Gcn3ISA::Inst_DS__DS_WRXCHG2_RTN_B64::Inst_DS__DS_WRXCHG2_RTN_B64
Inst_DS__DS_WRXCHG2_RTN_B64(InFmt_DS *)
Definition: instructions.cc:33391
Gcn3ISA::Inst_VOP3__V_LDEXP_F16::~Inst_VOP3__V_LDEXP_F16
~Inst_VOP3__V_LDEXP_F16()
Definition: instructions.cc:25193
Gcn3ISA::Inst_VOP3__V_CMPX_TRU_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17717
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:39187
Gcn3ISA::Inst_SMEM__S_MEMTIME::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5388
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SUB_X2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41514
Gcn3ISA::Inst_DS__DS_MSKOR_RTN_B64::~Inst_DS__DS_MSKOR_RTN_B64
~Inst_DS__DS_MSKOR_RTN_B64()
Definition: instructions.cc:33358
Wavefront::pendingFetch
bool pendingFetch
Definition: wavefront.hh:109
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34952
Gcn3ISA::Inst_DS__DS_MIN_RTN_I64::~Inst_DS__DS_MIN_RTN_I64
~Inst_DS__DS_MIN_RTN_I64()
Definition: instructions.cc:33232
Gcn3ISA::Inst_SOP1__S_BCNT0_I32_B32::Inst_SOP1__S_BCNT0_I32_B32
Inst_SOP1__S_BCNT0_I32_B32(InFmt_SOP1 *)
Definition: instructions.cc:2156
Wavefront::outstandingReqsRdLm
int outstandingReqsRdLm
Definition: wavefront.hh:177
Gcn3ISA::InstFormat::iFmt_VOP_DPP
InFmt_VOP_DPP iFmt_VOP_DPP
Definition: gpu_decoder.hh:1637
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE3::~Inst_VOP3__V_CVT_F32_UBYTE3
~Inst_VOP3__V_CVT_F32_UBYTE3()
Definition: instructions.cc:25896
Gcn3ISA::Inst_DS__DS_ADD_RTN_U64::Inst_DS__DS_ADD_RTN_U64
Inst_DS__DS_ADD_RTN_U64(InFmt_DS *)
Definition: instructions.cc:33135
Gcn3ISA::Inst_DS__DS_NOP::Inst_DS__DS_NOP
Inst_DS__DS_NOP(InFmt_DS *)
Definition: instructions.cc:31499
Gcn3ISA::Inst_VOPC__V_CMPX_O_F16::~Inst_VOPC__V_CMPX_O_F16
~Inst_VOPC__V_CMPX_O_F16()
Definition: instructions.cc:10340
Gcn3ISA::Inst_VOP3__V_CMPX_F_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20028
Gcn3ISA::Inst_VOPC__V_CMPX_NE_I32::~Inst_VOPC__V_CMPX_NE_I32
~Inst_VOPC__V_CMPX_NE_I32()
Definition: instructions.cc:14161
Gcn3ISA::Inst_VOPC__V_CMP_F_I64::~Inst_VOPC__V_CMP_F_I64
~Inst_VOPC__V_CMP_F_I64()
Definition: instructions.cc:14498
Gcn3ISA::InFmt_VOP_SDWA::SRC0_SEXT
unsigned int SRC0_SEXT
Definition: gpu_decoder.hh:1599
Gcn3ISA::Inst_DS__DS_WRITE2ST64_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31367
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37553
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_DEC::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36792
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37392
Gcn3ISA::Inst_VOP3__V_CMPX_GE_I32::Inst_VOP3__V_CMPX_GE_I32
Inst_VOP3__V_CMPX_GE_I32(InFmt_VOP3 *)
Definition: instructions.cc:21495
Gcn3ISA::Inst_SOPP__S_BRANCH::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3897
Gcn3ISA::Inst_VOPC__V_CMP_LT_I32::Inst_VOPC__V_CMP_LT_I32
Inst_VOPC__V_CMP_LT_I32(InFmt_VOPC *)
Definition: instructions.cc:13550
Gcn3ISA::Inst_SOPK__S_SETREG_IMM32_B32::~Inst_SOPK__S_SETREG_IMM32_B32
~Inst_SOPK__S_SETREG_IMM32_B32()
Definition: instructions.cc:1851
Gcn3ISA::Inst_SOPP__S_SETPRIO::~Inst_SOPP__S_SETPRIO
~Inst_SOPP__S_SETPRIO()
Definition: instructions.cc:4212
Gcn3ISA::Inst_SOP1__S_MOV_FED_B32::Inst_SOP1__S_MOV_FED_B32
Inst_SOP1__S_MOV_FED_B32(InFmt_SOP1 *)
Definition: instructions.cc:3183
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39673
Gcn3ISA::Inst_VOP3__V_CMP_T_I64::~Inst_VOP3__V_CMP_T_I64
~Inst_VOP3__V_CMP_T_I64()
Definition: instructions.cc:22164
Gcn3ISA::Inst_VOP3__V_CEIL_F64::Inst_VOP3__V_CEIL_F64
Inst_VOP3__V_CEIL_F64(InFmt_VOP3 *)
Definition: instructions.cc:26057
Gcn3ISA::Inst_VOP3__V_CMPX_NLE_F32::Inst_VOP3__V_CMPX_NLE_F32
Inst_VOP3__V_CMPX_NLE_F32(InFmt_VOP3 *)
Definition: instructions.cc:17601
Gcn3ISA::Inst_VOP2__V_AND_B32::~Inst_VOP2__V_AND_B32
~Inst_VOP2__V_AND_B32()
Definition: instructions.cc:6213
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:5739
Gcn3ISA::Inst_VOP1__V_CVT_F32_F16::Inst_VOP1__V_CVT_F32_F16
Inst_VOP1__V_CVT_F32_F16(InFmt_VOP1 *)
Definition: instructions.cc:7668
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_LZ_O::Inst_MIMG__IMAGE_GATHER4_LZ_O
Inst_MIMG__IMAGE_GATHER4_LZ_O(InFmt_MIMG *)
Definition: instructions.cc:39129
Gcn3ISA::Inst_VOP3__V_CMP_GT_I64::Inst_VOP3__V_CMP_GT_I64
Inst_VOP3__V_CMP_GT_I64(InFmt_VOP3 *)
Definition: instructions.cc:22032
Gcn3ISA::Inst_VOP3__V_MUL_HI_U32::Inst_VOP3__V_MUL_HI_U32
Inst_VOP3__V_MUL_HI_U32(InFmt_VOP3 *)
Definition: instructions.cc:30373
Gcn3ISA::Inst_VOPC__V_CMPX_LT_U64::Inst_VOPC__V_CMPX_LT_U64
Inst_VOPC__V_CMPX_LT_U64(InFmt_VOPC *)
Definition: instructions.cc:15241
Gcn3ISA::Inst_SOPK__S_CMPK_GE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1643
Gcn3ISA::Inst_VOP1__V_FFBH_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8791
Gcn3ISA::Inst_VOP3__V_CUBEMA_F32::Inst_VOP3__V_CUBEMA_F32
Inst_VOP3__V_CUBEMA_F32(InFmt_VOP3 *)
Definition: instructions.cc:27892
Gcn3ISA::Inst_VOP3__V_COS_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27552
Gcn3ISA::Inst_VOP3__V_CMPX_NGE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16545
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:34031
Gcn3ISA::InFmt_DS_1::DATA0
unsigned int DATA0
Definition: gpu_decoder.hh:1365
Gcn3ISA::Inst_VOP3__V_LDEXP_F64::~Inst_VOP3__V_LDEXP_F64
~Inst_VOP3__V_LDEXP_F64()
Definition: instructions.cc:30278
Gcn3ISA::Inst_SOP1__S_FF1_I32_B64::Inst_SOP1__S_FF1_I32_B64
Inst_SOP1__S_FF1_I32_B64(InFmt_SOP1 *)
Definition: instructions.cc:2346
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_L::~Inst_MIMG__IMAGE_SAMPLE_C_L
~Inst_MIMG__IMAGE_SAMPLE_C_L()
Definition: instructions.cc:38520
Gcn3ISA::Inst_VOP3__V_CMP_NE_U64::~Inst_VOP3__V_CMP_NE_U64
~Inst_VOP3__V_CMP_NE_U64()
Definition: instructions.cc:22385
Gcn3ISA::Inst_DS__DS_MIN_SRC2_U64::Inst_DS__DS_MIN_SRC2_U64
Inst_DS__DS_MIN_SRC2_U64(InFmt_DS *)
Definition: instructions.cc:34295
Gcn3ISA::Inst_VOP3__V_CVT_PKRTZ_F16_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30954
Gcn3ISA::Inst_MIMG__IMAGE_STORE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37853
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SWAP::~Inst_MIMG__IMAGE_ATOMIC_SWAP
~Inst_MIMG__IMAGE_ATOMIC_SWAP()
Definition: instructions.cc:37986
Gcn3ISA::Inst_DS__DS_MIN_SRC2_I32::Inst_DS__DS_MIN_SRC2_I32
Inst_DS__DS_MIN_SRC2_I32(InFmt_DS *)
Definition: instructions.cc:33810
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:26988
Gcn3ISA::Inst_DS__DS_WRXCHG_RTN_B32::Inst_DS__DS_WRXCHG_RTN_B32
Inst_DS__DS_WRXCHG_RTN_B32(InFmt_DS *)
Definition: instructions.cc:31888
Wavefront::execUnitId
int execUnitId
Definition: wavefront.hh:100
Gcn3ISA::Inst_VOPC__V_CMPX_CLASS_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9769
Gcn3ISA::Inst_SOPK__S_CMPK_LG_U32::Inst_SOPK__S_CMPK_LG_U32
Inst_SOPK__S_CMPK_LG_U32(InFmt_SOPK *)
Definition: instructions.cc:1581
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38673
Gcn3ISA::Inst_SOPK__S_CMOVK_I32::~Inst_SOPK__S_CMOVK_I32
~Inst_SOPK__S_CMOVK_I32()
Definition: instructions.cc:1384
Gcn3ISA::Inst_VOP3__V_CMP_T_U64::Inst_VOP3__V_CMP_T_U64
Inst_VOP3__V_CMP_T_U64(InFmt_VOP3 *)
Definition: instructions.cc:22462
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:4622
Gcn3ISA::Inst_VOP3__V_CMP_T_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22170
Gcn3ISA::Inst_VOP3__V_CMPX_NLE_F64::Inst_VOP3__V_CMPX_NLE_F64
Inst_VOP3__V_CMPX_NLE_F64(InFmt_VOP3 *)
Definition: instructions.cc:19210
Gcn3ISA::Inst_VOP3__V_BFI_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28011
Gcn3ISA::Inst_SOPK__S_CMPK_EQ_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1418
Gcn3ISA::Inst_VOPC__V_CMP_U_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10076
Gcn3ISA::Inst_VOP3__V_RNDNE_F32::Inst_VOP3__V_RNDNE_F32
Inst_VOP3__V_RNDNE_F32(InFmt_VOP3 *)
Definition: instructions.cc:26286
Gcn3ISA::Inst_VOPC__V_CMPX_GT_U16::Inst_VOPC__V_CMPX_GT_U16
Inst_VOPC__V_CMPX_GT_U16(InFmt_VOPC *)
Definition: instructions.cc:13401
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX3::Inst_FLAT__FLAT_LOAD_DWORDX3
Inst_FLAT__FLAT_LOAD_DWORDX3(InFmt_FLAT *)
Definition: instructions.cc:39805
Gcn3ISA::Inst_VOP3__V_SUBB_U32::Inst_VOP3__V_SUBB_U32
Inst_VOP3__V_SUBB_U32(InFmt_VOP3_SDST_ENC *)
Definition: instructions.cc:24473
Gcn3ISA::Inst_VOPC__V_CMP_NLT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11986
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_LZ::Inst_MIMG__IMAGE_GATHER4_LZ
Inst_MIMG__IMAGE_GATHER4_LZ(InFmt_MIMG *)
Definition: instructions.cc:38928
Gcn3ISA::Inst_DS__DS_ADD_RTN_U32::Inst_DS__DS_ADD_RTN_U32
Inst_DS__DS_ADD_RTN_U32(InFmt_DS *)
Definition: instructions.cc:31654
Gcn3ISA::Inst_VOPC__V_CMP_LG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10665
Gcn3ISA::Inst_DS__DS_PERMUTE_B32::~Inst_DS__DS_PERMUTE_B32
~Inst_DS__DS_PERMUTE_B32()
Definition: instructions.cc:32540
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34853
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORD::Inst_MUBUF__BUFFER_STORE_DWORD
Inst_MUBUF__BUFFER_STORE_DWORD(InFmt_MUBUF *)
Definition: instructions.cc:35914
Gcn3ISA::Inst_VOPC__V_CMPX_NE_U64::~Inst_VOPC__V_CMPX_NE_U64
~Inst_VOPC__V_CMPX_NE_U64()
Definition: instructions.cc:15375
Gcn3ISA::Inst_VOP1__V_TRUNC_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8035
Gcn3ISA::Inst_VOP2__V_MAX_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7131
Gcn3ISA::Inst_VOPC__V_CMPX_GE_F64::~Inst_VOPC__V_CMPX_GE_F64
~Inst_VOPC__V_CMPX_GE_F64()
Definition: instructions.cc:12233
Gcn3ISA::Inst_VOP3__V_LERP_U8::~Inst_VOP3__V_LERP_U8
~Inst_VOP3__V_LERP_U8()
Definition: instructions.cc:28167
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX3::Inst_MUBUF__BUFFER_LOAD_DWORDX3
Inst_MUBUF__BUFFER_LOAD_DWORDX3(InFmt_MUBUF *)
Definition: instructions.cc:35497
Gcn3ISA::Inst_VOP3__V_MIN_U32::Inst_VOP3__V_MIN_U32
Inst_VOP3__V_MIN_U32(InFmt_VOP3 *)
Definition: instructions.cc:23894
Gcn3ISA::Inst_SOPK__S_CMPK_GT_U32::Inst_SOPK__S_CMPK_GT_U32
Inst_SOPK__S_CMPK_GT_U32(InFmt_SOPK *)
Definition: instructions.cc:1606
Gcn3ISA::Inst_VOP3__V_CMP_LE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19834
Gcn3ISA::Inst_VOP3__V_CMPX_T_U64::~Inst_VOP3__V_CMPX_T_U64
~Inst_VOP3__V_CMPX_T_U64()
Definition: instructions.cc:23095
Gcn3ISA::Inst_VOP3__V_CVT_F16_I16::~Inst_VOP3__V_CVT_F16_I16
~Inst_VOP3__V_CVT_F16_I16()
Definition: instructions.cc:27240
Gcn3ISA::Inst_VOP2__V_MADAK_F32::~Inst_VOP2__V_MADAK_F32
~Inst_VOP2__V_MADAK_F32()
Definition: instructions.cc:6448
Gcn3ISA::Inst_VOP3__V_DIV_FMAS_F32::Inst_VOP3__V_DIV_FMAS_F32
Inst_VOP3__V_DIV_FMAS_F32(InFmt_VOP3 *)
Definition: instructions.cc:29304
Gcn3ISA::Inst_VOP3__V_ASHRREV_I16::Inst_VOP3__V_ASHRREV_I16
Inst_VOP3__V_ASHRREV_I16(InFmt_VOP3 *)
Definition: instructions.cc:24920
Gcn3ISA::Inst_VOP2__V_OR_B32::Inst_VOP2__V_OR_B32
Inst_VOP2__V_OR_B32(InFmt_VOP2 *)
Definition: instructions.cc:6239
Gcn3ISA::Inst_VOP3__V_LSHRREV_B16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24885
Gcn3ISA::Inst_SOP2__S_ANDN2_B64::~Inst_SOP2__S_ANDN2_B64
~Inst_SOP2__S_ANDN2_B64()
Definition: instructions.cc:629
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37227
Gcn3ISA::Inst_DS__DS_MSKOR_B64::~Inst_DS__DS_MSKOR_B64
~Inst_DS__DS_MSKOR_B64()
Definition: instructions.cc:32896
Gcn3ISA::Inst_SOP2__S_ADD_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:60
Gcn3ISA::Inst_DS__DS_MAX_U64::Inst_DS__DS_MAX_U64
Inst_DS__DS_MAX_U64(InFmt_DS *)
Definition: instructions.cc:32819
Gcn3ISA::Inst_DS__DS_READ_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32072
X86ISA::addr
Bitfield< 3 > addr
Definition: types.hh:80
Gcn3ISA::Inst_DS__DS_GWS_INIT::~Inst_DS__DS_GWS_INIT
~Inst_DS__DS_GWS_INIT()
Definition: instructions.cc:34046
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2::~Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2
~Inst_MUBUF__BUFFER_ATOMIC_UMIN_X2()
Definition: instructions.cc:36949
Gcn3ISA::Inst_SOPC__S_CMP_EQ_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3230
Gcn3ISA::Inst_VOPC__V_CMPX_U_F64::~Inst_VOPC__V_CMPX_U_F64
~Inst_VOPC__V_CMPX_U_F64()
Definition: instructions.cc:12301
Gcn3ISA::Inst_VINTRP__V_INTERP_P2_F32::Inst_VINTRP__V_INTERP_P2_F32
Inst_VINTRP__V_INTERP_P2_F32(InFmt_VINTRP *)
Definition: instructions.cc:15479
Gcn3ISA::Inst_VOPC__V_CMP_LG_F16::Inst_VOPC__V_CMP_LG_F16
Inst_VOPC__V_CMP_LG_F16(InFmt_VOPC *)
Definition: instructions.cc:10009
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_INC::~Inst_FLAT__FLAT_ATOMIC_INC
~Inst_FLAT__FLAT_ATOMIC_INC()
Definition: instructions.cc:41018
Gcn3ISA::Inst_VOP3__V_CMP_NGT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18325
Gcn3ISA::Inst_VOPC__V_CMPX_GT_U16::~Inst_VOPC__V_CMPX_GT_U16
~Inst_VOPC__V_CMPX_GT_U16()
Definition: instructions.cc:13407
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_OR_X2::Inst_MUBUF__BUFFER_ATOMIC_OR_X2
Inst_MUBUF__BUFFER_ATOMIC_OR_X2(InFmt_MUBUF *)
Definition: instructions.cc:37044
Gcn3ISA::Inst_VOPC__V_CMP_GE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13955
Gcn3ISA::Inst_VOP3__V_MAD_F32::~Inst_VOP3__V_MAD_F32
~Inst_VOP3__V_MAD_F32()
Definition: instructions.cc:27700
Gcn3ISA::Inst_VOP3__V_CVT_F64_I32::~Inst_VOP3__V_CVT_F64_I32
~Inst_VOP3__V_CVT_F64_I32()
Definition: instructions.cc:25310
Gcn3ISA::Inst_VOPC__V_CMP_F_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14742
Gcn3ISA::Inst_VOPC__V_CMP_NE_I32::~Inst_VOPC__V_CMP_NE_I32
~Inst_VOPC__V_CMP_NE_I32()
Definition: instructions.cc:13680
Gcn3ISA::Inst_DS__DS_CMPST_B32::~Inst_DS__DS_CMPST_B32
~Inst_DS__DS_CMPST_B32()
Definition: instructions.cc:31422
Gcn3ISA::Inst_VOP3__V_CVT_U32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25942
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39158
Gcn3ISA::Inst_VOP3__V_BFM_B32::Inst_VOP3__V_BFM_B32
Inst_VOP3__V_BFM_B32(InFmt_VOP3 *)
Definition: instructions.cc:30861
Gcn3ISA::Inst_VOP1__V_FRACT_F64::Inst_VOP1__V_FRACT_F64
Inst_VOP1__V_FRACT_F64(InFmt_VOP1 *)
Definition: instructions.cc:8878
Gcn3ISA::Inst_VOP3__V_LSHRREV_B64::Inst_VOP3__V_LSHRREV_B64
Inst_VOP3__V_LSHRREV_B64(InFmt_VOP3 *)
Definition: instructions.cc:30759
Gcn3ISA::Inst_DS__DS_CMPST_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31956
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37178
Gcn3ISA::Inst_SOPK__S_ADDK_I32::Inst_SOPK__S_ADDK_I32
Inst_SOPK__S_ADDK_I32(InFmt_SOPK *)
Definition: instructions.cc:1706
Gcn3ISA::Inst_SOP2__S_CSELECT_B32::Inst_SOP2__S_CSELECT_B32
Inst_SOP2__S_CSELECT_B32(InFmt_SOP2 *)
Definition: instructions.cc:357
Gcn3ISA::Inst_SOPC__S_CMP_GE_I32::~Inst_SOPC__S_CMP_GE_I32
~Inst_SOPC__S_CMP_GE_I32()
Definition: instructions.cc:3302
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:27421
Gcn3ISA::Inst_DS__DS_DEC_RTN_U32::~Inst_DS__DS_DEC_RTN_U32
~Inst_DS__DS_DEC_RTN_U32()
Definition: instructions.cc:31731
Gcn3ISA::Inst_VOP3__V_READLANE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30516
Gcn3ISA::Inst_VOPC__V_CMPX_LG_F16::~Inst_VOPC__V_CMPX_LG_F16
~Inst_VOPC__V_CMPX_LG_F16()
Definition: instructions.cc:10304
Gcn3ISA::Inst_SOPP__S_CBRANCH_CDBGSYS::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4343
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMIN::~Inst_MUBUF__BUFFER_ATOMIC_SMIN
~Inst_MUBUF__BUFFER_ATOMIC_SMIN()
Definition: instructions.cc:36568
Gcn3ISA::Inst_SOP1__S_MOVRELS_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3041
Gcn3ISA::Inst_VOP3__V_CMP_NEQ_F32::~Inst_VOP3__V_CMP_NEQ_F32
~Inst_VOP3__V_CMP_NEQ_F32()
Definition: instructions.cc:17106
Gcn3ISA::Inst_VOP3__V_CMP_GT_F16::Inst_VOP3__V_CMP_GT_F16
Inst_VOP3__V_CMP_GT_F16(InFmt_VOP3 *)
Definition: instructions.cc:16114
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_CMPSWAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38023
Gcn3ISA::Inst_VOP3__V_CMP_NLE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17079
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:36098
Gcn3ISA::Inst_VOP3__V_CMPX_F_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21265
Gcn3ISA::Inst_SOP2__S_MUL_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1143
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_UMAX::~Inst_MIMG__IMAGE_ATOMIC_UMAX
~Inst_MIMG__IMAGE_ATOMIC_UMAX()
Definition: instructions.cc:38175
Gcn3ISA::Inst_VOP3__V_EXP_LEGACY_F32::Inst_VOP3__V_EXP_LEGACY_F32
Inst_VOP3__V_EXP_LEGACY_F32(InFmt_VOP3 *)
Definition: instructions.cc:27557
Gcn3ISA::Inst_DS__DS_SUB_U64::Inst_DS__DS_SUB_U64
Inst_DS__DS_SUB_U64(InFmt_DS *)
Definition: instructions.cc:32691
Gcn3ISA::Inst_DS__DS_GWS_SEMA_BR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34081
Gcn3ISA::Inst_VOP3__V_CEIL_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26261
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:38735
Gcn3ISA::Inst_VOP3__V_CMP_T_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20001
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_I64::~Inst_VOPC__V_CMPX_EQ_I64
~Inst_VOPC__V_CMPX_EQ_I64()
Definition: instructions.cc:15033
Gcn3ISA::Inst_VOP3__V_SUB_U16::Inst_VOP3__V_SUB_U16
Inst_VOP3__V_SUB_U16(InFmt_VOP3 *)
Definition: instructions.cc:24708
Gcn3ISA::Inst_VOP3__V_AND_B32::~Inst_VOP3__V_AND_B32
~Inst_VOP3__V_AND_B32()
Definition: instructions.cc:24107
Gcn3ISA::Inst_VOP3__V_MAC_F32::~Inst_VOP3__V_MAC_F32
~Inst_VOP3__V_MAC_F32()
Definition: instructions.cc:24235
Gcn3ISA::Inst_VOP3__V_RNDNE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26299
Gcn3ISA::Inst_VOPC__V_CMP_U_F32::~Inst_VOPC__V_CMP_U_F32
~Inst_VOPC__V_CMP_U_F32()
Definition: instructions.cc:10757
Gcn3ISA::Inst_VOP1__V_RCP_IFLAG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8396
Gcn3ISA::Inst_SMEM__S_LOAD_DWORD::Inst_SMEM__S_LOAD_DWORD
Inst_SMEM__S_LOAD_DWORD(InFmt_SMEM *)
Definition: instructions.cc:4457
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:39163
Gcn3ISA::Inst_VOP3__V_INTERP_P2_F16::Inst_VOP3__V_INTERP_P2_F16
Inst_VOP3__V_INTERP_P2_F16(InFmt_VOP3 *)
Definition: instructions.cc:29949
Gcn3ISA::Inst_VOP2__V_MADAK_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6894
Gcn3ISA::Inst_DS__DS_WRITE_B64::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:32965
Gcn3ISA::Inst_VOP3__V_CMPX_GT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16448
Gcn3ISA::muladd
VecElemU32 muladd(VecElemU64 &dst, VecElemU32 val_0, VecElemU32 val_1, VecElemU64 val_2)
Definition: inst_util.hh:270
Gcn3ISA::Inst_VOP3__V_CMPX_NGT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19168
Gcn3ISA::Inst_VOPC__V_CMPX_GE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13477
Gcn3ISA::Inst_VOP3__V_COS_F16::~Inst_VOP3__V_COS_F16
~Inst_VOP3__V_COS_F16()
Definition: instructions.cc:27546
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_O::~Inst_MIMG__IMAGE_SAMPLE_C_O
~Inst_MIMG__IMAGE_SAMPLE_C_O()
Definition: instructions.cc:38718
Gcn3ISA::Inst_VOP3__V_LOG_LEGACY_F32::Inst_VOP3__V_LOG_LEGACY_F32
Inst_VOP3__V_LOG_LEGACY_F32(InFmt_VOP3 *)
Definition: instructions.cc:27603
Gcn3ISA::Inst_VOP3__V_SIN_F32::Inst_VOP3__V_SIN_F32
Inst_VOP3__V_SIN_F32(InFmt_VOP3 *)
Definition: instructions.cc:26734
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_BYTE::Inst_MUBUF__BUFFER_STORE_BYTE
Inst_MUBUF__BUFFER_STORE_BYTE(InFmt_MUBUF *)
Definition: instructions.cc:35722
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:8808
Gcn3ISA::Inst_VOP3__V_CMP_GT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22349
Gcn3ISA::Inst_VOPC__V_CMPX_GT_U64::~Inst_VOPC__V_CMPX_GT_U64
~Inst_VOPC__V_CMPX_GT_U64()
Definition: instructions.cc:15343
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7899
Gcn3ISA::Inst_VOP2__V_MUL_U32_U24::Inst_VOP2__V_MUL_U32_U24
Inst_VOP2__V_MUL_U32_U24(InFmt_VOP2 *)
Definition: instructions.cc:5775
Gcn3ISA::Inst_VOP3__V_INTERP_P1LV_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29944
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX3::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:36201
Gcn3ISA::Inst_VOPC__V_CMPX_F_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10220
Gcn3ISA::Inst_VOPC__V_CMP_NLT_F32::~Inst_VOPC__V_CMP_NLT_F32
~Inst_VOPC__V_CMP_NLT_F32()
Definition: instructions.cc:10951
Gcn3ISA::Inst_DS__DS_AND_SRC2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33900
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40180
Gcn3ISA::Inst_VOP3__V_CMP_O_F16::Inst_VOP3__V_CMP_O_F16
Inst_VOP3__V_CMP_O_F16(InFmt_VOP3 *)
Definition: instructions.cc:16171
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_DEC::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41123
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:39180
Gcn3ISA::Inst_VOP3__V_CMP_T_I32::~Inst_VOP3__V_CMP_T_I32
~Inst_VOP3__V_CMP_T_I32()
Definition: instructions.cc:20928
Gcn3ISA::Inst_VOP2__V_SUB_U32::Inst_VOP2__V_SUB_U32
Inst_VOP2__V_SUB_U32(InFmt_VOP2 *)
Definition: instructions.cc:6557
Gcn3ISA::Inst_VOP3__V_CMP_NGE_F32::~Inst_VOP3__V_CMP_NGE_F32
~Inst_VOP3__V_CMP_NGE_F32()
Definition: instructions.cc:16973
Gcn3ISA::Inst_DS__DS_CMPST_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33090
Gcn3ISA::Inst_FLAT__FLAT_STORE_SHORT::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40110
Gcn3ISA::Inst_VOPC__V_CMPX_GE_U32::~Inst_VOPC__V_CMPX_GE_U32
~Inst_VOPC__V_CMPX_GE_U32()
Definition: instructions.cc:14439
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX4::~Inst_FLAT__FLAT_LOAD_DWORDX4
~Inst_FLAT__FLAT_LOAD_DWORDX4()
Definition: instructions.cc:39895
Gcn3ISA::Inst_SOP2__S_ANDN2_B64::Inst_SOP2__S_ANDN2_B64
Inst_SOP2__S_ANDN2_B64(InFmt_SOP2 *)
Definition: instructions.cc:623
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_UMIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38129
Gcn3ISA::Inst_SOPK__S_SETREG_IMM32_B32::Inst_SOPK__S_SETREG_IMM32_B32
Inst_SOPK__S_SETREG_IMM32_B32(InFmt_SOPK *)
Definition: instructions.cc:1844
Gcn3ISA::Inst_VOP2__V_MIN_I32::~Inst_VOP2__V_MIN_I32
~Inst_VOP2__V_MIN_I32()
Definition: instructions.cc:5953
Gcn3ISA::Inst_VOPC__V_CMPX_NEQ_F64::~Inst_VOPC__V_CMPX_NEQ_F64
~Inst_VOPC__V_CMPX_NEQ_F64()
Definition: instructions.cc:12469
Gcn3ISA::Inst_SOPC__S_CMP_EQ_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3690
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:39365
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:36314
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_DEC::Inst_MIMG__IMAGE_ATOMIC_DEC
Inst_MIMG__IMAGE_ATOMIC_DEC(InFmt_MIMG *)
Definition: instructions.cc:38292
Gcn3ISA::Inst_VOP3__V_CMP_LT_I16::~Inst_VOP3__V_CMP_LT_I16
~Inst_VOP3__V_CMP_LT_I16()
Definition: instructions.cc:19440
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:41688
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_CMPSWAP_X2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41317
Gcn3ISA::Inst_VOP3__V_MUL_HI_U32_U24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23673
Gcn3ISA::Inst_VOP2__V_MIN_F16::~Inst_VOP2__V_MIN_F16
~Inst_VOP2__V_MIN_F16()
Definition: instructions.cc:7143
Gcn3ISA::Inst_SOPP__S_NOP::Inst_SOPP__S_NOP
Inst_SOPP__S_NOP(InFmt_SOPP *)
Definition: instructions.cc:3730
Gcn3ISA::Inst_VOP3__V_CUBESC_F32::Inst_VOP3__V_CUBESC_F32
Inst_VOP3__V_CUBESC_F32(InFmt_VOP3 *)
Definition: instructions.cc:27858
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_L_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38791
Gcn3ISA::Inst_DS__DS_MAX_RTN_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33501
Gcn3ISA::Inst_DS__DS_WRITE2_B32::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:31348
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE0::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7839
Gcn3ISA::Inst_SOP2__S_MIN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:280
Gcn3ISA::Inst_VOP1__V_SQRT_F32::Inst_VOP1__V_SQRT_F32
Inst_VOP1__V_SQRT_F32(InFmt_VOP1 *)
Definition: instructions.cc:8526
Gcn3ISA::Inst_VOP3__V_CMPX_NGE_F16::~Inst_VOP3__V_CMPX_NGE_F16
~Inst_VOP3__V_CMPX_NGE_F16()
Definition: instructions.cc:16539
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4648
Gcn3ISA::Inst_SOP1__S_BCNT1_I32_B64::Inst_SOP1__S_BCNT1_I32_B64
Inst_SOP1__S_BCNT1_I32_B64(InFmt_SOP1 *)
Definition: instructions.cc:2240
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_ADD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36522
Gcn3ISA::Inst_VOP3__V_CMPX_NGE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19055
Gcn3ISA::Inst_SOP1__S_QUADMASK_B64::~Inst_SOP1__S_QUADMASK_B64
~Inst_SOP1__S_QUADMASK_B64()
Definition: instructions.cc:3006
Gcn3ISA::Inst_VOP3__V_MAX_I32::~Inst_VOP3__V_MAX_I32
~Inst_VOP3__V_MAX_I32()
Definition: instructions.cc:23859
Gcn3ISA::Inst_VOPC__V_CMPX_GE_I64::~Inst_VOPC__V_CMPX_GE_I64
~Inst_VOPC__V_CMPX_GE_I64()
Definition: instructions.cc:15161
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SUB::~Inst_MUBUF__BUFFER_ATOMIC_SUB
~Inst_MUBUF__BUFFER_ATOMIC_SUB()
Definition: instructions.cc:36541
Gcn3ISA::Inst_VOPC__V_CMPX_GE_U64::Inst_VOPC__V_CMPX_GE_U64
Inst_VOPC__V_CMPX_GE_U64(InFmt_VOPC *)
Definition: instructions.cc:15401
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_L::~Inst_MIMG__IMAGE_GATHER4_C_L
~Inst_MIMG__IMAGE_GATHER4_C_L()
Definition: instructions.cc:38984
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_XOR_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41714
Gcn3ISA::Inst_VOP3__V_CMP_NGE_F16::~Inst_VOP3__V_CMP_NGE_F16
~Inst_VOP3__V_CMP_NGE_F16()
Definition: instructions.cc:16215
Gcn3ISA::Inst_VOP3__V_FMA_F64::Inst_VOP3__V_FMA_F64
Inst_VOP3__V_FMA_F64(InFmt_VOP3 *)
Definition: instructions.cc:28102
Gcn3ISA::Inst_VOPC__V_CMP_LT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14530
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:36308
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B_O::~Inst_MIMG__IMAGE_SAMPLE_B_O
~Inst_MIMG__IMAGE_SAMPLE_B_O()
Definition: instructions.cc:38668
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_SHORT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35836
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:307
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38874
Gcn3ISA::Inst_VOP3__V_CMPX_F_I16::~Inst_VOP3__V_CMPX_F_I16
~Inst_VOP3__V_CMPX_F_I16()
Definition: instructions.cc:20022
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_U64::~Inst_VOPC__V_CMPX_EQ_U64
~Inst_VOPC__V_CMPX_EQ_U64()
Definition: instructions.cc:15279
Gcn3ISA::Inst_VOP1__V_FREXP_MANT_F64::Inst_VOP1__V_FREXP_MANT_F64
Inst_VOP1__V_FREXP_MANT_F64(InFmt_VOP1 *)
Definition: instructions.cc:8844
Gcn3ISA::Inst_SOP2::instData
InFmt_SOP2 instData
Definition: op_encodings.hh:86
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_B::~Inst_MIMG__IMAGE_GATHER4_C_B
~Inst_MIMG__IMAGE_GATHER4_C_B()
Definition: instructions.cc:39001
Gcn3ISA::Inst_DS__DS_WRITE2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32984
Gcn3ISA::Inst_VOP1__V_RSQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8498
Gcn3ISA::Inst_VOPC__V_CMP_GT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14623
Gcn3ISA::Inst_VOP3__V_FFBH_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26963
Gcn3ISA::Inst_VOP3__V_CMP_U_F16::Inst_VOP3__V_CMP_U_F16
Inst_VOP3__V_CMP_U_F16(InFmt_VOP3 *)
Definition: instructions.cc:16189
Gcn3ISA::Inst_SMEM__S_DCACHE_WB::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5340
Gcn3ISA::Inst_VOP1__V_EXP_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9359
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15285
Gcn3ISA::Inst_VOPC__V_CMPX_GT_U32::Inst_VOPC__V_CMPX_GT_U32
Inst_VOPC__V_CMPX_GT_U32(InFmt_VOPC *)
Definition: instructions.cc:14369
Gcn3ISA::Inst_VOP3__V_CMPX_F_U16::Inst_VOP3__V_CMPX_F_U16
Inst_VOP3__V_CMPX_F_U16(InFmt_VOP3 *)
Definition: instructions.cc:20329
Gcn3ISA::Inst_VOP3__V_FMA_F16::~Inst_VOP3__V_FMA_F16
~Inst_VOP3__V_FMA_F16()
Definition: instructions.cc:29777
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORD::Inst_SMEM__S_BUFFER_STORE_DWORD
Inst_SMEM__S_BUFFER_STORE_DWORD(InFmt_SMEM *)
Definition: instructions.cc:5223
Gcn3ISA::Inst_SOPP__S_SETHALT::~Inst_SOPP__S_SETHALT
~Inst_SOPP__S_SETHALT()
Definition: instructions.cc:4175
Gcn3ISA::Inst_SOP1__S_FF0_I32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2282
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ
Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZ(InFmt_MUBUF *)
Definition: instructions.cc:34587
Gcn3ISA::Inst_VOP3__V_FFBH_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26887
Gcn3ISA::Inst_VOP3__V_CMP_GE_F32::~Inst_VOP3__V_CMP_GE_F32
~Inst_VOP3__V_CMP_GE_F32()
Definition: instructions.cc:16874
Gcn3ISA::Inst_VOP2__V_MAX_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5928
Gcn3ISA::Inst_VOP1__V_FRACT_F64::~Inst_VOP1__V_FRACT_F64
~Inst_VOP1__V_FRACT_F64()
Definition: instructions.cc:8885
Gcn3ISA::Inst_SOPK__S_CMPK_EQ_U32::Inst_SOPK__S_CMPK_EQ_U32
Inst_SOPK__S_CMPK_EQ_U32(InFmt_SOPK *)
Definition: instructions.cc:1556
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:38629
Gcn3ISA::Inst_VOP3__V_SUBREV_F32::~Inst_VOP3__V_SUBREV_F32
~Inst_VOP3__V_SUBREV_F32()
Definition: instructions.cc:23287
Gcn3ISA::Inst_VOP2__V_SUBREV_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6973
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD_O::~Inst_MIMG__IMAGE_SAMPLE_CD_O
~Inst_MIMG__IMAGE_SAMPLE_CD_O()
Definition: instructions.cc:39338
Gcn3ISA::Inst_VOP3__V_INTERP_MOV_F32::Inst_VOP3__V_INTERP_MOV_F32
Inst_VOP3__V_INTERP_MOV_F32(InFmt_VOP3 *)
Definition: instructions.cc:29894
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:25634
Gcn3ISA::Inst_VOP3__V_FREXP_MANT_F64::Inst_VOP3__V_FREXP_MANT_F64
Inst_VOP3__V_FREXP_MANT_F64(InFmt_VOP3 *)
Definition: instructions.cc:27033
Gcn3ISA::Inst_VOP3__V_CMP_LT_F64::Inst_VOP3__V_CMP_LT_F64
Inst_VOP3__V_CMP_LT_F64(InFmt_VOP3 *)
Definition: instructions.cc:17759
Gcn3ISA::Inst_VOP1__V_CLREXCP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8994
Gcn3ISA::Inst_VOP3__V_CVT_I32_F32::~Inst_VOP3__V_CVT_I32_F32
~Inst_VOP3__V_CVT_I32_F32()
Definition: instructions.cc:25480
Gcn3ISA::Inst_VOP3__V_CMPX_F_U32::Inst_VOP3__V_CMPX_F_U32
Inst_VOP3__V_CMPX_F_U32(InFmt_VOP3 *)
Definition: instructions.cc:21566
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34661
Gcn3ISA::Inst_DS__DS_WRITE_B16::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:31649
Gcn3ISA::Inst_DS__DS_RSUB_RTN_U32::~Inst_DS__DS_RSUB_RTN_U32
~Inst_DS__DS_RSUB_RTN_U32()
Definition: instructions.cc:31695
Gcn3ISA::Inst_SOPP__S_SET_GPR_IDX_OFF::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4431
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:39382
Gcn3ISA::Inst_VOPC__V_CMPX_F_I32::Inst_VOPC__V_CMPX_F_I32
Inst_VOPC__V_CMPX_F_I32(InFmt_VOPC *)
Definition: instructions.cc:14000
Gcn3ISA::Inst_SOP1__S_SWAPPC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2684
Gcn3ISA::Inst_VOPC__V_CMPX_LE_U32::Inst_VOPC__V_CMPX_LE_U32
Inst_VOPC__V_CMPX_LE_U32(InFmt_VOPC *)
Definition: instructions.cc:14337
Gcn3ISA::Inst_SOP1__S_WQM_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2065
Gcn3ISA::Inst_VOP3__V_CMP_NLE_F16::~Inst_VOP3__V_CMP_NLE_F16
~Inst_VOP3__V_CMP_NLE_F16()
Definition: instructions.cc:16272
Gcn3ISA::Inst_SOP1__S_MOVRELD_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3094
Gcn3ISA::Inst_VOP3__V_CMPX_NLG_F16::~Inst_VOP3__V_CMPX_NLG_F16
~Inst_VOP3__V_CMPX_NLG_F16()
Definition: instructions.cc:16558
Gcn3ISA::Inst_VOP3__V_CMPX_F_I64::Inst_VOP3__V_CMPX_F_I64
Inst_VOP3__V_CMPX_F_I64(InFmt_VOP3 *)
Definition: instructions.cc:22488
Gcn3ISA::Inst_SOP1__S_SWAPPC_B64::~Inst_SOP1__S_SWAPPC_B64
~Inst_SOP1__S_SWAPPC_B64()
Definition: instructions.cc:2677
Gcn3ISA::Inst_VOPC__V_CMPX_CLASS_F16::Inst_VOPC__V_CMPX_CLASS_F16
Inst_VOPC__V_CMPX_CLASS_F16(InFmt_VOPC *)
Definition: instructions.cc:9888
Gcn3ISA::Inst_VOPC__V_CMP_NEQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10166
Gcn3ISA::Inst_DS__DS_MSKOR_RTN_B32::Inst_DS__DS_MSKOR_RTN_B32
Inst_DS__DS_MSKOR_RTN_B32(InFmt_DS *)
Definition: instructions.cc:31870
Gcn3ISA::Inst_VOP3__V_CMP_U_F32::Inst_VOP3__V_CMP_U_F32
Inst_VOP3__V_CMP_U_F32(InFmt_VOP3 *)
Definition: instructions.cc:16932
Gcn3ISA::Inst_SOP1__S_ABS_I32::~Inst_SOP1__S_ABS_I32
~Inst_SOP1__S_ABS_I32()
Definition: instructions.cc:3158
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:822
Gcn3ISA::Inst_SOPC__S_CMP_LG_U64::Inst_SOPC__S_CMP_LG_U64
Inst_SOPC__S_CMP_LG_U64(InFmt_SOPC *)
Definition: instructions.cc:3704
Gcn3ISA::Inst_SOPP__S_WAITCNT::Inst_SOPP__S_WAITCNT
Inst_SOPP__S_WAITCNT(InFmt_SOPP *)
Definition: instructions.cc:4142
Gcn3ISA::Inst_VOP3__V_CVT_F32_F16::~Inst_VOP3__V_CVT_F32_F16
~Inst_VOP3__V_CVT_F32_F16()
Definition: instructions.cc:25576
Gcn3ISA::Inst_VOP3__V_CMPX_LG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16467
Gcn3ISA::InFmt_VOP_SDWA::SRC1_NEG
unsigned int SRC1_NEG
Definition: gpu_decoder.hh:1605
Gcn3ISA::Inst_SOPC__S_BITCMP0_B32::Inst_SOPC__S_BITCMP0_B32
Inst_SOPC__S_BITCMP0_B32(InFmt_SOPC *)
Definition: instructions.cc:3530
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38723
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_XOR::~Inst_MUBUF__BUFFER_ATOMIC_XOR
~Inst_MUBUF__BUFFER_ATOMIC_XOR()
Definition: instructions.cc:36730
Gcn3ISA::Inst_VOPC__V_CMP_NGT_F16::Inst_VOPC__V_CMP_NGT_F16
Inst_VOPC__V_CMP_NGT_F16(InFmt_VOPC *)
Definition: instructions.cc:10117
Gcn3ISA::InFmt_VOP_SDWA::SRC0_ABS
unsigned int SRC0_ABS
Definition: gpu_decoder.hh:1601
Gcn3ISA::Inst_VOP3__V_CMPX_GT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22972
Gcn3ISA::Inst_SOPP__S_SENDMSG::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4234
Gcn3ISA::Inst_SOPK__S_CMPK_LG_U32::~Inst_SOPK__S_CMPK_LG_U32
~Inst_SOPK__S_CMPK_LG_U32()
Definition: instructions.cc:1587
Gcn3ISA::Inst_SOP1__S_NAND_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2890
Gcn3ISA::Inst_DS__DS_AND_B32::~Inst_DS__DS_AND_B32
~Inst_DS__DS_AND_B32()
Definition: instructions.cc:31161
Gcn3ISA::Inst_VOP3__V_MUL_I32_I24::Inst_VOP3__V_MUL_I32_I24
Inst_VOP3__V_MUL_I32_I24(InFmt_VOP3 *)
Definition: instructions.cc:23532
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_INC_X2::Inst_FLAT__FLAT_ATOMIC_INC_X2
Inst_FLAT__FLAT_ATOMIC_INC_X2(InFmt_FLAT *)
Definition: instructions.cc:41719
Gcn3ISA::Inst_VOP3__V_CMP_F_F32::Inst_VOP3__V_CMP_F_F32
Inst_VOP3__V_CMP_F_F32(InFmt_VOP3 *)
Definition: instructions.cc:16674
Gcn3ISA::Inst_VOP3__V_MAX_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25057
Gcn3ISA::Inst_VOP3__V_MUL_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30077
Gcn3ISA::Inst_DS__DS_MAX_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33294
Gcn3ISA::Inst_SOPP__S_SETPRIO::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4219
Gcn3ISA::Inst_VOP3__V_CMPX_F_U32::~Inst_VOP3__V_CMPX_F_U32
~Inst_VOP3__V_CMPX_F_U32()
Definition: instructions.cc:21573
Gcn3ISA::InFmt_SMEM
Definition: gpu_decoder.hh:1474
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40127
Gcn3ISA::Inst_VOP3__V_CMP_GT_F16::~Inst_VOP3__V_CMP_GT_F16
~Inst_VOP3__V_CMP_GT_F16()
Definition: instructions.cc:16122
Gcn3ISA::Inst_VOPC__V_CMPX_GE_I32::Inst_VOPC__V_CMPX_GE_I32
Inst_VOPC__V_CMPX_GE_I32(InFmt_VOPC *)
Definition: instructions.cc:14187
Gcn3ISA::Inst_DS__DS_DEC_U64::Inst_DS__DS_DEC_U64
Inst_DS__DS_DEC_U64(InFmt_DS *)
Definition: instructions.cc:32746
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5238
Gcn3ISA::Inst_DS__DS_SUB_RTN_U32::~Inst_DS__DS_SUB_RTN_U32
~Inst_DS__DS_SUB_RTN_U32()
Definition: instructions.cc:31677
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_DEC::~Inst_FLAT__FLAT_ATOMIC_DEC
~Inst_FLAT__FLAT_ATOMIC_DEC()
Definition: instructions.cc:41115
Gcn3ISA::Inst_DS__DS_MIN_RTN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31997
Gcn3ISA::Inst_DS__DS_WRITE_B8::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:31589
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_INC_X2::Inst_MUBUF__BUFFER_ATOMIC_INC_X2
Inst_MUBUF__BUFFER_ATOMIC_INC_X2(InFmt_MUBUF *)
Definition: instructions.cc:37098
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD_CL::Inst_MIMG__IMAGE_SAMPLE_CD_CL
Inst_MIMG__IMAGE_SAMPLE_CD_CL(InFmt_MIMG *)
Definition: instructions.cc:39280
Gcn3ISA::Inst_DS__DS_ADD_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32686
Gcn3ISA::Inst_VOP1__V_FFBH_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8731
Gcn3ISA::Inst_VOP3__V_MAX_F32::Inst_VOP3__V_MAX_F32
Inst_VOP3__V_MAX_F32(InFmt_VOP3 *)
Definition: instructions.cc:23758
Gcn3ISA::Inst_VOP3__V_CMPX_LE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18714
Gcn3ISA::Inst_VOP3__V_CMPX_NE_U64::~Inst_VOP3__V_CMPX_NE_U64
~Inst_VOP3__V_CMPX_NE_U64()
Definition: instructions.cc:23009
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:36005
Gcn3ISA::Inst_VOP3__V_CMP_EQ_I64::Inst_VOP3__V_CMP_EQ_I64
Inst_VOP3__V_CMP_EQ_I64(InFmt_VOP3 *)
Definition: instructions.cc:21948
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SWAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40439
Gcn3ISA::Inst_SOP2__S_ORN2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:666
Wavefront::WavefrontStats::readsPerWrite
Stats::Distribution readsPerWrite
Definition: wavefront.hh:374
Gcn3ISA::Inst_VOPC__V_CMP_LG_F64::Inst_VOPC__V_CMP_LG_F64
Inst_VOPC__V_CMP_LG_F64(InFmt_VOPC *)
Definition: instructions.cc:11681
Gcn3ISA::Inst_VOP3__V_LSHLREV_B16::Inst_VOP3__V_LSHLREV_B16
Inst_VOP3__V_LSHLREV_B16(InFmt_VOP3 *)
Definition: instructions.cc:24831
Gcn3ISA::Inst_VOP3_SDST_ENC::extData
InFmt_VOP3_1 extData
Definition: op_encodings.hh:404
Gcn3ISA::Inst_SOP1__S_CMOV_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1978
Gcn3ISA::Inst_VOP3__V_CMP_NE_I16::Inst_VOP3__V_CMP_NE_I16
Inst_VOP3__V_CMP_NE_I16(InFmt_VOP3 *)
Definition: instructions.cc:19601
Gcn3ISA::Inst_VOPC__V_CMP_GT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14861
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5268
Gcn3ISA::Inst_VOP3__V_MAD_U64_U32::~Inst_VOP3__V_MAD_U64_U32
~Inst_VOP3__V_MAD_U64_U32()
Definition: instructions.cc:29515
Gcn3ISA::Inst_SOP1__S_BITSET0_B32::Inst_SOP1__S_BITSET0_B32
Inst_SOP1__S_BITSET0_B32(InFmt_SOP1 *)
Definition: instructions.cc:2528
Gcn3ISA::Inst_VOP3__V_CMP_F_F16::~Inst_VOP3__V_CMP_F_F16
~Inst_VOP3__V_CMP_F_F16()
Definition: instructions.cc:16046
Gcn3ISA::Inst_VOPC__V_CMPX_TRU_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10492
Gcn3ISA::Inst_DS__DS_WRAP_RTN_B32::Inst_DS__DS_WRAP_RTN_B32
Inst_DS__DS_WRAP_RTN_B32(InFmt_DS *)
Definition: instructions.cc:32022
Gcn3ISA::Inst_VOPC__V_CMP_GT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10633
Gcn3ISA::Inst_DS__DS_MAX_SRC2_U32::Inst_DS__DS_MAX_SRC2_U32
Inst_DS__DS_MAX_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:33867
Gcn3ISA::Inst_VOPC__V_CMPX_NEQ_F32::~Inst_VOPC__V_CMPX_NEQ_F32
~Inst_VOPC__V_CMPX_NEQ_F32()
Definition: instructions.cc:11440
Gcn3ISA::Inst_VOP3__V_INTERP_P2_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29889
Gcn3ISA::Inst_SOP1__S_NAND_SAVEEXEC_B64::Inst_SOP1__S_NAND_SAVEEXEC_B64
Inst_SOP1__S_NAND_SAVEEXEC_B64(InFmt_SOP1 *)
Definition: instructions.cc:2875
Gcn3ISA::Inst_VOP3__V_MAD_F16::~Inst_VOP3__V_MAD_F16
~Inst_VOP3__V_MAD_F16()
Definition: instructions.cc:29607
Gcn3ISA::Inst_VOP2__V_SUBREV_U32::Inst_VOP2__V_SUBREV_U32
Inst_VOP2__V_SUBREV_U32(InFmt_VOP2 *)
Definition: instructions.cc:6595
Gcn3ISA::Inst_DS__DS_CMPST_RTN_F64::Inst_DS__DS_CMPST_RTN_F64
Inst_DS__DS_CMPST_RTN_F64(InFmt_DS *)
Definition: instructions.cc:33445
Gcn3ISA::Inst_DS__DS_WRXCHG_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33386
Gcn3ISA::Inst_VOP3__V_CEIL_F64::~Inst_VOP3__V_CEIL_F64
~Inst_VOP3__V_CEIL_F64()
Definition: instructions.cc:26064
Gcn3ISA::Inst_SOP2__S_LSHL_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:936
Gcn3ISA::Inst_SOPK::extData
InstFormat extData
Definition: op_encodings.hh:112
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16410
Gcn3ISA::Inst_VOP3__V_CMPX_NLG_F64::~Inst_VOP3__V_CMPX_NLG_F64
~Inst_VOP3__V_CMPX_NLG_F64()
Definition: instructions.cc:19105
Gcn3ISA::Inst_SOPK
Definition: op_encodings.hh:95
Gcn3ISA::Inst_VOPC__V_CMPX_F_F64::~Inst_VOPC__V_CMPX_F_F64
~Inst_VOPC__V_CMPX_F_F64()
Definition: instructions.cc:12039
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2::Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2
Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2(InFmt_MUBUF *)
Definition: instructions.cc:36990
Gcn3ISA::Inst_VOPC__V_CMPX_F_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14258
Gcn3ISA::VecElemI16
int16_t VecElemI16
Definition: registers.hh:163
Gcn3ISA::Inst_VOP3__V_CMP_LE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21071
Gcn3ISA::Inst_DS__DS_CMPST_F64::~Inst_DS__DS_CMPST_F64
~Inst_DS__DS_CMPST_F64()
Definition: instructions.cc:33080
Gcn3ISA::Inst_VOPC__V_CMPX_LT_I16::~Inst_VOPC__V_CMPX_LT_I16
~Inst_VOPC__V_CMPX_LT_I16()
Definition: instructions.cc:13065
Gcn3ISA::Inst_DS__DS_MAX_U32::~Inst_DS__DS_MAX_U32
~Inst_DS__DS_MAX_U32()
Definition: instructions.cc:31143
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_DEC::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41184
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38476
Gcn3ISA::Inst_VOPC__V_CMPX_GE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15167
Gcn3ISA::Inst_VOPC__V_CMP_T_I32::Inst_VOPC__V_CMP_T_I32
Inst_VOPC__V_CMP_T_I32(InFmt_VOPC *)
Definition: instructions.cc:13736
Gcn3ISA::Inst_VOPC__V_CMP_TRU_F64::~Inst_VOPC__V_CMP_TRU_F64
~Inst_VOPC__V_CMP_TRU_F64()
Definition: instructions.cc:12012
Gcn3ISA::Inst_VOP3__V_CMPX_NGT_F32::~Inst_VOP3__V_CMPX_NGT_F32
~Inst_VOP3__V_CMPX_NGT_F32()
Definition: instructions.cc:17575
Gcn3ISA::Inst_VOP3__V_MUL_HI_I32::Inst_VOP3__V_MUL_HI_I32
Inst_VOP3__V_MUL_HI_I32(InFmt_VOP3 *)
Definition: instructions.cc:30417
Gcn3ISA::Inst_VOP3__V_CMP_NLE_F64::~Inst_VOP3__V_CMP_NLE_F64
~Inst_VOP3__V_CMP_NLE_F64()
Definition: instructions.cc:18374
Gcn3ISA::Inst_VOP3__V_CMPX_GT_U64::Inst_VOP3__V_CMPX_GT_U64
Inst_VOP3__V_CMPX_GT_U64(InFmt_VOP3 *)
Definition: instructions.cc:22959
Gcn3ISA::Inst_VOPC__V_CMPX_GE_F64::Inst_VOPC__V_CMPX_GE_F64
Inst_VOPC__V_CMPX_GE_F64(InFmt_VOPC *)
Definition: instructions.cc:12226
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:7755
Gcn3ISA::Inst_VOPC__V_CMPX_CLASS_F32::Inst_VOPC__V_CMPX_CLASS_F32
Inst_VOPC__V_CMPX_CLASS_F32(InFmt_VOPC *)
Definition: instructions.cc:9518
Gcn3ISA::Inst_SOPK__S_CMPK_LG_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1443
Gcn3ISA::Inst_SOP2__S_SUB_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:155
Gcn3ISA::Inst_DS__DS_INC_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33785
Gcn3ISA::Inst_SOP2__S_OR_B32::Inst_SOP2__S_OR_B32
Inst_SOP2__S_OR_B32(InFmt_SOP2 *)
Definition: instructions.cc:473
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_INC::Inst_MIMG__IMAGE_ATOMIC_INC
Inst_MIMG__IMAGE_ATOMIC_INC(InFmt_MIMG *)
Definition: instructions.cc:38266
Gcn3ISA::Inst_VOPC__V_CMPX_TRU_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12541
Gcn3ISA::Inst_VOP3__V_CMP_GE_I16::Inst_VOP3__V_CMP_GE_I16
Inst_VOP3__V_CMP_GE_I16(InFmt_VOP3 *)
Definition: instructions.cc:19643
Gcn3ISA::Inst_FLAT
Definition: op_encodings.hh:768
Gcn3ISA::Inst_VOP3__V_CMP_F_I32::~Inst_VOP3__V_CMP_F_I32
~Inst_VOP3__V_CMP_F_I32()
Definition: instructions.cc:20649
Gcn3ISA::Inst_VOP3__V_CMPX_NEQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19280
Gcn3ISA::Inst_VOP1__V_FREXP_MANT_F32::~Inst_VOP1__V_FREXP_MANT_F32
~Inst_VOP1__V_FREXP_MANT_F32()
Definition: instructions.cc:8954
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34571
Gcn3ISA::Inst_VOPC__V_CMP_EQ_I16::~Inst_VOPC__V_CMP_EQ_I16
~Inst_VOPC__V_CMP_EQ_I16()
Definition: instructions.cc:12619
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_DEC_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37147
Gcn3ISA::Inst_VOPC__V_CMPX_O_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11244
Gcn3ISA::Inst_VOP3__V_CVT_F16_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27246
Gcn3ISA::Inst_SOPP__S_INCPERFLEVEL::Inst_SOPP__S_INCPERFLEVEL
Inst_SOPP__S_INCPERFLEVEL(InFmt_SOPP *)
Definition: instructions.cc:4286
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:34808
Gcn3ISA::Inst_DS__DS_WRITE_B16::Inst_DS__DS_WRITE_B16
Inst_DS__DS_WRITE_B16(InFmt_DS *)
Definition: instructions.cc:31594
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_I64::Inst_VOP3__V_CMPX_EQ_I64
Inst_VOP3__V_CMPX_EQ_I64(InFmt_VOP3 *)
Definition: instructions.cc:22559
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40349
Gcn3ISA::Inst_VOP3__V_LDEXP_F16::Inst_VOP3__V_LDEXP_F16
Inst_VOP3__V_LDEXP_F16(InFmt_VOP3 *)
Definition: instructions.cc:25186
Gcn3ISA::Inst_VOP3__V_CMPX_GT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20185
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_INC::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:41087
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34892
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_CL_O::Inst_MIMG__IMAGE_GATHER4_CL_O
Inst_MIMG__IMAGE_GATHER4_CL_O(InFmt_MIMG *)
Definition: instructions.cc:39061
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:37640
Gcn3ISA::VecOperand::negModifier
void negModifier()
Definition: operand.hh:248
Gcn3ISA::Inst_VOP3__V_MUL_F64::Inst_VOP3__V_MUL_F64
Inst_VOP3__V_MUL_F64(InFmt_VOP3 *)
Definition: instructions.cc:30064
Gcn3ISA::Inst_DS__DS_GWS_INIT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34051
Gcn3ISA::Inst_VOP3__V_SAD_U32::~Inst_VOP3__V_SAD_U32
~Inst_VOP3__V_SAD_U32()
Definition: instructions.cc:28903
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_XOR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41001
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_LZ_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38707
Gcn3ISA::Inst_SOP2__S_NOR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:816
Gcn3ISA::Inst_VOP3__V_CMP_TRU_F32::Inst_VOP3__V_CMP_TRU_F32
Inst_VOP3__V_CMP_TRU_F32(InFmt_VOP3 *)
Definition: instructions.cc:17164
Gcn3ISA::Inst_SOP1__S_OR_SAVEEXEC_B64::~Inst_SOP1__S_OR_SAVEEXEC_B64
~Inst_SOP1__S_OR_SAVEEXEC_B64()
Definition: instructions.cc:2754
Gcn3ISA::Inst_VOP3__V_FRACT_F32::Inst_VOP3__V_FRACT_F32
Inst_VOP3__V_FRACT_F32(InFmt_VOP3 *)
Definition: instructions.cc:26171
Wavefront
Definition: wavefront.hh:59
Gcn3ISA::Inst_SOP2__S_MUL_I32::~Inst_SOP2__S_MUL_I32
~Inst_SOP2__S_MUL_I32()
Definition: instructions.cc:1137
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37173
Gcn3ISA::Inst_DS__DS_AND_SRC2_B32::~Inst_DS__DS_AND_SRC2_B32
~Inst_DS__DS_AND_SRC2_B32()
Definition: instructions.cc:33891
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_F64::Inst_VOP3__V_CMPX_EQ_F64
Inst_VOP3__V_CMPX_EQ_F64(InFmt_VOP3 *)
Definition: instructions.cc:18644
Gcn3ISA::Inst_VOP3__V_CMP_O_F64::Inst_VOP3__V_CMP_O_F64
Inst_VOP3__V_CMP_O_F64(InFmt_VOP3 *)
Definition: instructions.cc:18090
Gcn3ISA::Inst_VOP3__V_CVT_F32_F64::Inst_VOP3__V_CVT_F32_F64
Inst_VOP3__V_CVT_F32_F64(InFmt_VOP3 *)
Definition: instructions.cc:25683
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_SHORT::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35893
Gcn3ISA::Inst_VOP3__V_CMP_NGE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18214
Gcn3ISA::Inst_DS__DS_ADD_RTN_U64::~Inst_DS__DS_ADD_RTN_U64
~Inst_DS__DS_ADD_RTN_U64()
Definition: instructions.cc:33140
Gcn3ISA::Inst_VOPC__V_CMPX_GE_I32::~Inst_VOPC__V_CMPX_GE_I32
~Inst_VOPC__V_CMPX_GE_I32()
Definition: instructions.cc:14193
Gcn3ISA::Inst_VOPC__V_CMPX_T_U64::~Inst_VOPC__V_CMPX_T_U64
~Inst_VOPC__V_CMPX_T_U64()
Definition: instructions.cc:15439
Gcn3ISA::Inst_VOPC__V_CMP_NGT_F64::Inst_VOPC__V_CMP_NGT_F64
Inst_VOPC__V_CMP_NGT_F64(InFmt_VOPC *)
Definition: instructions.cc:11877
Gcn3ISA::Inst_VOP2__V_SUB_F16::~Inst_VOP2__V_SUB_F16
~Inst_VOP2__V_SUB_F16()
Definition: instructions.cc:6789
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_ADD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38049
Gcn3ISA::Inst_VOP3__V_CMPX_NLT_F16::Inst_VOP3__V_CMPX_NLT_F16
Inst_VOP3__V_CMPX_NLT_F16(InFmt_VOP3 *)
Definition: instructions.cc:16626
Gcn3ISA::Inst_VOP3__V_FRACT_F64::Inst_VOP3__V_FRACT_F64
Inst_VOP3__V_FRACT_F64(InFmt_VOP3 *)
Definition: instructions.cc:27071
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2::~Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2
~Inst_MUBUF__BUFFER_ATOMIC_SWAP_X2()
Definition: instructions.cc:36811
Gcn3ISA::Inst_VOP3__V_CVT_U32_F32::~Inst_VOP3__V_CVT_U32_F32
~Inst_VOP3__V_CVT_U32_F32()
Definition: instructions.cc:25426
Gcn3ISA::Inst_VOP3__V_CMP_LE_I16::Inst_VOP3__V_CMP_LE_I16
Inst_VOP3__V_CMP_LE_I16(InFmt_VOP3 *)
Definition: instructions.cc:19517
Gcn3ISA::ScalarOperand
Definition: operand.hh:96
Gcn3ISA::Inst_VOP2__V_SUB_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6573
Gcn3ISA::Inst_SOP1__S_BREV_B32::~Inst_SOP1__S_BREV_B32
~Inst_SOP1__S_BREV_B32()
Definition: instructions.cc:2114
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36028
Gcn3ISA::Inst_DS__DS_WRXCHG_RTN_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31902
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_UMAX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38183
Gcn3ISA::Inst_VOP3__V_EXP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27387
Gcn3ISA::Inst_VOPC__V_CMP_NE_I64::~Inst_VOPC__V_CMP_NE_I64
~Inst_VOPC__V_CMP_NE_I64()
Definition: instructions.cc:14648
Gcn3ISA::Inst_VOP1__V_CVT_F16_I16::~Inst_VOP1__V_CVT_F16_I16
~Inst_VOP1__V_CVT_F16_I16()
Definition: instructions.cc:9024
Gcn3ISA::Inst_DS__DS_MIN_RTN_U64::~Inst_DS__DS_MIN_RTN_U64
~Inst_DS__DS_MIN_RTN_U64()
Definition: instructions.cc:33268
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_SBYTE::~Inst_MUBUF__BUFFER_LOAD_SBYTE
~Inst_MUBUF__BUFFER_LOAD_SBYTE()
Definition: instructions.cc:35139
Gcn3ISA::Inst_SOPC__S_CMP_EQ_U64::Inst_SOPC__S_CMP_EQ_U64
Inst_SOPC__S_CMP_EQ_U64(InFmt_SOPC *)
Definition: instructions.cc:3678
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_B_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38825
Gcn3ISA::Inst_VOP3__V_DIV_SCALE_F32::~Inst_VOP3__V_DIV_SCALE_F32
~Inst_VOP3__V_DIV_SCALE_F32()
Definition: instructions.cc:29170
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D_CL::Inst_MIMG__IMAGE_SAMPLE_D_CL
Inst_MIMG__IMAGE_SAMPLE_D_CL(InFmt_MIMG *)
Definition: instructions.cc:38366
Gcn3ISA::InFmt_VOPC::SRC0
unsigned int SRC0
Definition: gpu_decoder.hh:1573
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38329
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_DEC::Inst_MUBUF__BUFFER_ATOMIC_DEC
Inst_MUBUF__BUFFER_ATOMIC_DEC(InFmt_MUBUF *)
Definition: instructions.cc:36771
Gcn3ISA::Inst_VOPC__V_CMP_NLG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10828
Gcn3ISA::Inst_VOP3__V_RCP_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26459
Gcn3ISA::Inst_VOP3__V_CMP_EQ_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22265
Gcn3ISA::Inst_VOP1__V_CVT_U16_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9048
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_X::~Inst_MTBUF__TBUFFER_LOAD_FORMAT_X
~Inst_MTBUF__TBUFFER_LOAD_FORMAT_X()
Definition: instructions.cc:37161
Gcn3ISA::Inst_VOP3__V_CMP_LE_I16::~Inst_VOP3__V_CMP_LE_I16
~Inst_VOP3__V_CMP_LE_I16()
Definition: instructions.cc:19524
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_B_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39023
Gcn3ISA::Inst_VOP3__V_CMPX_GE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20271
Gcn3ISA::Inst_VOP3__V_CMPX_O_F64::~Inst_VOP3__V_CMPX_O_F64
~Inst_VOP3__V_CMPX_O_F64()
Definition: instructions.cc:18933
Gcn3ISA::Inst_VOP3__V_CMP_EQ_F32::Inst_VOP3__V_CMP_EQ_F32
Inst_VOP3__V_CMP_EQ_F32(InFmt_VOP3 *)
Definition: instructions.cc:16734
Gcn3ISA::Inst_SMEM__S_MEMREALTIME::~Inst_SMEM__S_MEMREALTIME
~Inst_SMEM__S_MEMREALTIME()
Definition: instructions.cc:5398
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37613
Gcn3ISA::Inst_VOP3__V_CMP_NLE_F32::Inst_VOP3__V_CMP_NLE_F32
Inst_VOP3__V_CMP_NLE_F32(InFmt_VOP3 *)
Definition: instructions.cc:17065
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C::Inst_MIMG__IMAGE_SAMPLE_C
Inst_MIMG__IMAGE_SAMPLE_C(InFmt_MIMG *)
Definition: instructions.cc:38448
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY
Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY(InFmt_MTBUF *)
Definition: instructions.cc:37183
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_ADD::Inst_FLAT__FLAT_ATOMIC_ADD
Inst_FLAT__FLAT_ATOMIC_ADD(InFmt_FLAT *)
Definition: instructions.cc:40638
Gcn3ISA::Inst_VOP3__V_CMPX_NE_I64::~Inst_VOP3__V_CMPX_NE_I64
~Inst_VOP3__V_CMPX_NE_I64()
Definition: instructions.cc:22695
GPUStaticInst::isLocalMem
bool isLocalMem() const
Definition: gpu_static_inst.hh:180
Gcn3ISA::Inst_VOP3__V_CMPX_T_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21865
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_ADD_X2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41415
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36576
Gcn3ISA::Inst_VOP3__V_CMPX_GT_F16::~Inst_VOP3__V_CMPX_GT_F16
~Inst_VOP3__V_CMPX_GT_F16()
Definition: instructions.cc:16442
Gcn3ISA::Inst_DS__DS_MIN_F32::~Inst_DS__DS_MIN_F32
~Inst_DS__DS_MIN_F32()
Definition: instructions.cc:31465
Gcn3ISA::InFmt_SOP2::SSRC0
unsigned int SSRC0
Definition: gpu_decoder.hh:1496
Gcn3ISA::Inst_DS__DS_MIN_SRC2_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33980
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_LZ::Inst_MIMG__IMAGE_SAMPLE_C_LZ
Inst_MIMG__IMAGE_SAMPLE_C_LZ(InFmt_MIMG *)
Definition: instructions.cc:38563
Gcn3ISA::Inst_VOPC__V_CMPX_LE_I32::Inst_VOPC__V_CMPX_LE_I32
Inst_VOPC__V_CMPX_LE_I32(InFmt_VOPC *)
Definition: instructions.cc:14091
Gcn3ISA::Inst_DS__DS_ADD_RTN_U32::~Inst_DS__DS_ADD_RTN_U32
~Inst_DS__DS_ADD_RTN_U32()
Definition: instructions.cc:31659
Gcn3ISA::Inst_VOP3__V_EXP_LEGACY_F32::~Inst_VOP3__V_EXP_LEGACY_F32
~Inst_VOP3__V_EXP_LEGACY_F32()
Definition: instructions.cc:27564
Gcn3ISA::Inst_FLAT__FLAT_STORE_BYTE::~Inst_FLAT__FLAT_STORE_BYTE
~Inst_FLAT__FLAT_STORE_BYTE()
Definition: instructions.cc:39980
Gcn3ISA::Inst_VOP3__V_MQSAD_PK_U16_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29483
Gcn3ISA::Inst_VOP1__V_FRACT_F16::~Inst_VOP1__V_FRACT_F16
~Inst_VOP1__V_FRACT_F16()
Definition: instructions.cc:9299
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:34841
Gcn3ISA::Inst_DS__DS_MAX_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31151
Gcn3ISA::Inst_VOP3__V_CMPX_LE_U64::Inst_VOP3__V_CMPX_LE_U64
Inst_VOP3__V_CMPX_LE_U64(InFmt_VOP3 *)
Definition: instructions.cc:22916
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORDX2::~Inst_SMEM__S_BUFFER_STORE_DWORDX2
~Inst_SMEM__S_BUFFER_STORE_DWORDX2()
Definition: instructions.cc:5261
Gcn3ISA::Inst_SOPC__S_CMP_LT_I32::Inst_SOPC__S_CMP_LT_I32
Inst_SOPC__S_CMP_LT_I32(InFmt_SOPC *)
Definition: instructions.cc:3322
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20413
Gcn3ISA::Inst_DS__DS_RSUB_U32::Inst_DS__DS_RSUB_U32
Inst_DS__DS_RSUB_U32(InFmt_DS *)
Definition: instructions.cc:31029
Gcn3ISA::Inst_VOP3__V_CMP_LT_U32::Inst_VOP3__V_CMP_LT_U32
Inst_VOP3__V_CMP_LT_U32(InFmt_VOP3 *)
Definition: instructions.cc:20974
Gcn3ISA::Inst_SOP2__S_RFE_RESTORE_B64::~Inst_SOP2__S_RFE_RESTORE_B64
~Inst_SOP2__S_RFE_RESTORE_B64()
Definition: instructions.cc:1345
Gcn3ISA::Inst_DS__DS_AND_SRC2_B32::Inst_DS__DS_AND_SRC2_B32
Inst_DS__DS_AND_SRC2_B32(InFmt_DS *)
Definition: instructions.cc:33886
Gcn3ISA::Inst_DS::extData
InFmt_DS_1 extData
Definition: op_encodings.hh:507
Gcn3ISA::Inst_VOP3__V_CVT_F32_I32::Inst_VOP3__V_CVT_F32_I32
Inst_VOP3__V_CVT_F32_I32(InFmt_VOP3 *)
Definition: instructions.cc:25341
Gcn3ISA::Inst_VOP3__V_READLANE_B32::~Inst_VOP3__V_READLANE_B32
~Inst_VOP3__V_READLANE_B32()
Definition: instructions.cc:30508
Gcn3ISA::Inst_VOP3__V_ASHRREV_I64::Inst_VOP3__V_ASHRREV_I64
Inst_VOP3__V_ASHRREV_I64(InFmt_VOP3 *)
Definition: instructions.cc:30801
Gcn3ISA::Inst_VOP3__V_SUBREV_U32::~Inst_VOP3__V_SUBREV_U32
~Inst_VOP3__V_SUBREV_U32()
Definition: instructions.cc:24382
Gcn3ISA::Inst_SOPK__S_CMPK_LE_U32::Inst_SOPK__S_CMPK_LE_U32
Inst_SOPK__S_CMPK_LE_U32(InFmt_SOPK *)
Definition: instructions.cc:1681
Gcn3ISA::Inst_VOPC__V_CMPX_GT_I32::~Inst_VOPC__V_CMPX_GT_I32
~Inst_VOPC__V_CMPX_GT_I32()
Definition: instructions.cc:14129
Gcn3ISA::Inst_VOPC__V_CMPX_NLG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10402
Gcn3ISA::Inst_VOP3__V_MUL_F16::Inst_VOP3__V_MUL_F16
Inst_VOP3__V_MUL_F16(InFmt_VOP3 *)
Definition: instructions.cc:24630
Gcn3ISA::Inst_VOP3__V_CMPX_LT_I32::Inst_VOP3__V_CMPX_LT_I32
Inst_VOP3__V_CMPX_LT_I32(InFmt_VOP3 *)
Definition: instructions.cc:21280
Gcn3ISA::Inst_SOP2__S_NOR_B32::Inst_SOP2__S_NOR_B32
Inst_SOP2__S_NOR_B32(InFmt_SOP2 *)
Definition: instructions.cc:773
Gcn3ISA::Inst_VOP1__V_CVT_F32_F64::~Inst_VOP1__V_CVT_F32_F64
~Inst_VOP1__V_CVT_F32_F64()
Definition: instructions.cc:7773
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:37508
Gcn3ISA::Inst_VOP3__V_CVT_F64_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25994
Gcn3ISA::Inst_VOP3__V_CMPX_GT_I64::~Inst_VOP3__V_CMPX_GT_I64
~Inst_VOP3__V_CMPX_GT_I64()
Definition: instructions.cc:22652
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:30949
Gcn3ISA::Inst_VOPC__V_CMPX_GT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15103
Gcn3ISA::Inst_VOP3__V_CMPX_T_U16::Inst_VOP3__V_CMPX_T_U16
Inst_VOP3__V_CMPX_T_U16(InFmt_VOP3 *)
Definition: instructions.cc:20615
Gcn3ISA::Inst_VOP3__V_SUBBREV_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24543
Gcn3ISA::Inst_VOP1__V_LOG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9150
Gcn3ISA::Inst_VOP1::instData
InFmt_VOP1 instData
Definition: op_encodings.hh:307
Wavefront::execMask
VectorMask & execMask()
Definition: wavefront.cc:1377
Gcn3ISA::Inst_SOPK__S_MOVK_I32::~Inst_SOPK__S_MOVK_I32
~Inst_SOPK__S_MOVK_I32()
Definition: instructions.cc:1362
Gcn3ISA::Inst_VOPC__V_CMP_F_I16::Inst_VOPC__V_CMP_F_I16
Inst_VOPC__V_CMP_F_I16(InFmt_VOPC *)
Definition: instructions.cc:12556
Gcn3ISA::Inst_VOP3__V_FREXP_EXP_I32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27002
Gcn3ISA::Inst_DS__DS_WRXCHG_RTN_B32::~Inst_DS__DS_WRXCHG_RTN_B32
~Inst_DS__DS_WRXCHG_RTN_B32()
Definition: instructions.cc:31893
Wavefront::wgId
uint32_t wgId
Definition: wavefront.hh:158
Gcn3ISA::Inst_VOPC__V_CMP_F_F64::Inst_VOPC__V_CMP_F_F64
Inst_VOPC__V_CMP_F_F64(InFmt_VOPC *)
Definition: instructions.cc:11526
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMAX::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36657
Gcn3ISA::Inst_DS__DS_ADD_SRC2_U32::~Inst_DS__DS_ADD_SRC2_U32
~Inst_DS__DS_ADD_SRC2_U32()
Definition: instructions.cc:33719
Gcn3ISA::Inst_VOP3__V_CVT_F64_U32::Inst_VOP3__V_CVT_F64_U32
Inst_VOP3__V_CVT_F64_U32(InFmt_VOP3 *)
Definition: instructions.cc:25981
Gcn3ISA::Inst_VOP2__V_MUL_HI_U32_U24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5862
Gcn3ISA::Inst_VOP3__V_CVT_F16_I16::Inst_VOP3__V_CVT_F16_I16
Inst_VOP3__V_CVT_F16_I16(InFmt_VOP3 *)
Definition: instructions.cc:27233
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_LZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38443
Gcn3ISA::Inst_VOPC__V_CMP_NEQ_F32::Inst_VOPC__V_CMP_NEQ_F32
Inst_VOPC__V_CMP_NEQ_F32(InFmt_VOPC *)
Definition: instructions.cc:10912
Gcn3ISA::Inst_SOPP__S_BARRIER::Inst_SOPP__S_BARRIER
Inst_SOPP__S_BARRIER(InFmt_SOPP *)
Definition: instructions.cc:4093
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_OR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36711
Gcn3ISA::Inst_VOPC__V_CMPX_U_F32::~Inst_VOPC__V_CMPX_U_F32
~Inst_VOPC__V_CMPX_U_F32()
Definition: instructions.cc:11272
Gcn3ISA::Inst_VOPC__V_CMPX_LG_F64::Inst_VOPC__V_CMPX_LG_F64
Inst_VOPC__V_CMPX_LG_F64(InFmt_VOPC *)
Definition: instructions.cc:12192
Gcn3ISA::Inst_VOPC__V_CMPX_GT_F32::~Inst_VOPC__V_CMPX_GT_F32
~Inst_VOPC__V_CMPX_GT_F32()
Definition: instructions.cc:11137
Gcn3ISA::InFmt_DS_1::VDST
unsigned int VDST
Definition: gpu_decoder.hh:1367
Gcn3ISA::Inst_VOP3__V_CMP_LT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20683
Gcn3ISA::Inst_MIMG__IMAGE_GET_LOD::Inst_MIMG__IMAGE_GET_LOD
Inst_MIMG__IMAGE_GET_LOD(InFmt_MIMG *)
Definition: instructions.cc:39248
Gcn3ISA::Inst_SOP2__S_BFE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1206
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22572
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5274
Gcn3ISA::Inst_DS__DS_AND_SRC2_B64::~Inst_DS__DS_AND_SRC2_B64
~Inst_DS__DS_AND_SRC2_B64()
Definition: instructions.cc:34338
Gcn3ISA::Inst_VOP3__V_MAD_LEGACY_F32::Inst_VOP3__V_MAD_LEGACY_F32
Inst_VOP3__V_MAD_LEGACY_F32(InFmt_VOP3 *)
Definition: instructions.cc:27633
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:34907
Gcn3ISA::Inst_VOPC__V_CMPX_NLE_F64::Inst_VOPC__V_CMPX_NLE_F64
Inst_VOPC__V_CMPX_NLE_F64(InFmt_VOPC *)
Definition: instructions.cc:12429
Gcn3ISA::Inst_VOPC__V_CMPX_F_F32::Inst_VOPC__V_CMPX_F_F32
Inst_VOPC__V_CMPX_F_F32(InFmt_VOPC *)
Definition: instructions.cc:11003
Gcn3ISA::InFmt_VOPC::VSRC1
unsigned int VSRC1
Definition: gpu_decoder.hh:1574
ComputeUnit::activeWaves
int activeWaves
Definition: compute_unit.hh:940
Gcn3ISA::Inst_DS__DS_XOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31205
Gcn3ISA::Inst_VOP3__V_CMPX_F_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16362
Gcn3ISA::Inst_VOPC__V_CMP_GT_U64::~Inst_VOPC__V_CMP_GT_U64
~Inst_VOPC__V_CMP_GT_U64()
Definition: instructions.cc:14855
Gcn3ISA::Inst_DS__DS_MAX_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34328
Gcn3ISA::Inst_VOP3__V_CMPX_LT_F16::Inst_VOP3__V_CMPX_LT_F16
Inst_VOP3__V_CMPX_LT_F16(InFmt_VOP3 *)
Definition: instructions.cc:16377
Gcn3ISA::Inst_VOP3__V_CMPX_T_U32::~Inst_VOP3__V_CMPX_T_U32
~Inst_VOP3__V_CMPX_T_U32()
Definition: instructions.cc:21859
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMIN::~Inst_MUBUF__BUFFER_ATOMIC_UMIN
~Inst_MUBUF__BUFFER_ATOMIC_UMIN()
Definition: instructions.cc:36595
Gcn3ISA::Inst_VOPC__V_CMPX_LT_I64::~Inst_VOPC__V_CMPX_LT_I64
~Inst_VOPC__V_CMPX_LT_I64()
Definition: instructions.cc:15001
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORD::~Inst_SMEM__S_BUFFER_STORE_DWORD
~Inst_SMEM__S_BUFFER_STORE_DWORD()
Definition: instructions.cc:5231
Gcn3ISA::Inst_VOP1__V_CEIL_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8216
Gcn3ISA::Inst_VOP3__V_CMP_NEQ_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18435
Gcn3ISA::Inst_DS__DS_AND_B64::~Inst_DS__DS_AND_B64
~Inst_DS__DS_AND_B64()
Definition: instructions.cc:32842
Gcn3ISA::Inst_VOPC__V_CMP_LT_U32::~Inst_VOPC__V_CMP_LT_U32
~Inst_VOPC__V_CMP_LT_U32()
Definition: instructions.cc:13794
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37520
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:39204
Gcn3ISA::Inst_VOPC__V_CMPX_F_I32::~Inst_VOPC__V_CMPX_F_I32
~Inst_VOPC__V_CMPX_F_I32()
Definition: instructions.cc:14006
Gcn3ISA::Inst_SOPP__S_SLEEP::Inst_SOPP__S_SLEEP
Inst_SOPP__S_SLEEP(InFmt_SOPP *)
Definition: instructions.cc:4185
Gcn3ISA::Inst_VOPC__V_CMPX_T_U16::Inst_VOPC__V_CMPX_T_U16
Inst_VOPC__V_CMPX_T_U16(InFmt_VOPC *)
Definition: instructions.cc:13497
Gcn3ISA::Inst_VOPC__V_CMP_F_F16::~Inst_VOPC__V_CMP_F_F16
~Inst_VOPC__V_CMP_F_F16()
Definition: instructions.cc:9926
Gcn3ISA::Inst_VOPC__V_CMP_CLASS_F16::Inst_VOPC__V_CMP_CLASS_F16
Inst_VOPC__V_CMP_CLASS_F16(InFmt_VOPC *)
Definition: instructions.cc:9858
Gcn3ISA::Inst_FLAT__FLAT_STORE_BYTE::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40039
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CL_O::~Inst_MIMG__IMAGE_SAMPLE_CL_O
~Inst_MIMG__IMAGE_SAMPLE_CL_O()
Definition: instructions.cc:38603
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_ADD_X2::~Inst_FLAT__FLAT_ATOMIC_ADD_X2
~Inst_FLAT__FLAT_ATOMIC_ADD_X2()
Definition: instructions.cc:41352
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XYZ::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37625
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:1060
Gcn3ISA::Inst_VOPC__V_CMPX_CLASS_F64::~Inst_VOPC__V_CMPX_CLASS_F64
~Inst_VOPC__V_CMPX_CLASS_F64()
Definition: instructions.cc:9751
Gcn3ISA::Inst_VOP1__V_CVT_U16_F16::Inst_VOP1__V_CVT_U16_F16
Inst_VOP1__V_CVT_U16_F16(InFmt_VOP1 *)
Definition: instructions.cc:9035
Gcn3ISA::Inst_VOP3__V_BFE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27922
Gcn3ISA::Inst_FLAT__FLAT_LOAD_USHORT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39572
Gcn3ISA::Inst_VOP1__V_RNDNE_F64::Inst_VOP1__V_RNDNE_F64
Inst_VOP1__V_RNDNE_F64(InFmt_VOP1 *)
Definition: instructions.cc:8082
Gcn3ISA::Inst_SOP1__S_MOVRELD_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3121
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_LZ_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39141
Gcn3ISA::Inst_VOP3__V_CMP_LE_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22307
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ
Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ(InFmt_MTBUF *)
Definition: instructions.cc:37334
Gcn3ISA::Inst_DS__DS_READ_B64::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:33543
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_D::~Inst_MIMG__IMAGE_SAMPLE_C_D
~Inst_MIMG__IMAGE_SAMPLE_C_D()
Definition: instructions.cc:38487
Gcn3ISA::Inst_VOP3__V_INTERP_P1LL_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29926
Gcn3ISA::Inst_SOP1__S_NOR_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2922
Gcn3ISA::Inst_VOP3__V_EXP_F16::~Inst_VOP3__V_EXP_F16
~Inst_VOP3__V_EXP_F16()
Definition: instructions.cc:27378
Gcn3ISA::Inst_SOPK__S_CMOVK_I32::Inst_SOPK__S_CMOVK_I32
Inst_SOPK__S_CMOVK_I32(InFmt_SOPK *)
Definition: instructions.cc:1378
Gcn3ISA::Inst_VOP3__V_CMP_LT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21919
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMAX_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41636
Gcn3ISA::Inst_VOP3__V_ADD_U32::Inst_VOP3__V_ADD_U32
Inst_VOP3__V_ADD_U32(InFmt_VOP3_SDST_ENC *)
Definition: instructions.cc:24283
Gcn3ISA::Inst_SOPP__S_DECPERFLEVEL::Inst_SOPP__S_DECPERFLEVEL
Inst_SOPP__S_DECPERFLEVEL(InFmt_SOPP *)
Definition: instructions.cc:4301
Gcn3ISA::Inst_DS__DS_XOR_B64::~Inst_DS__DS_XOR_B64
~Inst_DS__DS_XOR_B64()
Definition: instructions.cc:32878
Gcn3ISA::Inst_VOPC__V_CMP_GE_U16::Inst_VOPC__V_CMP_GE_U16
Inst_VOPC__V_CMP_GE_U16(InFmt_VOPC *)
Definition: instructions.cc:12975
Gcn3ISA::Inst_DS__DS_MAX_SRC2_U32::~Inst_DS__DS_MAX_SRC2_U32
~Inst_DS__DS_MAX_SRC2_U32()
Definition: instructions.cc:33872
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:4373
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:38504
Gcn3ISA::Inst_DS__DS_GWS_INIT::Inst_DS__DS_GWS_INIT
Inst_DS__DS_GWS_INIT(InFmt_DS *)
Definition: instructions.cc:34041
Gcn3ISA::Inst_VOPC__V_CMP_EQ_F32::~Inst_VOPC__V_CMP_EQ_F32
~Inst_VOPC__V_CMP_EQ_F32()
Definition: instructions.cc:10563
Gcn3ISA::Inst_VOP3__V_CMPX_GT_F16::Inst_VOP3__V_CMPX_GT_F16
Inst_VOP3__V_CMPX_GT_F16(InFmt_VOP3 *)
Definition: instructions.cc:16434
Gcn3ISA::Inst_SOPC__S_CMP_LE_U32::Inst_SOPC__S_CMP_LE_U32
Inst_SOPC__S_CMP_LE_U32(InFmt_SOPC *)
Definition: instructions.cc:3504
Gcn3ISA::Inst_SOPP__S_WAKEUP::~Inst_SOPP__S_WAKEUP
~Inst_SOPP__S_WAKEUP()
Definition: instructions.cc:3913
Gcn3ISA::Inst_VOPC__V_CMP_NLT_F16::Inst_VOPC__V_CMP_NLT_F16
Inst_VOPC__V_CMP_NLT_F16(InFmt_VOPC *)
Definition: instructions.cc:10171
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX2::~Inst_FLAT__FLAT_STORE_DWORDX2
~Inst_FLAT__FLAT_STORE_DWORDX2()
Definition: instructions.cc:40192
Gcn3ISA::Inst_VOPC__V_CMP_T_U16::Inst_VOPC__V_CMP_T_U16
Inst_VOPC__V_CMP_T_U16(InFmt_VOPC *)
Definition: instructions.cc:13006
Gcn3ISA::InFmt_SOPK::SDST
unsigned int SDST
Definition: gpu_decoder.hh:1512
Gcn3ISA::Inst_DS__DS_ADD_RTN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32054
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:35030
Gcn3ISA::Inst_SOP1__S_MOVRELD_B64::~Inst_SOP1__S_MOVRELD_B64
~Inst_SOP1__S_MOVRELD_B64()
Definition: instructions.cc:3114
Gcn3ISA::Inst_VOP1__V_CVT_U32_F64::Inst_VOP1__V_CVT_U32_F64
Inst_VOP1__V_CVT_U32_F64(InFmt_VOP1 *)
Definition: instructions.cc:7946
Gcn3ISA::Inst_VOP1__V_CEIL_F16::Inst_VOP1__V_CEIL_F16
Inst_VOP1__V_CEIL_F16(InFmt_VOP1 *)
Definition: instructions.cc:9238
Gcn3ISA::Inst_VOPC__V_CMP_GE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10698
Gcn3ISA::Inst_VOP3__V_CMPX_LE_I64::~Inst_VOP3__V_CMPX_LE_I64
~Inst_VOP3__V_CMPX_LE_I64()
Definition: instructions.cc:22609
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:35373
Gcn3ISA::Inst_SOPP__S_DECPERFLEVEL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4311
Gcn3ISA::Inst_VOP3__V_CMPX_U_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17477
Gcn3ISA::Inst_VOPC__V_CMP_F_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12568
Gcn3ISA::Inst_VOPC__V_CMP_T_I64::~Inst_VOPC__V_CMP_T_I64
~Inst_VOPC__V_CMP_T_I64()
Definition: instructions.cc:14710
Gcn3ISA::Inst_VOPC__V_CMP_GE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14685
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SWAP::~Inst_FLAT__FLAT_ATOMIC_SWAP
~Inst_FLAT__FLAT_ATOMIC_SWAP()
Definition: instructions.cc:40431
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:39719
Gcn3ISA::Inst_VOPC__V_CMP_F_I32::~Inst_VOPC__V_CMP_F_I32
~Inst_VOPC__V_CMP_F_I32()
Definition: instructions.cc:13530
Gcn3ISA::Inst_DS__DS_OR_SRC2_B32::Inst_DS__DS_OR_SRC2_B32
Inst_DS__DS_OR_SRC2_B32(InFmt_DS *)
Definition: instructions.cc:33905
Gcn3ISA::Inst_VOP3__V_CMPX_F_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17206
Gcn3ISA::Inst_VOP3__V_RSQ_F16::Inst_VOP3__V_RSQ_F16
Inst_VOP3__V_RSQ_F16(InFmt_VOP3 *)
Definition: instructions.cc:27329
Gcn3ISA::Inst_VOP3__V_CVT_PK_I16_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30988
Gcn3ISA::Inst_VOPC__V_CMPX_F_I64::Inst_VOPC__V_CMPX_F_I64
Inst_VOPC__V_CMPX_F_I64(InFmt_VOPC *)
Definition: instructions.cc:14968
Gcn3ISA::Inst_SOPP__S_WAKEUP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3921
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39309
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34946
Gcn3ISA::Inst_VOP2__V_MAX_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7166
Gcn3ISA::Inst_VOP3__V_CMP_NGE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16979
Gcn3ISA::Inst_VOPC__V_CMPX_U_F64::Inst_VOPC__V_CMPX_U_F64
Inst_VOPC__V_CMPX_U_F64(InFmt_VOPC *)
Definition: instructions.cc:12294
Gcn3ISA::Inst_SOPC__S_CMP_LE_U32::~Inst_SOPC__S_CMP_LE_U32
~Inst_SOPC__S_CMP_LE_U32()
Definition: instructions.cc:3510
Gcn3ISA::Inst_VOPC__V_CMPX_NGT_F32::~Inst_VOPC__V_CMPX_NGT_F32
~Inst_VOPC__V_CMPX_NGT_F32()
Definition: instructions.cc:11374
Stats::DistBase::sample
void sample(const U &v, int n=1)
Add a value to the distribtion n times.
Definition: statistics.hh:1323
Gcn3ISA::Inst_DS__DS_XOR_B64::Inst_DS__DS_XOR_B64
Inst_DS__DS_XOR_B64(InFmt_DS *)
Definition: instructions.cc:32873
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:3654
Gcn3ISA::Inst_FLAT__FLAT_LOAD_SSHORT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39645
Gcn3ISA::Inst_VOP3__V_DIV_FIXUP_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29011
Cycles
Cycles is a wrapper class for representing cycle counts, i.e.
Definition: types.hh:79
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B_O::Inst_MIMG__IMAGE_GATHER4_B_O
Inst_MIMG__IMAGE_GATHER4_B_O(InFmt_MIMG *)
Definition: instructions.cc:39095
Gcn3ISA::Inst_VOPC__V_CMP_T_U64::Inst_VOPC__V_CMP_T_U64
Inst_VOPC__V_CMP_T_U64(InFmt_VOPC *)
Definition: instructions.cc:14942
Gcn3ISA::Inst_VOP3__V_CMPX_F_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22501
Gcn3ISA::Inst_SOP2__S_AND_B64::Inst_SOP2__S_AND_B64
Inst_SOP2__S_AND_B64(InFmt_SOP2 *)
Definition: instructions.cc:443
Gcn3ISA::Inst_VOP2__V_MIN_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7259
Gcn3ISA::Inst_VOP1__V_FRACT_F32::Inst_VOP1__V_FRACT_F32
Inst_VOP1__V_FRACT_F32(InFmt_VOP1 *)
Definition: instructions.cc:8142
Gcn3ISA::Inst_VOPC__V_CMP_GT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12687
Gcn3ISA::Inst_VOPC__V_CMP_EQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9968
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX16::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:5030
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:38779
Gcn3ISA::Inst_MIMG__IMAGE_STORE_PCK::~Inst_MIMG__IMAGE_STORE_PCK
~Inst_MIMG__IMAGE_STORE_PCK()
Definition: instructions.cc:37904
Gcn3ISA::Inst_SOPK__S_SETREG_IMM32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1860
Gcn3ISA::Inst_VOPC__V_CMPX_T_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14477
Gcn3ISA::Inst_VOP1__V_FREXP_MANT_F16::Inst_VOP1__V_FREXP_MANT_F16
Inst_VOP1__V_FREXP_MANT_F16(InFmt_VOP1 *)
Definition: instructions.cc:9176
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_L::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38394
Gcn3ISA::Inst_VOP3__V_CMPX_GE_U64::~Inst_VOP3__V_CMPX_GE_U64
~Inst_VOP3__V_CMPX_GE_U64()
Definition: instructions.cc:23052
Gcn3ISA::ScalarRegU32
uint32_t ScalarRegU32
Definition: registers.hh:152
Gcn3ISA::Inst_SOP1__S_CMOV_B64::Inst_SOP1__S_CMOV_B64
Inst_SOP1__S_CMOV_B64(InFmt_SOP1 *)
Definition: instructions.cc:1964
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:2326
Gcn3ISA::Inst_VOP3__V_CMPX_T_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21551
Gcn3ISA::Inst_VOP2__V_XOR_B32::Inst_VOP2__V_XOR_B32
Inst_VOP2__V_XOR_B32(InFmt_VOP2 *)
Definition: instructions.cc:6312
Gcn3ISA::Inst_SOPP__S_SET_GPR_IDX_MODE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4452
ComputeUnit::ComputeUnitStats::completedWfs
Stats::Scalar completedWfs
Definition: compute_unit.hh:1076
Gcn3ISA::Inst_SOPC__S_CMP_GT_U32::~Inst_SOPC__S_CMP_GT_U32
~Inst_SOPC__S_CMP_GT_U32()
Definition: instructions.cc:3432
Gcn3ISA::Inst_MUBUF::injectGlobalMemFence
void injectGlobalMemFence(GPUDynInstPtr gpuDynInst)
Definition: op_encodings.hh:578
Gcn3ISA::Inst_VOP3__V_RCP_F16::~Inst_VOP3__V_RCP_F16
~Inst_VOP3__V_RCP_F16()
Definition: instructions.cc:27294
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMIN_X2::Inst_FLAT__FLAT_ATOMIC_UMIN_X2
Inst_FLAT__FLAT_ATOMIC_UMIN_X2(InFmt_FLAT *)
Definition: instructions.cc:41563
Gcn3ISA::Inst_VOP3__V_COS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26787
Gcn3ISA::Inst_VOP3__V_FMA_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28116
Gcn3ISA::Inst_VOP3__V_CMP_GE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16166
Gcn3ISA::Inst_VOPC__V_CMPX_GE_U64::~Inst_VOPC__V_CMPX_GE_U64
~Inst_VOPC__V_CMPX_GE_U64()
Definition: instructions.cc:15407
Gcn3ISA::Inst_SMEM__S_MEMTIME::~Inst_SMEM__S_MEMTIME
~Inst_SMEM__S_MEMTIME()
Definition: instructions.cc:5382
Gcn3ISA::Inst_VOPC__V_CMP_CLASS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9431
Gcn3ISA::Inst_VOP2__V_MAC_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6850
Gcn3ISA::Inst_SMEM__S_STORE_DWORDX2::Inst_SMEM__S_STORE_DWORDX2
Inst_SMEM__S_STORE_DWORDX2(InFmt_SMEM *)
Definition: instructions.cc:5105
Gcn3ISA::Inst_VOP1
Definition: op_encodings.hh:292
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15039
Gcn3ISA::Inst_VOP1__V_FFBH_I32::~Inst_VOP1__V_FFBH_I32
~Inst_VOP1__V_FFBH_I32()
Definition: instructions.cc:8784
Gcn3ISA::Inst_VOPC__V_CMP_GE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13717
Gcn3ISA::Inst_SOP1__S_AND_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2730
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:39372
Gcn3ISA::Inst_VOP3__V_CMP_LT_U32::~Inst_VOP3__V_CMP_LT_U32
~Inst_VOP3__V_CMP_LT_U32()
Definition: instructions.cc:20981
Gcn3ISA::Inst_VOPC__V_CMP_NE_U16::Inst_VOPC__V_CMP_NE_U16
Inst_VOPC__V_CMP_NE_U16(InFmt_VOPC *)
Definition: instructions.cc:12944
Gcn3ISA::Inst_VOP3__V_CMPX_GT_F64::~Inst_VOP3__V_CMPX_GT_F64
~Inst_VOP3__V_CMPX_GT_F64()
Definition: instructions.cc:18764
Gcn3ISA::Inst_VOP1__V_FREXP_MANT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8961
Gcn3ISA::Inst_VOP3__V_CMPX_F_F32::Inst_VOP3__V_CMPX_F_F32
Inst_VOP3__V_CMPX_F_F32(InFmt_VOP3 *)
Definition: instructions.cc:17192
Gcn3ISA::Inst_EXP
Definition: op_encodings.hh:753
Gcn3ISA::Inst_SOPK__S_CMPK_LG_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1593
Wavefront::instructionBuffer
std::deque< GPUDynInstPtr > instructionBuffer
Definition: wavefront.hh:107
Gcn3ISA::Inst_VOP3__V_CMPX_LT_U16::~Inst_VOP3__V_CMPX_LT_U16
~Inst_VOP3__V_CMPX_LT_U16()
Definition: instructions.cc:20364
Gcn3ISA::Inst_VOP3__V_FLOOR_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26146
Gcn3ISA::Inst_SOPP__S_CBRANCH_VCCZ::Inst_SOPP__S_CBRANCH_VCCZ
Inst_SOPP__S_CBRANCH_VCCZ(InFmt_SOPP *)
Definition: instructions.cc:3984
Gcn3ISA::Inst_VOP3__V_CMPX_NLT_F64::~Inst_VOP3__V_CMPX_NLT_F64
~Inst_VOP3__V_CMPX_NLT_F64()
Definition: instructions.cc:19330
Gcn3ISA::Inst_SOP1__S_CMOV_B32::Inst_SOP1__S_CMOV_B32
Inst_SOP1__S_CMOV_B32(InFmt_SOP1 *)
Definition: instructions.cc:1935
Gcn3ISA::Inst_VOP3__V_MAD_U64_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29521
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34721
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_CD::~Inst_MIMG__IMAGE_SAMPLE_C_CD
~Inst_MIMG__IMAGE_SAMPLE_C_CD()
Definition: instructions.cc:39304
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36495
Gcn3ISA::Inst_DS__DS_AND_RTN_B64::~Inst_DS__DS_AND_RTN_B64
~Inst_DS__DS_AND_RTN_B64()
Definition: instructions.cc:33304
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:23661
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_F32::Inst_VOP3__V_CMPX_EQ_F32
Inst_VOP3__V_CMPX_EQ_F32(InFmt_VOP3 *)
Definition: instructions.cc:17255
Gcn3ISA::Inst_SOPP__S_TTRACEDATA::Inst_SOPP__S_TTRACEDATA
Inst_SOPP__S_TTRACEDATA(InFmt_SOPP *)
Definition: instructions.cc:4316
Gcn3ISA::Inst_VOP1__V_FREXP_MANT_F32::Inst_VOP1__V_FREXP_MANT_F32
Inst_VOP1__V_FREXP_MANT_F32(InFmt_VOP1 *)
Definition: instructions.cc:8947
Gcn3ISA::Inst_SOPC__S_BITCMP0_B32::~Inst_SOPC__S_BITCMP0_B32
~Inst_SOPC__S_BITCMP0_B32()
Definition: instructions.cc:3536
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_B::Inst_MIMG__IMAGE_GATHER4_B
Inst_MIMG__IMAGE_GATHER4_B(InFmt_MIMG *)
Definition: instructions.cc:38895
bits
constexpr T bits(T val, unsigned first, unsigned last)
Extract the bitfield from position 'first' to 'last' (inclusive) from 'val' and right justify it.
Definition: bitfield.hh:73
Gcn3ISA::Inst_VOPC__V_CMPX_GT_I16::~Inst_VOPC__V_CMPX_GT_I16
~Inst_VOPC__V_CMPX_GT_I16()
Definition: instructions.cc:13161
Gcn3ISA::Inst_DS__DS_WRITE_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32923
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW
Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZW(InFmt_MTBUF *)
Definition: instructions.cc:37243
Gcn3ISA::Inst_VOP1__V_CEIL_F64::~Inst_VOP1__V_CEIL_F64
~Inst_VOP1__V_CEIL_F64()
Definition: instructions.cc:8059
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:878
Gcn3ISA::Inst_VOP3__V_INTERP_P1_F32::~Inst_VOP3__V_INTERP_P1_F32
~Inst_VOP3__V_INTERP_P1_F32()
Definition: instructions.cc:29865
Gcn3ISA::Inst_SOP2__S_MAX_I32::Inst_SOP2__S_MAX_I32
Inst_SOP2__S_MAX_I32(InFmt_SOP2 *)
Definition: instructions.cc:297
Gcn3ISA::Inst_VOP3__V_CMP_LE_I32::Inst_VOP3__V_CMP_LE_I32
Inst_VOP3__V_CMP_LE_I32(InFmt_VOP3 *)
Definition: instructions.cc:20754
Gcn3ISA::Inst_VOP3__V_CMPX_U_F64::Inst_VOP3__V_CMPX_U_F64
Inst_VOP3__V_CMPX_U_F64(InFmt_VOP3 *)
Definition: instructions.cc:18983
Gcn3ISA::Inst_SMEM__S_ATC_PROBE_BUFFER::Inst_SMEM__S_ATC_PROBE_BUFFER
Inst_SMEM__S_ATC_PROBE_BUFFER(InFmt_SMEM *)
Definition: instructions.cc:5424
Gcn3ISA::Inst_SOPK__S_GETREG_B32::Inst_SOPK__S_GETREG_B32
Inst_SOPK__S_GETREG_B32(InFmt_SOPK *)
Definition: instructions.cc:1779
findLsbSet
constexpr int findLsbSet(uint64_t val)
Returns the bit position of the LSB that is set in the input.
Definition: bitfield.hh:276
Gcn3ISA::Inst_SOP2__S_BFM_B32::~Inst_SOP2__S_BFM_B32
~Inst_SOP2__S_BFM_B32()
Definition: instructions.cc:1083
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_ADD::~Inst_MIMG__IMAGE_ATOMIC_ADD
~Inst_MIMG__IMAGE_ATOMIC_ADD()
Definition: instructions.cc:38041
Gcn3ISA::Inst_VOP3__V_CMP_GE_I64::~Inst_VOP3__V_CMP_GE_I64
~Inst_VOP3__V_CMP_GE_I64()
Definition: instructions.cc:22123
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40198
Gcn3ISA::Inst_VOPC__V_CMPX_LE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13381
Gcn3ISA::Inst_VOP3__V_MUL_LEGACY_F32::~Inst_VOP3__V_MUL_LEGACY_F32
~Inst_VOP3__V_MUL_LEGACY_F32()
Definition: instructions.cc:23341
Gcn3ISA::Inst_DS__DS_READ_U8::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:32316
Gcn3ISA::Inst_SOP1__S_NAND_SAVEEXEC_B64::~Inst_SOP1__S_NAND_SAVEEXEC_B64
~Inst_SOP1__S_NAND_SAVEEXEC_B64()
Definition: instructions.cc:2882
Gcn3ISA::VecElemU8
uint8_t VecElemU8
Definition: registers.hh:160
Gcn3ISA::Inst_VOP3__V_MIN3_I32::~Inst_VOP3__V_MIN3_I32
~Inst_VOP3__V_MIN3_I32()
Definition: instructions.cc:28375
Gcn3ISA::Inst_VOP3__V_CMPX_LT_U64::Inst_VOP3__V_CMPX_LT_U64
Inst_VOP3__V_CMPX_LT_U64(InFmt_VOP3 *)
Definition: instructions.cc:22830
Gcn3ISA::Inst_VOP3__V_CMP_CLASS_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15772
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMIN_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36930
Gcn3ISA::Inst_SOP2__S_ADDC_U32::Inst_SOP2__S_ADDC_U32
Inst_SOP2__S_ADDC_U32(InFmt_SOP2 *)
Definition: instructions.cc:173
Gcn3ISA::Inst_MIMG__IMAGE_STORE_MIP_PCK::Inst_MIMG__IMAGE_STORE_MIP_PCK
Inst_MIMG__IMAGE_STORE_MIP_PCK(InFmt_MIMG *)
Definition: instructions.cc:37925
Gcn3ISA::Inst_SOP2__S_NOR_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:786
Gcn3ISA::Inst_VOP3__V_CMP_EQ_U32::Inst_VOP3__V_CMP_EQ_U32
Inst_VOP3__V_CMP_EQ_U32(InFmt_VOP3 *)
Definition: instructions.cc:21016
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_UBYTE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35048
Gcn3ISA::Inst_DS__DS_GWS_SEMA_V::Inst_DS__DS_GWS_SEMA_V
Inst_DS__DS_GWS_SEMA_V(InFmt_DS *)
Definition: instructions.cc:34056
Gcn3ISA::Inst_VOP3__V_INTERP_MOV_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29907
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE3::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25902
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:7717
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_XOR::Inst_MIMG__IMAGE_ATOMIC_XOR
Inst_MIMG__IMAGE_ATOMIC_XOR(InFmt_MIMG *)
Definition: instructions.cc:38240
Gcn3ISA::Inst_VOP1__V_EXP_F16::Inst_VOP1__V_EXP_F16
Inst_VOP1__V_EXP_F16(InFmt_VOP1 *)
Definition: instructions.cc:9155
Gcn3ISA::Inst_DS__DS_MAX_RTN_F64::~Inst_DS__DS_MAX_RTN_F64
~Inst_DS__DS_MAX_RTN_F64()
Definition: instructions.cc:33492
Gcn3ISA::Inst_DS__DS_ADD_U32::Inst_DS__DS_ADD_U32
Inst_DS__DS_ADD_U32(InFmt_DS *)
Definition: instructions.cc:30993
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B_CL_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38690
Gcn3ISA::Inst_VOP3__V_CMP_U_F32::~Inst_VOP3__V_CMP_U_F32
~Inst_VOP3__V_CMP_U_F32()
Definition: instructions.cc:16939
Gcn3ISA::Inst_SOP1__S_FF0_I32_B32::Inst_SOP1__S_FF0_I32_B32
Inst_SOP1__S_FF0_I32_B32(InFmt_SOP1 *)
Definition: instructions.cc:2268
Gcn3ISA::Inst_DS__DS_BPERMUTE_B32::Inst_DS__DS_BPERMUTE_B32
Inst_DS__DS_BPERMUTE_B32(InFmt_DS *)
Definition: instructions.cc:32600
Gcn3ISA::Inst_VOPC__V_CMP_LT_I32::~Inst_VOPC__V_CMP_LT_I32
~Inst_VOPC__V_CMP_LT_I32()
Definition: instructions.cc:13556
Gcn3ISA::Inst_DS__DS_SUB_U64::~Inst_DS__DS_SUB_U64
~Inst_DS__DS_SUB_U64()
Definition: instructions.cc:32696
Gcn3ISA::Inst_VOP3__V_CMPX_GT_U16::~Inst_VOP3__V_CMPX_GT_U16
~Inst_VOP3__V_CMPX_GT_U16()
Definition: instructions.cc:20493
Gcn3ISA::Inst_VOP3__V_CMP_GE_F32::Inst_VOP3__V_CMP_GE_F32
Inst_VOP3__V_CMP_GE_F32(InFmt_VOP3 *)
Definition: instructions.cc:16866
Gcn3ISA::Inst_SOP1__S_MOVRELS_B32::~Inst_SOP1__S_MOVRELS_B32
~Inst_SOP1__S_MOVRELS_B32()
Definition: instructions.cc:3035
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_I32::~Inst_VOP3__V_CMPX_EQ_I32
~Inst_VOP3__V_CMPX_EQ_I32()
Definition: instructions.cc:21330
Gcn3ISA::Inst_VOP3__V_TRIG_PREOP_F64::~Inst_VOP3__V_TRIG_PREOP_F64
~Inst_VOP3__V_TRIG_PREOP_F64()
Definition: instructions.cc:30851
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5279
Gcn3ISA::Inst_VOPC__V_CMP_LT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11566
Gcn3ISA::Inst_VOP2__V_MIN_I16::~Inst_VOP2__V_MIN_I16
~Inst_VOP2__V_MIN_I16()
Definition: instructions.cc:7253
Gcn3ISA::Inst_VOP3__V_CMPX_LT_I16::~Inst_VOP3__V_CMPX_LT_I16
~Inst_VOP3__V_CMPX_LT_I16()
Definition: instructions.cc:20050
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX8::Inst_SMEM__S_BUFFER_LOAD_DWORDX8
Inst_SMEM__S_BUFFER_LOAD_DWORDX8(InFmt_SMEM *)
Definition: instructions.cc:4925
Gcn3ISA::Inst_VOP3__V_CMP_F_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20655
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:38769
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMIN::Inst_MUBUF__BUFFER_ATOMIC_SMIN
Inst_MUBUF__BUFFER_ATOMIC_SMIN(InFmt_MUBUF *)
Definition: instructions.cc:36555
Gcn3ISA::Inst_DS__DS_MAX_F64::~Inst_DS__DS_MAX_F64
~Inst_DS__DS_MAX_F64()
Definition: instructions.cc:33121
Gcn3ISA::Inst_VOP3__V_CMPX_LT_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20370
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34642
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_LZ_O::~Inst_MIMG__IMAGE_GATHER4_LZ_O
~Inst_MIMG__IMAGE_GATHER4_LZ_O()
Definition: instructions.cc:39136
Gcn3ISA::Inst_VOP3__V_CMPX_NE_U16::Inst_VOP3__V_CMPX_NE_U16
Inst_VOP3__V_CMPX_NE_U16(InFmt_VOP3 *)
Definition: instructions.cc:20529
Gcn3ISA::Inst_VOPC__V_CMP_EQ_I32::Inst_VOPC__V_CMP_EQ_I32
Inst_VOPC__V_CMP_EQ_I32(InFmt_VOPC *)
Definition: instructions.cc:13581
Gcn3ISA::Inst_VOP1__V_RSQ_F64::~Inst_VOP1__V_RSQ_F64
~Inst_VOP1__V_RSQ_F64()
Definition: instructions.cc:8492
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:35006
Gcn3ISA::Inst_VOP2__V_MAX_I32::~Inst_VOP2__V_MAX_I32
~Inst_VOP2__V_MAX_I32()
Definition: instructions.cc:5984
Gcn3ISA::Inst_VOP3__V_RNDNE_F16::Inst_VOP3__V_RNDNE_F16
Inst_VOP3__V_RNDNE_F16(InFmt_VOP3 *)
Definition: instructions.cc:27485
Gcn3ISA::Inst_SOP2__S_ORN2_B32::~Inst_SOP2__S_ORN2_B32
~Inst_SOP2__S_ORN2_B32()
Definition: instructions.cc:659
Gcn3ISA::Inst_VOP3__V_FMA_F16::Inst_VOP3__V_FMA_F16
Inst_VOP3__V_FMA_F16(InFmt_VOP3 *)
Definition: instructions.cc:29769
Gcn3ISA::Inst_SOP1__S_FLBIT_I32_B32::Inst_SOP1__S_FLBIT_I32_B32
Inst_SOP1__S_FLBIT_I32_B32(InFmt_SOP1 *)
Definition: instructions.cc:2372
Gcn3ISA::Inst_VOP3__V_MED3_F32::Inst_VOP3__V_MED3_F32
Inst_VOP3__V_MED3_F32(InFmt_VOP3 *)
Definition: instructions.cc:28604
Gcn3ISA::Inst_VOP1__V_SIN_F32::~Inst_VOP1__V_SIN_F32
~Inst_VOP1__V_SIN_F32()
Definition: instructions.cc:8593
Gcn3ISA::VecElemI32
int32_t VecElemI32
Definition: registers.hh:165
Gcn3ISA::Inst_VOP3__V_MIN3_U32::Inst_VOP3__V_MIN3_U32
Inst_VOP3__V_MIN3_U32(InFmt_VOP3 *)
Definition: instructions.cc:28413
Gcn3ISA::Inst_VOP3__V_RSQ_F64::Inst_VOP3__V_RSQ_F64
Inst_VOP3__V_RSQ_F64(InFmt_VOP3 *)
Definition: instructions.cc:26610
Gcn3ISA::Inst_DS__DS_WRITE2_B32::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:31339
Gcn3ISA::Inst_VOP3__V_LOG_F16::Inst_VOP3__V_LOG_F16
Inst_VOP3__V_LOG_F16(InFmt_VOP3 *)
Definition: instructions.cc:27350
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_L::Inst_MIMG__IMAGE_GATHER4_L
Inst_MIMG__IMAGE_GATHER4_L(InFmt_MIMG *)
Definition: instructions.cc:38879
Gcn3ISA::Inst_SOP1__S_XNOR_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2954
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:25595
Gcn3ISA::Inst_VOP3__V_MUL_LEGACY_F32::Inst_VOP3__V_MUL_LEGACY_F32
Inst_VOP3__V_MUL_LEGACY_F32(InFmt_VOP3 *)
Definition: instructions.cc:23334
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX2::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:36104
Gcn3ISA::Inst_DS__DS_MAX_RTN_U64::~Inst_DS__DS_MAX_RTN_U64
~Inst_DS__DS_MAX_RTN_U64()
Definition: instructions.cc:33286
Gcn3ISA::Inst_VOP3__V_LSHLREV_B16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24843
Gcn3ISA::Inst_DS__DS_MIN_SRC2_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34271
Gcn3ISA::Inst_DS__DS_WRITE_SRC2_B32::Inst_DS__DS_WRITE_SRC2_B32
Inst_DS__DS_WRITE_SRC2_B32(InFmt_DS *)
Definition: instructions.cc:33943
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:30669
Gcn3ISA::Inst_VOP3__V_CMP_EQ_I32::~Inst_VOP3__V_CMP_EQ_I32
~Inst_VOP3__V_CMP_EQ_I32()
Definition: instructions.cc:20719
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SWAP::Inst_FLAT__FLAT_ATOMIC_SWAP
Inst_FLAT__FLAT_ATOMIC_SWAP(InFmt_FLAT *)
Definition: instructions.cc:40419
Gcn3ISA::Inst_VOP2__V_ADD_F16::~Inst_VOP2__V_ADD_F16
~Inst_VOP2__V_ADD_F16()
Definition: instructions.cc:6771
Gcn3ISA::Inst_VOP3__V_CMPX_GT_F32::Inst_VOP3__V_CMPX_GT_F32
Inst_VOP3__V_CMPX_GT_F32(InFmt_VOP3 *)
Definition: instructions.cc:17323
Gcn3ISA::Inst_VOP1__V_CVT_I32_F64::Inst_VOP1__V_CVT_I32_F64
Inst_VOP1__V_CVT_I32_F64(InFmt_VOP1 *)
Definition: instructions.cc:7408
Gcn3ISA::Inst_VOP1__V_COS_F16::~Inst_VOP1__V_COS_F16
~Inst_VOP1__V_COS_F16()
Definition: instructions.cc:9335
Gcn3ISA::Inst_VOP2__V_XOR_B32::~Inst_VOP2__V_XOR_B32
~Inst_VOP2__V_XOR_B32()
Definition: instructions.cc:6318
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XY::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37324
Gcn3ISA::Inst_VOP1__V_FLOOR_F32::Inst_VOP1__V_FLOOR_F32
Inst_VOP1__V_FLOOR_F32(InFmt_VOP1 *)
Definition: instructions.cc:8263
Gcn3ISA::Inst_VOP3__V_FMA_F32::Inst_VOP3__V_FMA_F32
Inst_VOP3__V_FMA_F32(InFmt_VOP3 *)
Definition: instructions.cc:28043
Gcn3ISA::Inst_VOP1__V_FREXP_EXP_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8924
Gcn3ISA::Inst_VOP3__V_CMPX_LT_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22529
Gcn3ISA::Inst_SOP1__S_FF1_I32_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2360
Gcn3ISA::Inst_VOPC__V_CMPX_NE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14167
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX3::~Inst_FLAT__FLAT_STORE_DWORDX3
~Inst_FLAT__FLAT_STORE_DWORDX3()
Definition: instructions.cc:40263
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE1::Inst_VOP3__V_CVT_F32_UBYTE1
Inst_VOP3__V_CVT_F32_UBYTE1(InFmt_VOP3 *)
Definition: instructions.cc:25813
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP::Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP
Inst_MUBUF__BUFFER_ATOMIC_CMPSWAP(InFmt_MUBUF *)
Definition: instructions.cc:36472
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_OR::~Inst_FLAT__FLAT_ATOMIC_OR
~Inst_FLAT__FLAT_ATOMIC_OR()
Definition: instructions.cc:40968
Gcn3ISA::Inst_VOP3__V_CMP_GT_F32::~Inst_VOP3__V_CMP_GT_F32
~Inst_VOP3__V_CMP_GT_F32()
Definition: instructions.cc:16808
Gcn3ISA::Inst_VOPC__V_CMPX_NLT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12508
Gcn3ISA::InstFormat::iFmt_VOP_SDWA
InFmt_VOP_SDWA iFmt_VOP_SDWA
Definition: gpu_decoder.hh:1638
Gcn3ISA::Inst_DS__DS_CONSUME::Inst_DS__DS_CONSUME
Inst_DS__DS_CONSUME(InFmt_DS *)
Definition: instructions.cc:34116
Gcn3ISA::Inst_DS__DS_SUB_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33747
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SMIN_X2::Inst_FLAT__FLAT_ATOMIC_SMIN_X2
Inst_FLAT__FLAT_ATOMIC_SMIN_X2(InFmt_FLAT *)
Definition: instructions.cc:41537
Gcn3ISA::Inst_VOPC__V_CMPX_T_U32::~Inst_VOPC__V_CMPX_T_U32
~Inst_VOPC__V_CMPX_T_U32()
Definition: instructions.cc:14471
Gcn3ISA::Inst_VOPC__V_CMPX_LT_F32::Inst_VOPC__V_CMPX_LT_F32
Inst_VOPC__V_CMPX_LT_F32(InFmt_VOPC *)
Definition: instructions.cc:11031
Gcn3ISA::Inst_SOP1__S_CBRANCH_JOIN::Inst_SOP1__S_CBRANCH_JOIN
Inst_SOP1__S_CBRANCH_JOIN(InFmt_SOP1 *)
Definition: instructions.cc:3135
Gcn3ISA::Inst_VOP3__V_FFBH_U32::Inst_VOP3__V_FFBH_U32
Inst_VOP3__V_FFBH_U32(InFmt_VOP3 *)
Definition: instructions.cc:26874
Gcn3ISA::Inst_VOP3__V_CMPX_NGE_F32::Inst_VOP3__V_CMPX_NGE_F32
Inst_VOP3__V_CMPX_NGE_F32(InFmt_VOP3 *)
Definition: instructions.cc:17498
Gcn3ISA::Inst_VOP3__V_CMP_EQ_I64::~Inst_VOP3__V_CMP_EQ_I64
~Inst_VOP3__V_CMP_EQ_I64()
Definition: instructions.cc:21955
Gcn3ISA::Inst_DS__DS_SUB_SRC2_U64::~Inst_DS__DS_SUB_SRC2_U64
~Inst_DS__DS_SUB_SRC2_U64()
Definition: instructions.cc:34185
Gcn3ISA::Inst_SOPP__S_CBRANCH_CDBGSYS_AND_USER::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4396
Gcn3ISA::Inst_SOP2__S_XOR_B32::~Inst_SOP2__S_XOR_B32
~Inst_SOP2__S_XOR_B32()
Definition: instructions.cc:539
Gcn3ISA::Inst_SOPP__S_CBRANCH_VCCNZ::~Inst_SOPP__S_CBRANCH_VCCNZ
~Inst_SOPP__S_CBRANCH_VCCNZ()
Definition: instructions.cc:4021
Gcn3ISA::Inst_VOP3__V_CMP_LG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16847
Gcn3ISA::Inst_VOP3__V_SUB_U32::~Inst_VOP3__V_SUB_U32
~Inst_VOP3__V_SUB_U32()
Definition: instructions.cc:24336
Gcn3ISA::Inst_VOP1__V_FREXP_MANT_F16::~Inst_VOP1__V_FREXP_MANT_F16
~Inst_VOP1__V_FREXP_MANT_F16()
Definition: instructions.cc:9183
Gcn3ISA::Inst_SOPK__S_CMOVK_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1392
Gcn3ISA::Inst_SOPC__S_BITCMP1_B64::~Inst_SOPC__S_BITCMP1_B64
~Inst_SOPC__S_BITCMP1_B64()
Definition: instructions.cc:3614
Gcn3ISA::Inst_SOP1__S_BREV_B64::~Inst_SOP1__S_BREV_B64
~Inst_SOP1__S_BREV_B64()
Definition: instructions.cc:2138
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:30982
Gcn3ISA::Inst_VOP2__V_ASHRREV_I16::~Inst_VOP2__V_ASHRREV_I16
~Inst_VOP2__V_ASHRREV_I16()
Definition: instructions.cc:7092
Gcn3ISA::Inst_SOP2__S_LSHL_B64::Inst_SOP2__S_LSHL_B64
Inst_SOP2__S_LSHL_B64(InFmt_SOP2 *)
Definition: instructions.cc:923
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:38678
Gcn3ISA::InFmt_VOP_SDWA::SRC1_SEL
unsigned int SRC1_SEL
Definition: gpu_decoder.hh:1603
Gcn3ISA::Inst_SMEM__S_LOAD_DWORDX8::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:4685
Gcn3ISA::Inst_DS::calcAddr
void calcAddr(GPUDynInstPtr gpuDynInst, ConstVecOperandU32 &addr)
Definition: op_encodings.hh:493
Gcn3ISA::Inst_DS__DS_MIN_RTN_I32::~Inst_DS__DS_MIN_RTN_I32
~Inst_DS__DS_MIN_RTN_I32()
Definition: instructions.cc:31749
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:28941
Gcn3ISA::Inst_VOP3__V_CMP_U_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16202
Wavefront::outstandingReqsWrLm
int outstandingReqsWrLm
Definition: wavefront.hh:173
Gcn3ISA::Inst_VOPC__V_CMP_NE_U16::~Inst_VOPC__V_CMP_NE_U16
~Inst_VOPC__V_CMP_NE_U16()
Definition: instructions.cc:12950
Gcn3ISA::Inst_VOP3__V_ADD_F32::~Inst_VOP3__V_ADD_F32
~Inst_VOP3__V_ADD_F32()
Definition: instructions.cc:23179
Gcn3ISA::Inst_SOP2__S_OR_B64::Inst_SOP2__S_OR_B64
Inst_SOP2__S_OR_B64(InFmt_SOP2 *)
Definition: instructions.cc:503
Gcn3ISA::Inst_SOP1__S_BCNT1_I32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2225
Gcn3ISA::Inst_VOPC__V_CMP_NE_I64::Inst_VOPC__V_CMP_NE_I64
Inst_VOPC__V_CMP_NE_I64(InFmt_VOPC *)
Definition: instructions.cc:14642
Gcn3ISA::Inst_VOP1__V_FFBH_I32::Inst_VOP1__V_FFBH_I32
Inst_VOP1__V_FFBH_I32(InFmt_VOP1 *)
Definition: instructions.cc:8778
Gcn3ISA::Inst_DS__DS_READ_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33520
Gcn3ISA::Inst_SOP1__S_NOT_B64::~Inst_SOP1__S_NOT_B64
~Inst_SOP1__S_NOT_B64()
Definition: instructions.cc:2029
Gcn3ISA::Inst_VOP3__V_CMPX_GE_U64::Inst_VOP3__V_CMPX_GE_U64
Inst_VOP3__V_CMPX_GE_U64(InFmt_VOP3 *)
Definition: instructions.cc:23045
Gcn3ISA::Inst_VOP1__V_EXP_F32::~Inst_VOP1__V_EXP_F32
~Inst_VOP1__V_EXP_F32()
Definition: instructions.cc:8300
Gcn3ISA::Inst_VOP2__V_ADD_F32::~Inst_VOP2__V_ADD_F32
~Inst_VOP2__V_ADD_F32()
Definition: instructions.cc:5483
Gcn3ISA::Inst_SOP2__S_ORN2_B64::Inst_SOP2__S_ORN2_B64
Inst_SOP2__S_ORN2_B64(InFmt_SOP2 *)
Definition: instructions.cc:683
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2::~Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2
~Inst_MUBUF__BUFFER_ATOMIC_UMAX_X2()
Definition: instructions.cc:37003
Gcn3ISA::Inst_VOP3__V_CMP_NGE_F64::~Inst_VOP3__V_CMP_NGE_F64
~Inst_VOP3__V_CMP_NGE_F64()
Definition: instructions.cc:18208
Gcn3ISA::Inst_VOPC__V_CMPX_F_F16::Inst_VOPC__V_CMPX_F_F16
Inst_VOPC__V_CMPX_F_F16(InFmt_VOPC *)
Definition: instructions.cc:10207
Gcn3ISA::Inst_SOP2__S_BFM_B64::~Inst_SOP2__S_BFM_B64
~Inst_SOP2__S_BFM_B64()
Definition: instructions.cc:1110
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:30676
Gcn3ISA::Inst_VOP2__V_MUL_I32_I24::~Inst_VOP2__V_MUL_I32_I24
~Inst_VOP2__V_MUL_I32_I24()
Definition: instructions.cc:5713
Gcn3ISA::Inst_VOP3__V_CMP_LT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16715
Gcn3ISA::Inst_SOPP__S_ENDPGM::Inst_SOPP__S_ENDPGM
Inst_SOPP__S_ENDPGM(InFmt_SOPP *)
Definition: instructions.cc:3746
Gcn3ISA::Inst_VOP1__V_CVT_F16_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9012
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX2::Inst_FLAT__FLAT_LOAD_DWORDX2
Inst_FLAT__FLAT_LOAD_DWORDX2(InFmt_FLAT *)
Definition: instructions.cc:39732
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:25672
Gcn3ISA::Inst_SMEM__S_LOAD_DWORD::~Inst_SMEM__S_LOAD_DWORD
~Inst_SMEM__S_LOAD_DWORD()
Definition: instructions.cc:4464
Gcn3ISA::Inst_VOP3__V_ASHRREV_I16::~Inst_VOP3__V_ASHRREV_I16
~Inst_VOP3__V_ASHRREV_I16()
Definition: instructions.cc:24926
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX4::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35682
Gcn3ISA::Inst_SOPP__S_ENDPGM::~Inst_SOPP__S_ENDPGM
~Inst_SOPP__S_ENDPGM()
Definition: instructions.cc:3752
Gcn3ISA::Inst_DS__DS_MAX_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33881
Gcn3ISA::Inst_VOPC__V_CMP_LT_F64::~Inst_VOPC__V_CMP_LT_F64
~Inst_VOPC__V_CMP_LT_F64()
Definition: instructions.cc:11560
Gcn3ISA::Inst_VOP3__V_CMPX_T_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20314
Gcn3ISA::Inst_VOP1__V_FRACT_F32::~Inst_VOP1__V_FRACT_F32
~Inst_VOP1__V_FRACT_F32()
Definition: instructions.cc:8149
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_PCK::Inst_MIMG__IMAGE_LOAD_PCK
Inst_MIMG__IMAGE_LOAD_PCK(InFmt_MIMG *)
Definition: instructions.cc:37721
Gcn3ISA::Inst_VOPC__V_CMP_EQ_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12863
Gcn3ISA::Inst_DS__DS_WRITE_B96::~Inst_DS__DS_WRITE_B96
~Inst_DS__DS_WRITE_B96()
Definition: instructions.cc:34459
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35410
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_L::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38525
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_PCK_SGN::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37770
Gcn3ISA::Inst_VOP3__V_SAD_U8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28763
Gcn3ISA::Inst_DS__DS_MAX_SRC2_F64::Inst_DS__DS_MAX_SRC2_F64
Inst_DS__DS_MAX_SRC2_F64(InFmt_DS *)
Definition: instructions.cc:34432
Gcn3ISA::Inst_VOP3__V_CVT_F32_U32::~Inst_VOP3__V_CVT_F32_U32
~Inst_VOP3__V_CVT_F32_U32()
Definition: instructions.cc:25388
Gcn3ISA::Inst_VOP3__V_CMPX_NE_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22701
Gcn3ISA::Inst_VOP2__V_MAX_U32::~Inst_VOP2__V_MAX_U32
~Inst_VOP2__V_MAX_U32()
Definition: instructions.cc:6046
Gcn3ISA::Inst_VOP3__V_CMP_NGE_F64::Inst_VOP3__V_CMP_NGE_F64
Inst_VOP3__V_CMP_NGE_F64(InFmt_VOP3 *)
Definition: instructions.cc:18200
Gcn3ISA::Inst_DS__DS_OR_RTN_B32::~Inst_DS__DS_OR_RTN_B32
~Inst_DS__DS_OR_RTN_B32()
Definition: instructions.cc:31839
Gcn3ISA::Inst_VOP3__V_CMP_GE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18049
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW
Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZW(InFmt_MTBUF *)
Definition: instructions.cc:37365
Gcn3ISA::Inst_VOP3__V_RNDNE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26108
Gcn3ISA::Inst_VOP3__V_MUL_LO_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24802
Gcn3ISA::Inst_VOPC__V_CMPX_T_U32::Inst_VOPC__V_CMPX_T_U32
Inst_VOPC__V_CMPX_T_U32(InFmt_VOPC *)
Definition: instructions.cc:14465
Gcn3ISA::Inst_VOPC__V_CMPX_F_I64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14980
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_X::~Inst_MUBUF__BUFFER_LOAD_FORMAT_X
~Inst_MUBUF__BUFFER_LOAD_FORMAT_X()
Definition: instructions.cc:34535
Gcn3ISA::Inst_VOP3__V_CMP_F_I64::Inst_VOP3__V_CMP_F_I64
Inst_VOP3__V_CMP_F_I64(InFmt_VOP3 *)
Definition: instructions.cc:21880
Gcn3ISA::Inst_VOP1__V_RNDNE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8246
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:38752
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORD::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:35310
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX4::Inst_MUBUF__BUFFER_STORE_DWORDX4
Inst_MUBUF__BUFFER_STORE_DWORDX4(InFmt_MUBUF *)
Definition: instructions.cc:36212
Gcn3ISA::Inst_VOP3__V_CMPX_NLT_F32::Inst_VOP3__V_CMPX_NLT_F32
Inst_VOP3__V_CMPX_NLT_F32(InFmt_VOP3 *)
Definition: instructions.cc:17669
Gcn3ISA::Inst_SMEM__S_STORE_DWORDX4::Inst_SMEM__S_STORE_DWORDX4
Inst_SMEM__S_STORE_DWORDX4(InFmt_SMEM *)
Definition: instructions.cc:5164
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_SUB::~Inst_MIMG__IMAGE_ATOMIC_SUB
~Inst_MIMG__IMAGE_ATOMIC_SUB()
Definition: instructions.cc:38067
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:38028
Gcn3ISA::Inst_DS__DS_WRITE_B64::Inst_DS__DS_WRITE_B64
Inst_DS__DS_WRITE_B64(InFmt_DS *)
Definition: instructions.cc:32909
Gcn3ISA::InstFormat::imm_u32
uint32_t imm_u32
Definition: gpu_decoder.hh:1639
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE3::Inst_VOP3__V_CVT_F32_UBYTE3
Inst_VOP3__V_CVT_F32_UBYTE3(InFmt_VOP3 *)
Definition: instructions.cc:25889
Gcn3ISA::Inst_VOPC__V_CMP_GT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11662
Gcn3ISA::Inst_VOPC__V_CMPX_F_U16::Inst_VOPC__V_CMPX_F_U16
Inst_VOPC__V_CMPX_F_U16(InFmt_VOPC *)
Definition: instructions.cc:13278
Gcn3ISA::Inst_SOP2__S_ASHR_I32::~Inst_SOP2__S_ASHR_I32
~Inst_SOP2__S_ASHR_I32()
Definition: instructions.cc:1021
Gcn3ISA::Inst_VOPC__V_CMPX_T_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14231
Gcn3ISA::Inst_VOP3__V_MUL_HI_I32_I24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23586
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37526
Gcn3ISA::Inst_VOP3__V_CMP_EQ_U64::~Inst_VOP3__V_CMP_EQ_U64
~Inst_VOP3__V_CMP_EQ_U64()
Definition: instructions.cc:22259
Gcn3ISA::Inst_SOP2__S_MAX_U32::~Inst_SOP2__S_MAX_U32
~Inst_SOP2__S_MAX_U32()
Definition: instructions.cc:333
Gcn3ISA::Inst_DS__DS_MIN_SRC2_U32::Inst_DS__DS_MIN_SRC2_U32
Inst_DS__DS_MIN_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:33848
Gcn3ISA::Inst_SOP2__S_NOR_B32::~Inst_SOP2__S_NOR_B32
~Inst_SOP2__S_NOR_B32()
Definition: instructions.cc:779
Wavefront::rdGmReqsInPipe
int rdGmReqsInPipe
Definition: wavefront.hh:183
Gcn3ISA::Inst_VOPC__V_CMPX_NE_U32::~Inst_VOPC__V_CMPX_NE_U32
~Inst_VOPC__V_CMPX_NE_U32()
Definition: instructions.cc:14407
Gcn3ISA::Inst_SOPC__S_CMP_LG_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3412
Gcn3ISA::Inst_SOP2__S_BFE_U32::~Inst_SOP2__S_BFE_U32
~Inst_SOP2__S_BFE_U32()
Definition: instructions.cc:1163
Gcn3ISA::Inst_VOP1__V_RCP_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8456
Gcn3ISA::VecOperand::read
void read() override
read from the vrf.
Definition: operand.hh:145
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:37431
Gcn3ISA::Inst_DS__DS_GWS_BARRIER::Inst_DS__DS_GWS_BARRIER
Inst_DS__DS_GWS_BARRIER(InFmt_DS *)
Definition: instructions.cc:34101
Gcn3ISA::Inst_VOP3__V_TRUNC_F32::Inst_VOP3__V_TRUNC_F32
Inst_VOP3__V_TRUNC_F32(InFmt_VOP3 *)
Definition: instructions.cc:26210
Gcn3ISA::Inst_VOP3__V_FFBH_U32::~Inst_VOP3__V_FFBH_U32
~Inst_VOP3__V_FFBH_U32()
Definition: instructions.cc:26880
Gcn3ISA::Inst_SOPP__S_CBRANCH_VCCZ::~Inst_SOPP__S_CBRANCH_VCCZ
~Inst_SOPP__S_CBRANCH_VCCZ()
Definition: instructions.cc:3991
Gcn3ISA::Inst_FLAT__FLAT_LOAD_SBYTE::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39540
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37800
Gcn3ISA::Inst_VOP3__V_CMP_LG_F32::Inst_VOP3__V_CMP_LG_F32
Inst_VOP3__V_CMP_LG_F32(InFmt_VOP3 *)
Definition: instructions.cc:16833
Gcn3ISA::VecElemU64
uint64_t VecElemU64
Definition: registers.hh:167
Gcn3ISA::Inst_MUBUF::extData
InFmt_MUBUF_1 extData
Definition: op_encodings.hh:713
Gcn3ISA::Inst_VOP3__V_CMPX_U_F32::Inst_VOP3__V_CMPX_U_F32
Inst_VOP3__V_CMPX_U_F32(InFmt_VOP3 *)
Definition: instructions.cc:17462
Gcn3ISA::Inst_SOPK__S_CMPK_LT_U32::Inst_SOPK__S_CMPK_LT_U32
Inst_SOPK__S_CMPK_LT_U32(InFmt_SOPK *)
Definition: instructions.cc:1656
Gcn3ISA::Inst_SMEM__S_MEMREALTIME::Inst_SMEM__S_MEMREALTIME
Inst_SMEM__S_MEMREALTIME(InFmt_SMEM *)
Definition: instructions.cc:5393
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORDX4::~Inst_SMEM__S_BUFFER_STORE_DWORDX4
~Inst_SMEM__S_BUFFER_STORE_DWORDX4()
Definition: instructions.cc:5291
Gcn3ISA::Inst_DS__DS_MAX_RTN_F32::Inst_DS__DS_MAX_RTN_F32
Inst_DS__DS_MAX_RTN_F32(InFmt_DS *)
Definition: instructions.cc:32002
Gcn3ISA::Inst_DS__DS_WRITE_SRC2_B64::Inst_DS__DS_WRITE_SRC2_B64
Inst_DS__DS_WRITE_SRC2_B64(InFmt_DS *)
Definition: instructions.cc:34390
Gcn3ISA::Inst_VOPC__V_CMP_EQ_I16::Inst_VOPC__V_CMP_EQ_I16
Inst_VOPC__V_CMP_EQ_I16(InFmt_VOPC *)
Definition: instructions.cc:12613
Gcn3ISA::Inst_DS__DS_NOP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31511
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_USHORT::~Inst_MUBUF__BUFFER_LOAD_USHORT
~Inst_MUBUF__BUFFER_LOAD_USHORT()
Definition: instructions.cc:35173
Gcn3ISA::Inst_MIMG__IMAGE_LOAD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37689
Gcn3ISA::Inst_DS__DS_MIN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32814
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SWAP::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40501
Gcn3ISA::Inst_SOP2__S_MUL_I32::Inst_SOP2__S_MUL_I32
Inst_SOP2__S_MUL_I32(InFmt_SOP2 *)
Definition: instructions.cc:1131
Gcn3ISA::Inst_VOPC__V_CMPX_LG_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11176
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37419
Gcn3ISA::Inst_VOP3__V_SQRT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26709
Gcn3ISA::Inst_VOP3__V_MIN_U16::~Inst_VOP3__V_MIN_U16
~Inst_VOP3__V_MIN_U16()
Definition: instructions.cc:25098
Gcn3ISA::Inst_VOP3__V_RNDNE_F16::~Inst_VOP3__V_RNDNE_F16
~Inst_VOP3__V_RNDNE_F16()
Definition: instructions.cc:27492
Gcn3ISA::Inst_VOP3__V_CMPX_GE_I32::~Inst_VOP3__V_CMPX_GE_I32
~Inst_VOP3__V_CMPX_GE_I32()
Definition: instructions.cc:21502
Gcn3ISA::Inst_VOP3__V_MOV_FED_B32::~Inst_VOP3__V_MOV_FED_B32
~Inst_VOP3__V_MOV_FED_B32()
Definition: instructions.cc:25539
Gcn3ISA::Inst_VOP1__V_CVT_F64_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7809
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_DWORDX2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:35467
Gcn3ISA::Inst_VOP3__V_CMP_F_F16::Inst_VOP3__V_CMP_F_F16
Inst_VOP3__V_CMP_F_F16(InFmt_VOP3 *)
Definition: instructions.cc:16039
Gcn3ISA::Inst_VOP2__V_LSHRREV_B16::~Inst_VOP2__V_LSHRREV_B16
~Inst_VOP2__V_LSHRREV_B16()
Definition: instructions.cc:7060
Gcn3ISA::Inst_VOP3__V_NOT_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:26827
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_INC::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41081
Gcn3ISA::Inst_SOPC__S_CMP_LG_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3256
Gcn3ISA::Inst_DS__DS_RSUB_U64::Inst_DS__DS_RSUB_U64
Inst_DS__DS_RSUB_U64(InFmt_DS *)
Definition: instructions.cc:32709
Gcn3ISA::Inst_DS__DS_WRITE_SRC2_B32::~Inst_DS__DS_WRITE_SRC2_B32
~Inst_DS__DS_WRITE_SRC2_B32()
Definition: instructions.cc:33950
Gcn3ISA::Inst_VOP3__V_CMPX_GE_F32::Inst_VOP3__V_CMPX_GE_F32
Inst_VOP3__V_CMPX_GE_F32(InFmt_VOP3 *)
Definition: instructions.cc:17392
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XY::Inst_MUBUF__BUFFER_LOAD_FORMAT_XY
Inst_MUBUF__BUFFER_LOAD_FORMAT_XY(InFmt_MUBUF *)
Definition: instructions.cc:34557
Gcn3ISA::Inst_DS__DS_ADD_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31006
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:29469
Gcn3ISA::Inst_VOP3__V_CMP_LG_F32::~Inst_VOP3__V_CMP_LG_F32
~Inst_VOP3__V_CMP_LG_F32()
Definition: instructions.cc:16841
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX2::~Inst_SMEM__S_BUFFER_LOAD_DWORDX2
~Inst_SMEM__S_BUFFER_LOAD_DWORDX2()
Definition: instructions.cc:4815
Gcn3ISA::Inst_VOPC__V_CMPX_GT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14381
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_UMIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36603
Gcn3ISA::ScalarOperand::rawData
std::enable_if_t< Condition, DataType > 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:394
Gcn3ISA::Inst_VOP3__V_CMP_CLASS_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16002
Gcn3ISA::Inst_SOP2__S_XNOR_B64::Inst_SOP2__S_XNOR_B64
Inst_SOP2__S_XNOR_B64(InFmt_SOP2 *)
Definition: instructions.cc:863
Gcn3ISA::Inst_VOP3__V_CMPX_GT_U16::Inst_VOP3__V_CMPX_GT_U16
Inst_VOP3__V_CMPX_GT_U16(InFmt_VOP3 *)
Definition: instructions.cc:20486
NAN
#define NAN
Define Not a number.
Definition: text.cc:72
Gcn3ISA::Inst_VOP3__V_LDEXP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25199
Gcn3ISA::Inst_VOPC__V_CMPX_GE_F16::~Inst_VOPC__V_CMPX_GE_F16
~Inst_VOPC__V_CMPX_GE_F16()
Definition: instructions.cc:10322
Gcn3ISA::Inst_VOP3__V_CVT_U32_F64::Inst_VOP3__V_CVT_U32_F64
Inst_VOP3__V_CVT_U32_F64(InFmt_VOP3 *)
Definition: instructions.cc:25927
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:7686
Gcn3ISA::Inst_VOP2__V_ADD_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6777
Gcn3ISA::Inst_VOP3__V_CMPX_LE_F64::Inst_VOP3__V_CMPX_LE_F64
Inst_VOP3__V_CMPX_LE_F64(InFmt_VOP3 *)
Definition: instructions.cc:18700
Gcn3ISA::Inst_VOP3__V_LOG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27366
Gcn3ISA::Inst_DS__DS_MIN_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31133
Gcn3ISA::Inst_VOP3__V_MAX_U32::~Inst_VOP3__V_MAX_U32
~Inst_VOP3__V_MAX_U32()
Definition: instructions.cc:23941
Gcn3ISA::Inst_VOP1__V_FREXP_EXP_I32_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8821
Gcn3ISA::Inst_VOP1__V_BFREV_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8701
Gcn3ISA::Inst_VOP3__V_MQSAD_U32_U8::~Inst_VOP3__V_MQSAD_U32_U8
~Inst_VOP3__V_MQSAD_U32_U8()
Definition: instructions.cc:29494
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SUB_X2::~Inst_MUBUF__BUFFER_ATOMIC_SUB_X2
~Inst_MUBUF__BUFFER_ATOMIC_SUB_X2()
Definition: instructions.cc:36895
Gcn3ISA::Inst_DS__DS_OR_SRC2_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33919
Gcn3ISA::Inst_SOP2__S_ABSDIFF_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1325
Gcn3ISA::Inst_VOPC__V_CMP_LE_I64::Inst_VOPC__V_CMP_LE_I64
Inst_VOPC__V_CMP_LE_I64(InFmt_VOPC *)
Definition: instructions.cc:14580
Gcn3ISA::Inst_VOP1__V_MOV_B32::~Inst_VOP1__V_MOV_B32
~Inst_VOP1__V_MOV_B32()
Definition: instructions.cc:7319
Gcn3ISA::Inst_VOP3__V_SUB_F16::Inst_VOP3__V_SUB_F16
Inst_VOP3__V_SUB_F16(InFmt_VOP3 *)
Definition: instructions.cc:24594
Gcn3ISA::Inst_DS__DS_INC_SRC2_U32::Inst_DS__DS_INC_SRC2_U32
Inst_DS__DS_INC_SRC2_U32(InFmt_DS *)
Definition: instructions.cc:33771
Gcn3ISA::Inst_SOP2__S_BFE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1172
Gcn3ISA::Inst_VOP3__V_MSAD_U8::~Inst_VOP3__V_MSAD_U8
~Inst_VOP3__V_MSAD_U8()
Definition: instructions.cc:29440
Gcn3ISA::Inst_VOPC__V_CMP_EQ_U64::Inst_VOPC__V_CMP_EQ_U64
Inst_VOPC__V_CMP_EQ_U64(InFmt_VOPC *)
Definition: instructions.cc:14787
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:30903
Gcn3ISA::Inst_SOP2__S_MIN_I32::~Inst_SOP2__S_MIN_I32
~Inst_SOP2__S_MIN_I32()
Definition: instructions.cc:243
Gcn3ISA::Inst_VOP3__V_CMPX_F_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21579
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C_LZ::~Inst_MIMG__IMAGE_GATHER4_C_LZ
~Inst_MIMG__IMAGE_GATHER4_C_LZ()
Definition: instructions.cc:39035
Gcn3ISA::Inst_VOPC__V_CMP_TRU_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10202
Gcn3ISA::Inst_VOPC__V_CMPX_NGT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11380
Gcn3ISA::Inst_VOP1__V_NOP::Inst_VOP1__V_NOP
Inst_VOP1__V_NOP(InFmt_VOP1 *)
Definition: instructions.cc:7296
Gcn3ISA::Inst_VOP3__V_CMP_NGE_F32::Inst_VOP3__V_CMP_NGE_F32
Inst_VOP3__V_CMP_NGE_F32(InFmt_VOP3 *)
Definition: instructions.cc:16965
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE2::Inst_VOP3__V_CVT_F32_UBYTE2
Inst_VOP3__V_CVT_F32_UBYTE2(InFmt_VOP3 *)
Definition: instructions.cc:25851
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C::~Inst_MIMG__IMAGE_SAMPLE_C
~Inst_MIMG__IMAGE_SAMPLE_C()
Definition: instructions.cc:38454
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_X::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34541
Gcn3ISA::Inst_SOPK__S_CMPK_EQ_U32::~Inst_SOPK__S_CMPK_EQ_U32
~Inst_SOPK__S_CMPK_EQ_U32()
Definition: instructions.cc:1562
Gcn3ISA::Inst_VOPC__V_CMP_CLASS_F32::~Inst_VOPC__V_CMP_CLASS_F32
~Inst_VOPC__V_CMP_CLASS_F32()
Definition: instructions.cc:9413
Gcn3ISA::Inst_VOP3__V_CMP_EQ_I16::Inst_VOP3__V_CMP_EQ_I16
Inst_VOP3__V_CMP_EQ_I16(InFmt_VOP3 *)
Definition: instructions.cc:19475
Gcn3ISA::Inst_VOPC__V_CMPX_LE_F16::Inst_VOPC__V_CMPX_LE_F16
Inst_VOPC__V_CMPX_LE_F16(InFmt_VOPC *)
Definition: instructions.cc:10261
Gcn3ISA::Inst_VOP1__V_CVT_F32_F16::~Inst_VOP1__V_CVT_F32_F16
~Inst_VOP1__V_CVT_F32_F16()
Definition: instructions.cc:7675
Gcn3ISA::Inst_VOPC__V_CMPX_CLASS_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9914
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_B::Inst_MIMG__IMAGE_SAMPLE_C_B
Inst_MIMG__IMAGE_SAMPLE_C_B(InFmt_MIMG *)
Definition: instructions.cc:38530
Gcn3ISA::Inst_DS__DS_ADD_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31529
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2::Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2
Inst_MUBUF__BUFFER_ATOMIC_SMAX_X2(InFmt_MUBUF *)
Definition: instructions.cc:36963
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34631
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34880
Gcn3ISA::Inst_VOP3__V_MAD_LEGACY_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27647
Gcn3ISA::InFmt_SMEM::SDATA
unsigned int SDATA
Definition: gpu_decoder.hh:1476
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37592
Gcn3ISA::Inst_VOP3__V_MAD_I64_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:29568
Gcn3ISA::Inst_SOP2__S_BFE_I32::~Inst_SOP2__S_BFE_I32
~Inst_SOP2__S_BFE_I32()
Definition: instructions.cc:1196
Gcn3ISA::Inst_FLAT__FLAT_LOAD_SBYTE::Inst_FLAT__FLAT_LOAD_SBYTE
Inst_FLAT__FLAT_LOAD_SBYTE(InFmt_FLAT *)
Definition: instructions.cc:39487
Gcn3ISA::REG_PI
@ REG_PI
Definition: registers.hh:121
Gcn3ISA::Inst_VOP2__V_MAX_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5990
Gcn3ISA::Inst_VOP3__V_CMPX_F_I16::Inst_VOP3__V_CMPX_F_I16
Inst_VOP3__V_CMPX_F_I16(InFmt_VOP3 *)
Definition: instructions.cc:20015
Gcn3ISA::Inst_FLAT::calcAddr
void calcAddr(GPUDynInstPtr gpuDynInst, ConstVecOperandU64 &addr)
Definition: op_encodings.hh:818
Gcn3ISA::Inst_VOP2__V_AND_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:6220
Gcn3ISA::Inst_VOP2__V_LSHLREV_B16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7035
Gcn3ISA::Inst_SOPK::instData
InFmt_SOPK instData
Definition: op_encodings.hh:110
Gcn3ISA::Inst_SOP2__S_XNOR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:876
Gcn3ISA::Inst_SMEM__S_MEMTIME::Inst_SMEM__S_MEMTIME
Inst_SMEM__S_MEMTIME(InFmt_SMEM *)
Definition: instructions.cc:5377
Gcn3ISA::Inst_SOP1__S_BREV_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2144
Gcn3ISA::Inst_VOPC__V_CMPX_NE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14413
Gcn3ISA::Inst_DS__DS_READ2_B32::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:32166
Gcn3ISA::Inst_DS__DS_INC_SRC2_U64::~Inst_DS__DS_INC_SRC2_U64
~Inst_DS__DS_INC_SRC2_U64()
Definition: instructions.cc:34223
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_CL::Inst_MIMG__IMAGE_GATHER4_CL
Inst_MIMG__IMAGE_GATHER4_CL(InFmt_MIMG *)
Definition: instructions.cc:38863
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_DEC_X2::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41895
Gcn3ISA::InFmt_VOP_DPP::SRC0_NEG
unsigned int SRC0_NEG
Definition: gpu_decoder.hh:1584
Gcn3ISA::Inst_SOPP__S_TRAP::Inst_SOPP__S_TRAP
Inst_SOPP__S_TRAP(InFmt_SOPP *)
Definition: instructions.cc:4254
Gcn3ISA::Inst_VOP3__V_SUB_F32::Inst_VOP3__V_SUB_F32
Inst_VOP3__V_SUB_F32(InFmt_VOP3 *)
Definition: instructions.cc:23226
Gcn3ISA::Inst_VOP3__V_CMP_NE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19614
Gcn3ISA::Inst_VOP2__V_ADDC_U32::~Inst_VOP2__V_ADDC_U32
~Inst_VOP2__V_ADDC_U32()
Definition: instructions.cc:6641
Gcn3ISA::Inst_SMEM__S_STORE_DWORDX4::~Inst_SMEM__S_STORE_DWORDX4
~Inst_SMEM__S_STORE_DWORDX4()
Definition: instructions.cc:5171
Wavefront::dispatchId
uint32_t dispatchId
Definition: wavefront.hh:167
Gcn3ISA::Inst_SMEM__S_ATC_PROBE::Inst_SMEM__S_ATC_PROBE
Inst_SMEM__S_ATC_PROBE(InFmt_SMEM *)
Definition: instructions.cc:5409
Gcn3ISA::Inst_VOP1__V_TRUNC_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8186
Gcn3ISA::VecElemF32
float VecElemF32
Definition: registers.hh:166
Gcn3ISA::Inst_VOPC__V_CMP_NGT_F64::~Inst_VOPC__V_CMP_NGT_F64
~Inst_VOPC__V_CMP_NGT_F64()
Definition: instructions.cc:11884
Gcn3ISA::Inst_VOPC__V_CMP_T_I32::~Inst_VOPC__V_CMP_T_I32
~Inst_VOPC__V_CMP_T_I32()
Definition: instructions.cc:13742
Gcn3ISA::Inst_VOP1__V_CVT_F16_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7663
Gcn3ISA::Inst_DS__DS_APPEND::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34141
Gcn3ISA::Inst_VOP1__V_RCP_F32::Inst_VOP1__V_RCP_F32
Inst_VOP1__V_RCP_F32(InFmt_VOP1 *)
Definition: instructions.cc:8353
Gcn3ISA::Inst_DS__DS_INC_SRC2_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34232
Gcn3ISA::Inst_VOP3__V_CMPX_CLASS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15657
Gcn3ISA::Inst_VOP3__V_CMPX_LE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20456
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_U64::Inst_VOPC__V_CMPX_EQ_U64
Inst_VOPC__V_CMPX_EQ_U64(InFmt_VOPC *)
Definition: instructions.cc:15273
Gcn3ISA::ScalarOperand::read
void read() override
Definition: operand.hh:411
Gcn3ISA::Inst_VOPC__V_CMPX_U_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12308
Gcn3ISA::InFmt_MIMG
Definition: gpu_decoder.hh:1408
Gcn3ISA::Inst_VOPC__V_CMP_LE_F64::~Inst_VOPC__V_CMP_LE_F64
~Inst_VOPC__V_CMP_LE_F64()
Definition: instructions.cc:11624
Gcn3ISA::Inst_VOP3__V_FLOOR_F64::~Inst_VOP3__V_FLOOR_F64
~Inst_VOP3__V_FLOOR_F64()
Definition: instructions.cc:26140
Gcn3ISA::Inst_VOPC__V_CMPX_T_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15445
Gcn3ISA::Inst_VOPC__V_CMP_LT_U16::~Inst_VOPC__V_CMP_LT_U16
~Inst_VOPC__V_CMP_LT_U16()
Definition: instructions.cc:12826
Gcn3ISA::Inst_SOPP__S_CBRANCH_EXECNZ::Inst_SOPP__S_CBRANCH_EXECNZ
Inst_SOPP__S_CBRANCH_EXECNZ(InFmt_SOPP *)
Definition: instructions.cc:4068
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:37607
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_D::Inst_MIMG__IMAGE_SAMPLE_C_D
Inst_MIMG__IMAGE_SAMPLE_C_D(InFmt_MIMG *)
Definition: instructions.cc:38481
Gcn3ISA::Inst_VOPC__V_CMP_LT_I16::Inst_VOPC__V_CMP_LT_I16
Inst_VOPC__V_CMP_LT_I16(InFmt_VOPC *)
Definition: instructions.cc:12582
Gcn3ISA::Inst_VOP3__V_CVT_F16_F32::Inst_VOP3__V_CVT_F16_F32
Inst_VOP3__V_CVT_F16_F32(InFmt_VOP3 *)
Definition: instructions.cc:25551
Gcn3ISA::Inst_VOPC__V_CMP_NGT_F16::~Inst_VOPC__V_CMP_NGT_F16
~Inst_VOPC__V_CMP_NGT_F16()
Definition: instructions.cc:10124
Gcn3ISA::Inst_VOPC__V_CMP_LT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12594
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_DEC::~Inst_MIMG__IMAGE_ATOMIC_DEC
~Inst_MIMG__IMAGE_ATOMIC_DEC()
Definition: instructions.cc:38305
Gcn3ISA::Inst_DS__DS_AND_SRC2_B64::Inst_DS__DS_AND_SRC2_B64
Inst_DS__DS_AND_SRC2_B64(InFmt_DS *)
Definition: instructions.cc:34333
Gcn3ISA::Inst_VOP3__V_CMPX_NLT_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19336
Gcn3ISA::Inst_VOPC__V_CMPX_GT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14135
Gcn3ISA::Inst_VOP3__V_INTERP_P2_F16::~Inst_VOP3__V_INTERP_P2_F16
~Inst_VOP3__V_INTERP_P2_F16()
Definition: instructions.cc:29956
Gcn3ISA::Inst_DS__DS_MIN_U64::~Inst_DS__DS_MIN_U64
~Inst_DS__DS_MIN_U64()
Definition: instructions.cc:32806
Gcn3ISA::Inst_VOP3__V_CMP_F_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19419
Gcn3ISA::Inst_DS__DS_MIN_F64::~Inst_DS__DS_MIN_F64
~Inst_DS__DS_MIN_F64()
Definition: instructions.cc:33101
Gcn3ISA::Inst_VOP3__V_CMP_T_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21238
Gcn3ISA::Inst_SOP2__S_LSHR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:998
Gcn3ISA::Inst_VOPC__V_CMP_F_I32::Inst_VOPC__V_CMP_F_I32
Inst_VOPC__V_CMP_F_I32(InFmt_VOPC *)
Definition: instructions.cc:13524
Gcn3ISA::Inst_SMEM__S_DCACHE_WB::Inst_SMEM__S_DCACHE_WB
Inst_SMEM__S_DCACHE_WB(InFmt_SMEM *)
Definition: instructions.cc:5329
Gcn3ISA::Inst_VOPC__V_CMPX_LE_I32::~Inst_VOPC__V_CMPX_LE_I32
~Inst_VOPC__V_CMPX_LE_I32()
Definition: instructions.cc:14097
Gcn3ISA::Inst_SOPK__S_CMPK_LG_I32::~Inst_SOPK__S_CMPK_LG_I32
~Inst_SOPK__S_CMPK_LG_I32()
Definition: instructions.cc:1437
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:34777
Gcn3ISA::Inst_DS__DS_WRITE_SRC2_B64::~Inst_DS__DS_WRITE_SRC2_B64
~Inst_DS__DS_WRITE_SRC2_B64()
Definition: instructions.cc:34397
Gcn3ISA::Inst_VOPC__V_CMPX_LE_F16::~Inst_VOPC__V_CMPX_LE_F16
~Inst_VOPC__V_CMPX_LE_F16()
Definition: instructions.cc:10268
Gcn3ISA::Inst_VOP2__V_LSHRREV_B16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7067
Gcn3ISA::Inst_VOP3__V_CMP_GT_F32::Inst_VOP3__V_CMP_GT_F32
Inst_VOP3__V_CMP_GT_F32(InFmt_VOP3 *)
Definition: instructions.cc:16800
Gcn3ISA::InFmt_VOP3_SDST_ENC
Definition: gpu_decoder.hh:1564
Gcn3ISA::Inst_VOP3__V_MSAD_U8::Inst_VOP3__V_MSAD_U8
Inst_VOP3__V_MSAD_U8(InFmt_VOP3 *)
Definition: instructions.cc:29434
Gcn3ISA::Inst_VOP1__V_TRUNC_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9269
Gcn3ISA::Inst_SOP2__S_LSHL_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:906
Gcn3ISA::Inst_DS__DS_MAX_SRC2_I32::~Inst_DS__DS_MAX_SRC2_I32
~Inst_DS__DS_MAX_SRC2_I32()
Definition: instructions.cc:33834
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORD::Inst_SMEM__S_BUFFER_LOAD_DWORD
Inst_SMEM__S_BUFFER_LOAD_DWORD(InFmt_SMEM *)
Definition: instructions.cc:4748
Gcn3ISA::Inst_VOP3__V_CMPX_GE_F64::~Inst_VOP3__V_CMPX_GE_F64
~Inst_VOP3__V_CMPX_GE_F64()
Definition: instructions.cc:18877
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK_SGN::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37835
Gcn3ISA::Inst_VOP3__V_RCP_F32::~Inst_VOP3__V_RCP_F32
~Inst_VOP3__V_RCP_F32()
Definition: instructions.cc:26453
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CD::Inst_MIMG__IMAGE_SAMPLE_CD
Inst_MIMG__IMAGE_SAMPLE_CD(InFmt_MIMG *)
Definition: instructions.cc:39264
Gcn3ISA::Inst_VOP3__V_CMPX_NGE_F32::~Inst_VOP3__V_CMPX_NGE_F32
~Inst_VOP3__V_CMPX_NGE_F32()
Definition: instructions.cc:17506
Gcn3ISA::Inst_VOP3__V_CMPX_GT_F32::~Inst_VOP3__V_CMPX_GT_F32
~Inst_VOP3__V_CMPX_GT_F32()
Definition: instructions.cc:17331
Gcn3ISA::Inst_DS__DS_XOR_B32::Inst_DS__DS_XOR_B32
Inst_DS__DS_XOR_B32(InFmt_DS *)
Definition: instructions.cc:31192
Gcn3ISA::Inst_DS__DS_GWS_SEMA_RELEASE_ALL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34036
Gcn3ISA::Inst_VOP3__V_ALIGNBYTE_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28275
Gcn3ISA::Inst_SOPP__S_SETHALT::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4180
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:25587
Gcn3ISA::Inst_SOP2__S_CBRANCH_G_FORK::~Inst_SOP2__S_CBRANCH_G_FORK
~Inst_SOP2__S_CBRANCH_G_FORK()
Definition: instructions.cc:1297
Gcn3ISA::Inst_VOP3__V_MED3_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:28717
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_SWAP::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:40507
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37706
Gcn3ISA::Inst_VOP3__V_CMPX_NE_U32::~Inst_VOP3__V_CMPX_NE_U32
~Inst_VOP3__V_CMPX_NE_U32()
Definition: instructions.cc:21773
Gcn3ISA::Inst_VOP3__V_CMPX_GE_U32::Inst_VOP3__V_CMPX_GE_U32
Inst_VOP3__V_CMPX_GE_U32(InFmt_VOP3 *)
Definition: instructions.cc:21809
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_D16_X::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:37559
Gcn3ISA::Inst_DS__DS_READ_U16::~Inst_DS__DS_READ_U16
~Inst_DS__DS_READ_U16()
Definition: instructions.cc:32357
Gcn3ISA::Inst_SOPP__S_TRAP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4265
Gcn3ISA::Inst_VOP3__V_MBCNT_HI_U32_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30685
Gcn3ISA::InFmt_VOP2::SRC0
unsigned int SRC0
Definition: gpu_decoder.hh:1540
Gcn3ISA::Inst_VOP3__V_RNDNE_F32::~Inst_VOP3__V_RNDNE_F32
~Inst_VOP3__V_RNDNE_F32()
Definition: instructions.cc:26293
Gcn3ISA::Inst_VOP3__V_CMPX_TRU_F32::~Inst_VOP3__V_CMPX_TRU_F32
~Inst_VOP3__V_CMPX_TRU_F32()
Definition: instructions.cc:17711
Gcn3ISA::Inst_VOP3__V_CMP_TRU_F16::~Inst_VOP3__V_CMP_TRU_F16
~Inst_VOP3__V_CMP_TRU_F16()
Definition: instructions.cc:16329
Gcn3ISA::Inst_VOP1__V_EXP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9171
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE0::Inst_VOP3__V_CVT_F32_UBYTE0
Inst_VOP3__V_CVT_F32_UBYTE0(InFmt_VOP3 *)
Definition: instructions.cc:25775
Gcn3ISA::Inst_VOP1__V_LOG_F32::~Inst_VOP1__V_LOG_F32
~Inst_VOP1__V_LOG_F32()
Definition: instructions.cc:8330
Gcn3ISA::Inst_SOP1__S_WQM_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2093
Gcn3ISA::Inst_VOP2__V_SUB_F16::Inst_VOP2__V_SUB_F16
Inst_VOP2__V_SUB_F16(InFmt_VOP2 *)
Definition: instructions.cc:6782
Gcn3ISA::Inst_SMEM__S_STORE_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5101
Gcn3ISA::Inst_VOP3__V_TRUNC_F64::Inst_VOP3__V_TRUNC_F64
Inst_VOP3__V_TRUNC_F64(InFmt_VOP3 *)
Definition: instructions.cc:26019
Gcn3ISA::Inst_VOP3__V_SAD_HI_U8::Inst_VOP3__V_SAD_HI_U8
Inst_VOP3__V_SAD_HI_U8(InFmt_VOP3 *)
Definition: instructions.cc:28801
Gcn3ISA::Inst_VOP3__V_ADD_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24299
Gcn3ISA::Inst_FLAT__FLAT_STORE_BYTE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39986
Gcn3ISA::Inst_VOP2__V_LSHRREV_B32::Inst_VOP2__V_LSHRREV_B32
Inst_VOP2__V_LSHRREV_B32(InFmt_VOP2 *)
Definition: instructions.cc:6071
Gcn3ISA::Inst_DS__DS_CMPST_RTN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31977
Gcn3ISA::Inst_DS__DS_MIN_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33110
Gcn3ISA::Inst_VOP1__V_FREXP_MANT_F64::~Inst_VOP1__V_FREXP_MANT_F64
~Inst_VOP1__V_FREXP_MANT_F64()
Definition: instructions.cc:8851
Gcn3ISA::Inst_SOPC__S_CMP_GE_U32::~Inst_SOPC__S_CMP_GE_U32
~Inst_SOPC__S_CMP_GE_U32()
Definition: instructions.cc:3458
Gcn3ISA::Inst_DS__DS_MAX_SRC2_U64::~Inst_DS__DS_MAX_SRC2_U64
~Inst_DS__DS_MAX_SRC2_U64()
Definition: instructions.cc:34319
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_B::~Inst_MIMG__IMAGE_SAMPLE_C_B
~Inst_MIMG__IMAGE_SAMPLE_C_B()
Definition: instructions.cc:38536
Gcn3ISA::Inst_VOPC__V_CMP_EQ_I64::Inst_VOPC__V_CMP_EQ_I64
Inst_VOPC__V_CMP_EQ_I64(InFmt_VOPC *)
Definition: instructions.cc:14549
Gcn3ISA::Inst_VOPC__V_CMP_F_U16::~Inst_VOPC__V_CMP_F_U16
~Inst_VOPC__V_CMP_F_U16()
Definition: instructions.cc:12800
Gcn3ISA::Inst_VOP3__V_SUB_U16::~Inst_VOP3__V_SUB_U16
~Inst_VOP3__V_SUB_U16()
Definition: instructions.cc:24714
Gcn3ISA::Inst_VOP3__V_CMP_GT_I32::Inst_VOP3__V_CMP_GT_I32
Inst_VOP3__V_CMP_GT_I32(InFmt_VOP3 *)
Definition: instructions.cc:20796
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_XY::~Inst_MUBUF__BUFFER_LOAD_FORMAT_XY
~Inst_MUBUF__BUFFER_LOAD_FORMAT_XY()
Definition: instructions.cc:34565
Gcn3ISA::Inst_DS__DS_CMPST_RTN_F64::~Inst_DS__DS_CMPST_RTN_F64
~Inst_DS__DS_CMPST_RTN_F64()
Definition: instructions.cc:33451
Gcn3ISA::Inst_DS__DS_OR_SRC2_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34366
Gcn3ISA::Inst_DS__DS_WRITE_B8::Inst_DS__DS_WRITE_B8
Inst_DS__DS_WRITE_B8(InFmt_DS *)
Definition: instructions.cc:31534
Gcn3ISA::Inst_VOPC__V_CMP_LE_U32::Inst_VOPC__V_CMP_LE_U32
Inst_VOPC__V_CMP_LE_U32(InFmt_VOPC *)
Definition: instructions.cc:13850
Gcn3ISA::Inst_VOP3__V_CMPX_GE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16486
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:40876
Gcn3ISA::Inst_VOP3__V_ADD_F16::~Inst_VOP3__V_ADD_F16
~Inst_VOP3__V_ADD_F16()
Definition: instructions.cc:24583
Gcn3ISA::Inst_VOPC__V_CMPX_T_I32::~Inst_VOPC__V_CMPX_T_I32
~Inst_VOPC__V_CMPX_T_I32()
Definition: instructions.cc:14225
Gcn3ISA::Inst_SOP1__S_FLBIT_I32_I64::~Inst_SOP1__S_FLBIT_I32_I64
~Inst_SOP1__S_FLBIT_I32_I64()
Definition: instructions.cc:2457
Gcn3ISA::Inst_VOP3__V_SAD_U32::Inst_VOP3__V_SAD_U32
Inst_VOP3__V_SAD_U32(InFmt_VOP3 *)
Definition: instructions.cc:28897
Gcn3ISA::Inst_VOP3__V_CVT_PKNORM_U16_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30936
Gcn3ISA::Inst_SOPK__S_CMPK_GT_U32::~Inst_SOPK__S_CMPK_GT_U32
~Inst_SOPK__S_CMPK_GT_U32()
Definition: instructions.cc:1612
Gcn3ISA::Inst_VOP3__V_CMP_LT_F16::Inst_VOP3__V_CMP_LT_F16
Inst_VOP3__V_CMP_LT_F16(InFmt_VOP3 *)
Definition: instructions.cc:16057
Gcn3ISA::Inst_VOPC__V_CMP_NLT_F16::~Inst_VOPC__V_CMP_NLT_F16
~Inst_VOPC__V_CMP_NLT_F16()
Definition: instructions.cc:10178
Gcn3ISA::Inst_VOP3__V_LOG_LEGACY_F32::~Inst_VOP3__V_LOG_LEGACY_F32
~Inst_VOP3__V_LOG_LEGACY_F32()
Definition: instructions.cc:27610
Gcn3ISA::Inst_VOP3__V_MAX_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:23947
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX2::Inst_FLAT__FLAT_STORE_DWORDX2
Inst_FLAT__FLAT_STORE_DWORDX2(InFmt_FLAT *)
Definition: instructions.cc:40184
Gcn3ISA::Inst_VOPC__V_CMP_GT_I64::~Inst_VOPC__V_CMP_GT_I64
~Inst_VOPC__V_CMP_GT_I64()
Definition: instructions.cc:14617
Gcn3ISA::Inst_VOP3__V_CMP_CLASS_F32::~Inst_VOP3__V_CMP_CLASS_F32
~Inst_VOP3__V_CMP_CLASS_F32()
Definition: instructions.cc:15524
Gcn3ISA::Inst_VOP2__V_MUL_U32_U24::~Inst_VOP2__V_MUL_U32_U24
~Inst_VOP2__V_MUL_U32_U24()
Definition: instructions.cc:5781
Gcn3ISA::Inst_DS__DS_MAX_I32::~Inst_DS__DS_MAX_I32
~Inst_DS__DS_MAX_I32()
Definition: instructions.cc:31107
Gcn3ISA::Inst_VOP3__V_COS_F16::Inst_VOP3__V_COS_F16
Inst_VOP3__V_COS_F16(InFmt_VOP3 *)
Definition: instructions.cc:27539
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_L::~Inst_MIMG__IMAGE_SAMPLE_L
~Inst_MIMG__IMAGE_SAMPLE_L()
Definition: instructions.cc:38389
Gcn3ISA::Inst_VOP1__V_CVT_I16_F16::~Inst_VOP1__V_CVT_I16_F16
~Inst_VOP1__V_CVT_I16_F16()
Definition: instructions.cc:9060
Gcn3ISA::InFmt_SOPK::SIMM16
unsigned int SIMM16
Definition: gpu_decoder.hh:1511
Gcn3ISA::Inst_FLAT__FLAT_LOAD_UBYTE::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39427
Gcn3ISA::Inst_DS__DS_CMPST_B64::Inst_DS__DS_CMPST_B64
Inst_DS__DS_CMPST_B64(InFmt_DS *)
Definition: instructions.cc:33053
Gcn3ISA::Inst_SOPC__S_CMP_LT_I32::~Inst_SOPC__S_CMP_LT_I32
~Inst_SOPC__S_CMP_LT_I32()
Definition: instructions.cc:3328
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMAX::~Inst_FLAT__FLAT_ATOMIC_UMAX
~Inst_FLAT__FLAT_ATOMIC_UMAX()
Definition: instructions.cc:40918
Gcn3ISA::Inst_SOP1__S_SETPC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2661
Gcn3ISA::Inst_SOPC__S_SETVSKIP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3649
Gcn3ISA::Inst_VOP3__V_CMP_LE_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19530
Gcn3ISA::Inst_VOPC__V_CMPX_U_F16::Inst_VOPC__V_CMPX_U_F16
Inst_VOPC__V_CMPX_U_F16(InFmt_VOPC *)
Definition: instructions.cc:10352
Gcn3ISA::Inst_SOPK__S_ADDK_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:1719
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:23580
Gcn3ISA::Inst_VOP3__V_BFE_I32::Inst_VOP3__V_BFE_I32
Inst_VOP3__V_BFE_I32(InFmt_VOP3 *)
Definition: instructions.cc:27954
Gcn3ISA::Inst_SOPC__S_CMP_LG_U32::~Inst_SOPC__S_CMP_LG_U32
~Inst_SOPC__S_CMP_LG_U32()
Definition: instructions.cc:3406
Gcn3ISA::Inst_VOPC__V_CMPX_LT_I32::Inst_VOPC__V_CMPX_LT_I32
Inst_VOPC__V_CMPX_LT_I32(InFmt_VOPC *)
Definition: instructions.cc:14027
Gcn3ISA::Inst_VOP3__V_CMP_GE_U32::Inst_VOP3__V_CMP_GE_U32
Inst_VOP3__V_CMP_GE_U32(InFmt_VOP3 *)
Definition: instructions.cc:21184
Gcn3ISA::Inst_DS__DS_AND_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33312
Gcn3ISA::Inst_VOP1__V_CVT_F64_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8005
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:4423
Gcn3ISA::Inst_DS__DS_MAX_RTN_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32017
Gcn3ISA::Inst_VOPC__V_CMP_NLE_F32::~Inst_VOPC__V_CMP_NLE_F32
~Inst_VOPC__V_CMP_NLE_F32()
Definition: instructions.cc:10887
Gcn3ISA::Inst_VOP3__V_MAC_F16::Inst_VOP3__V_MAC_F16
Inst_VOP3__V_MAC_F16(InFmt_VOP3 *)
Definition: instructions.cc:24648
Gcn3ISA::Inst_SOP1__S_GETPC_B64::~Inst_SOP1__S_GETPC_B64
~Inst_SOP1__S_GETPC_B64()
Definition: instructions.cc:2630
Gcn3ISA::Inst_DS__DS_AND_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32850
Gcn3ISA::Inst_VOP3__V_CMPX_GT_U32::Inst_VOP3__V_CMPX_GT_U32
Inst_VOP3__V_CMPX_GT_U32(InFmt_VOP3 *)
Definition: instructions.cc:21723
Gcn3ISA::Inst_VOPC__V_CMP_T_U64::~Inst_VOPC__V_CMP_T_U64
~Inst_VOPC__V_CMP_T_U64()
Definition: instructions.cc:14948
Gcn3ISA::Inst_SOPK__S_CMPK_LT_I32::Inst_SOPK__S_CMPK_LT_I32
Inst_SOPK__S_CMPK_LT_I32(InFmt_SOPK *)
Definition: instructions.cc:1506
Gcn3ISA::Inst_VOP3__V_CMPX_LE_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17303
Gcn3ISA::Inst_VOPC__V_CMP_F_F16::Inst_VOPC__V_CMP_F_F16
Inst_VOPC__V_CMP_F_F16(InFmt_VOPC *)
Definition: instructions.cc:9919
Gcn3ISA::Inst_SOPP__S_CBRANCH_SCC0::Inst_SOPP__S_CBRANCH_SCC0
Inst_SOPP__S_CBRANCH_SCC0(InFmt_SOPP *)
Definition: instructions.cc:3926
Gcn3ISA::Inst_VOP3__V_CMP_LT_U64::~Inst_VOP3__V_CMP_LT_U64
~Inst_VOP3__V_CMP_LT_U64()
Definition: instructions.cc:22217
Gcn3ISA::Inst_VOPC__V_CMPX_NE_U32::Inst_VOPC__V_CMPX_NE_U32
Inst_VOPC__V_CMPX_NE_U32(InFmt_VOPC *)
Definition: instructions.cc:14401
Gcn3ISA::Inst_DS__DS_READ_B128::~Inst_DS__DS_READ_B128
~Inst_DS__DS_READ_B128()
Definition: instructions.cc:34515
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_D16_XYZW::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37514
Gcn3ISA::Inst_VOP1__V_SQRT_F64::Inst_VOP1__V_SQRT_F64
Inst_VOP1__V_SQRT_F64(InFmt_VOP1 *)
Definition: instructions.cc:8556
Gcn3ISA::Inst_VOP3__V_RCP_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:27303
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36230
Gcn3ISA::Inst_VOP1__V_RSQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8426
Gcn3ISA::Inst_SOP2__S_MAX_I32::~Inst_SOP2__S_MAX_I32
~Inst_SOP2__S_MAX_I32()
Definition: instructions.cc:303
Gcn3ISA::Inst_VOP3__V_ADD_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24589
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XY::~Inst_MTBUF__TBUFFER_STORE_FORMAT_XY
~Inst_MTBUF__TBUFFER_STORE_FORMAT_XY()
Definition: instructions.cc:37312
Gcn3ISA::Inst_VOP3__V_BFE_U32::~Inst_VOP3__V_BFE_U32
~Inst_VOP3__V_BFE_U32()
Definition: instructions.cc:27915
Gcn3ISA::Inst_VOPC__V_CMPX_GT_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:15349
Gcn3ISA::Inst_DS__DS_RSUB_SRC2_U32::~Inst_DS__DS_RSUB_SRC2_U32
~Inst_DS__DS_RSUB_SRC2_U32()
Definition: instructions.cc:33757
Gcn3ISA::Inst_VOPC__V_CMP_NE_I16::Inst_VOPC__V_CMP_NE_I16
Inst_VOPC__V_CMP_NE_I16(InFmt_VOPC *)
Definition: instructions.cc:12706
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_OR_X2::~Inst_MUBUF__BUFFER_ATOMIC_OR_X2
~Inst_MUBUF__BUFFER_ATOMIC_OR_X2()
Definition: instructions.cc:37057
Gcn3ISA::Inst_VOPC__V_CMP_F_U64::Inst_VOPC__V_CMP_F_U64
Inst_VOPC__V_CMP_F_U64(InFmt_VOPC *)
Definition: instructions.cc:14730
Gcn3ISA::Inst_DS__DS_INC_RTN_U64::Inst_DS__DS_INC_RTN_U64
Inst_DS__DS_INC_RTN_U64(InFmt_DS *)
Definition: instructions.cc:33190
Gcn3ISA::Inst_DS__DS_MAX_I64::~Inst_DS__DS_MAX_I64
~Inst_DS__DS_MAX_I64()
Definition: instructions.cc:32788
Gcn3ISA::Inst_DS__DS_ADD_SRC2_U64::~Inst_DS__DS_ADD_SRC2_U64
~Inst_DS__DS_ADD_SRC2_U64()
Definition: instructions.cc:34166
Gcn3ISA::Inst_VOPC__V_CMPX_O_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10347
Gcn3ISA::Inst_VOP3__V_CMPX_NEQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:17649
Gcn3ISA::Inst_SOP1__S_WQM_B32::~Inst_SOP1__S_WQM_B32
~Inst_SOP1__S_WQM_B32()
Definition: instructions.cc:2058
Gcn3ISA::Inst_VOP1__V_RSQ_F16::Inst_VOP1__V_RSQ_F16
Inst_VOP1__V_RSQ_F16(InFmt_VOP1 *)
Definition: instructions.cc:9113
Gcn3ISA::Inst_DS__DS_READ2ST64_B64::~Inst_DS__DS_READ2ST64_B64
~Inst_DS__DS_READ2ST64_B64()
Definition: instructions.cc:33639
Gcn3ISA::Inst_VOPC__V_CMPX_F_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13290
Gcn3ISA::Inst_VOP1__V_CLREXCP::~Inst_VOP1__V_CLREXCP
~Inst_VOP1__V_CLREXCP()
Definition: instructions.cc:8989
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE0::~Inst_VOP1__V_CVT_F32_UBYTE0
~Inst_VOP1__V_CVT_F32_UBYTE0()
Definition: instructions.cc:7833
Gcn3ISA::Inst_SOPP__S_NOP::~Inst_SOPP__S_NOP
~Inst_SOPP__S_NOP()
Definition: instructions.cc:3736
Gcn3ISA::Inst_VOP3__V_CMPX_GE_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:18883
Gcn3ISA::Inst_SOP1__S_CBRANCH_JOIN::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3147
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_ADD_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36876
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:34940
Gcn3ISA::Inst_VOP3__V_CMP_GE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20893
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:29161
Gcn3ISA::Inst_VOP3__V_MIN_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:24993
Gcn3ISA::Inst_FLAT__FLAT_LOAD_USHORT::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:39612
Gcn3ISA::Inst_DS__DS_ADD_U32::~Inst_DS__DS_ADD_U32
~Inst_DS__DS_ADD_U32()
Definition: instructions.cc:30998
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_FORMAT_D16_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34826
Gcn3ISA::Inst_SOPP__S_TTRACEDATA::~Inst_SOPP__S_TTRACEDATA
~Inst_SOPP__S_TTRACEDATA()
Definition: instructions.cc:4321
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_INC_X2::~Inst_MUBUF__BUFFER_ATOMIC_INC_X2
~Inst_MUBUF__BUFFER_ATOMIC_INC_X2()
Definition: instructions.cc:37111
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORD::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:5249
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_O::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39056
Gcn3ISA::Inst_VOP3__V_CMP_NE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20851
Gcn3ISA::Inst_SOPC__S_CMP_LT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3334
Gcn3ISA::Inst_VOPC__V_CMP_LE_U32::~Inst_VOPC__V_CMP_LE_U32
~Inst_VOPC__V_CMP_LE_U32()
Definition: instructions.cc:13856
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_DEC::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:41178
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34985
Gcn3ISA::Inst_SMEM__S_BUFFER_STORE_DWORDX4::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5298
Gcn3ISA::Inst_VOP3__V_FLOOR_F32::~Inst_VOP3__V_FLOOR_F32
~Inst_VOP3__V_FLOOR_F32()
Definition: instructions.cc:26331
Gcn3ISA::Inst_DS__DS_READ_B64::~Inst_DS__DS_READ_B64
~Inst_DS__DS_READ_B64()
Definition: instructions.cc:33513
Gcn3ISA::Inst_VOP1__V_CVT_FLR_I32_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:7731
Gcn3ISA::Inst_DS__DS_GWS_BARRIER::~Inst_DS__DS_GWS_BARRIER
~Inst_DS__DS_GWS_BARRIER()
Definition: instructions.cc:34106
Gcn3ISA::Inst_VOP2__V_MUL_LO_U16::Inst_VOP2__V_MUL_LO_U16
Inst_VOP2__V_MUL_LO_U16(InFmt_VOP2 *)
Definition: instructions.cc:6992
Gcn3ISA::Inst_DS__DS_MAX_RTN_I32::~Inst_DS__DS_MAX_RTN_I32
~Inst_DS__DS_MAX_RTN_I32()
Definition: instructions.cc:31767
Gcn3ISA::Inst_VOP3__V_CMP_LE_F16::~Inst_VOP3__V_CMP_LE_F16
~Inst_VOP3__V_CMP_LE_F16()
Definition: instructions.cc:16103
Gcn3ISA::Inst_VOP3__V_MAD_F32::Inst_VOP3__V_MAD_F32
Inst_VOP3__V_MAD_F32(InFmt_VOP3 *)
Definition: instructions.cc:27692
Gcn3ISA::Inst_DS__DS_SUB_RTN_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33166
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_XYZ::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:37349
Gcn3ISA::Inst_VOP3__V_CVT_F32_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25394
Gcn3ISA::Inst_VOPC__V_CMPX_NEQ_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10456
Gcn3ISA::Inst_VOPC__V_CMP_GT_F16::Inst_VOPC__V_CMP_GT_F16
Inst_VOPC__V_CMP_GT_F16(InFmt_VOPC *)
Definition: instructions.cc:9991
Gcn3ISA::Inst_VOP2__V_MUL_HI_I32_I24::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:5751
Gcn3ISA::Inst_SOP2__S_SUB_U32::Inst_SOP2__S_SUB_U32
Inst_SOP2__S_SUB_U32(InFmt_SOP2 *)
Definition: instructions.cc:78
Gcn3ISA::Inst_VOP1__V_RCP_F64::~Inst_VOP1__V_RCP_F64
~Inst_VOP1__V_RCP_F64()
Definition: instructions.cc:8450
ComputeUnit::shader
Shader * shader
Definition: compute_unit.hh:352
Gcn3ISA::Inst_VOP3__V_CMP_GT_U64::Inst_VOP3__V_CMP_GT_U64
Inst_VOP3__V_CMP_GT_U64(InFmt_VOP3 *)
Definition: instructions.cc:22336
WFBarrier::InvalidID
static const int InvalidID
Definition: compute_unit.hh:96
Gcn3ISA::InFmt_VOP_SDWA::SRC0_NEG
unsigned int SRC0_NEG
Definition: gpu_decoder.hh:1600
Gcn3ISA::Inst_SOP2__S_SUBB_U32::Inst_SOP2__S_SUBB_U32
Inst_SOP2__S_SUBB_U32(InFmt_SOP2 *)
Definition: instructions.cc:206
Gcn3ISA::Inst_MTBUF
Definition: op_encodings.hh:720
Gcn3ISA::InFmt_SOP1::SDST
unsigned int SDST
Definition: gpu_decoder.hh:1491
ULL
#define ULL(N)
uint64_t constant
Definition: types.hh:46
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_LZ_O::Inst_MIMG__IMAGE_SAMPLE_LZ_O
Inst_MIMG__IMAGE_SAMPLE_LZ_O(InFmt_MIMG *)
Definition: instructions.cc:38695
Gcn3ISA::Inst_VOPC__V_CMP_TRU_F32::~Inst_VOPC__V_CMP_TRU_F32
~Inst_VOPC__V_CMP_TRU_F32()
Definition: instructions.cc:10983
Gcn3ISA::Inst_SMEM__S_DCACHE_WB_VOL::Inst_SMEM__S_DCACHE_WB_VOL
Inst_SMEM__S_DCACHE_WB_VOL(InFmt_SMEM *)
Definition: instructions.cc:5361
Gcn3ISA::Inst_VOPC__V_CMPX_TRU_F16::Inst_VOPC__V_CMPX_TRU_F16
Inst_VOPC__V_CMPX_TRU_F16(InFmt_VOPC *)
Definition: instructions.cc:10479
Gcn3ISA::Inst_VOP2__V_MADAK_F32::Inst_VOP2__V_MADAK_F32
Inst_VOP2__V_MADAK_F32(InFmt_VOP2 *)
Definition: instructions.cc:6440
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SUB_X2::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36903
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_SUB::Inst_MUBUF__BUFFER_ATOMIC_SUB
Inst_MUBUF__BUFFER_ATOMIC_SUB(InFmt_MUBUF *)
Definition: instructions.cc:36528
Gcn3ISA::Inst_VOPC__V_CMP_NLG_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:11857
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_UMAX_X2::~Inst_FLAT__FLAT_ATOMIC_UMAX_X2
~Inst_FLAT__FLAT_ATOMIC_UMAX_X2()
Definition: instructions.cc:41628
Gcn3ISA::Inst_MUBUF__BUFFER_LOAD_USHORT::Inst_MUBUF__BUFFER_LOAD_USHORT
Inst_MUBUF__BUFFER_LOAD_USHORT(InFmt_MUBUF *)
Definition: instructions.cc:35161
Gcn3ISA::Inst_VOPC__V_CMPX_NLE_F32::~Inst_VOPC__V_CMPX_NLE_F32
~Inst_VOPC__V_CMPX_NLE_F32()
Definition: instructions.cc:11407
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_B_CL::~Inst_MIMG__IMAGE_SAMPLE_B_CL
~Inst_MIMG__IMAGE_SAMPLE_B_CL()
Definition: instructions.cc:38422
Gcn3ISA::Inst_VOPC__V_CMPX_LT_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10238
Gcn3ISA::Inst_VOP3__V_CMP_NLE_F16::Inst_VOP3__V_CMP_NLE_F16
Inst_VOP3__V_CMP_NLE_F16(InFmt_VOP3 *)
Definition: instructions.cc:16264
Gcn3ISA::Inst_SOP2__S_OR_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:516
Gcn3ISA::Inst_VOPC__V_CMPX_GE_F16::Inst_VOPC__V_CMPX_GE_F16
Inst_VOPC__V_CMPX_GE_F16(InFmt_VOPC *)
Definition: instructions.cc:10315
Gcn3ISA::Inst_VOP1__V_MOV_B32::Inst_VOP1__V_MOV_B32
Inst_VOP1__V_MOV_B32(InFmt_VOP1 *)
Definition: instructions.cc:7313
Gcn3ISA::Inst_DS__DS_XOR_RTN_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33348
Gcn3ISA::Inst_VOP3__V_LDEXP_F32::~Inst_VOP3__V_LDEXP_F32
~Inst_VOP3__V_LDEXP_F32()
Definition: instructions.cc:30468
Gcn3ISA::Inst_DS__DS_RSUB_SRC2_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33766
Gcn3ISA::Inst_VOP3__V_MAD_F16::Inst_VOP3__V_MAD_F16
Inst_VOP3__V_MAD_F16(InFmt_VOP3 *)
Definition: instructions.cc:29599
Gcn3ISA::Inst_VOP3__V_CMP_LT_F64::~Inst_VOP3__V_CMP_LT_F64
~Inst_VOP3__V_CMP_LT_F64()
Definition: instructions.cc:17767
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX4::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:4918
Gcn3ISA::Inst_VOP3__V_MED3_F32::~Inst_VOP3__V_MED3_F32
~Inst_VOP3__V_MED3_F32()
Definition: instructions.cc:28611
Gcn3ISA::Inst_VOP3__V_CMP_NLG_F16::~Inst_VOP3__V_CMP_NLG_F16
~Inst_VOP3__V_CMP_NLG_F16()
Definition: instructions.cc:16234
Gcn3ISA::Inst_DS__DS_WRITE_B16::~Inst_DS__DS_WRITE_B16
~Inst_DS__DS_WRITE_B16()
Definition: instructions.cc:31601
Gcn3ISA::Inst_DS__DS_MIN_SRC2_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34427
Gcn3ISA::Inst_MIMG::instData
InFmt_MIMG instData
Definition: op_encodings.hh:748
Gcn3ISA::Inst_VOP3__V_CVT_PKNORM_I16_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:30917
Gcn3ISA::Inst_VOPC__V_CMP_NEQ_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10925
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:37565
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D_CL::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38378
Gcn3ISA::Inst_DS__DS_MAX_SRC2_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33843
Gcn3ISA::Inst_VOP3__V_CMP_F_I32::Inst_VOP3__V_CMP_F_I32
Inst_VOP3__V_CMP_F_I32(InFmt_VOP3 *)
Definition: instructions.cc:20643
Gcn3ISA::Inst_SOPP__S_CBRANCH_SCC1::~Inst_SOPP__S_CBRANCH_SCC1
~Inst_SOPP__S_CBRANCH_SCC1()
Definition: instructions.cc:3961
Gcn3ISA::Inst_VOP1__V_CVT_U32_F32::~Inst_VOP1__V_CVT_U32_F32
~Inst_VOP1__V_CVT_U32_F32()
Definition: instructions.cc:7549
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_U32::~Inst_VOP3__V_CMPX_EQ_U32
~Inst_VOP3__V_CMPX_EQ_U32()
Definition: instructions.cc:21644
Gcn3ISA::Inst_SOP1__S_BITSET1_B64::~Inst_SOP1__S_BITSET1_B64
~Inst_SOP1__S_BITSET1_B64()
Definition: instructions.cc:2606
Gcn3ISA::Inst_VOPC__V_CMPX_NE_I16::Inst_VOPC__V_CMPX_NE_I16
Inst_VOPC__V_CMPX_NE_I16(InFmt_VOPC *)
Definition: instructions.cc:13187
Gcn3ISA::Inst_VOPC__V_CMPX_NEQ_F32::Inst_VOPC__V_CMPX_NEQ_F32
Inst_VOPC__V_CMPX_NEQ_F32(InFmt_VOPC *)
Definition: instructions.cc:11433
Gcn3ISA::Inst_DS__DS_PERMUTE_B32::Inst_DS__DS_PERMUTE_B32
Inst_DS__DS_PERMUTE_B32(InFmt_DS *)
Definition: instructions.cc:32528
Gcn3ISA::Inst_DS__DS_READ2ST64_B32::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:32222
Gcn3ISA::Inst_VOP3__V_ALIGNBYTE_B32::~Inst_VOP3__V_ALIGNBYTE_B32
~Inst_VOP3__V_ALIGNBYTE_B32()
Definition: instructions.cc:28269
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:34874
Gcn3ISA::Inst_VOP3__V_MED3_U32::~Inst_VOP3__V_MED3_U32
~Inst_VOP3__V_MED3_U32()
Definition: instructions.cc:28711
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:21023
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_ADD::~Inst_MUBUF__BUFFER_ATOMIC_ADD
~Inst_MUBUF__BUFFER_ATOMIC_ADD()
Definition: instructions.cc:36514
Gcn3ISA::Inst_VOP3::instData
InFmt_VOP3 instData
Definition: op_encodings.hh:368
Gcn3ISA::Inst_VOPC__V_CMP_EQ_U64::~Inst_VOPC__V_CMP_EQ_U64
~Inst_VOPC__V_CMP_EQ_U64()
Definition: instructions.cc:14793
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:414
Gcn3ISA::Inst_DS__DS_MAX_F64::Inst_DS__DS_MAX_F64
Inst_DS__DS_MAX_F64(InFmt_DS *)
Definition: instructions.cc:33115
Gcn3ISA::Inst_DS__DS_CMPST_B32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31433
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:7748
Gcn3ISA::Inst_DS__DS_MIN_RTN_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:31757
Gcn3ISA::Inst_VOP3__V_CMPX_LT_I64::~Inst_VOP3__V_CMPX_LT_I64
~Inst_VOP3__V_CMPX_LT_I64()
Definition: instructions.cc:22523
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XYZ::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37233
Gcn3ISA::Inst_VOPC__V_CMPX_TRU_F32::~Inst_VOPC__V_CMPX_TRU_F32
~Inst_VOPC__V_CMPX_TRU_F32()
Definition: instructions.cc:11505
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:34667
Gcn3ISA::Inst_DS__DS_WRITE2_B32::Inst_DS__DS_WRITE2_B32
Inst_DS__DS_WRITE2_B32(InFmt_DS *)
Definition: instructions.cc:31288
Gcn3ISA::Inst_VOPC__V_CMP_LE_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:9986
Gcn3ISA::Inst_FLAT__FLAT_STORE_DWORDX3::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:40306
Gcn3ISA::Inst_VOP3__V_CMP_NGT_F16::~Inst_VOP3__V_CMP_NGT_F16
~Inst_VOP3__V_CMP_NGT_F16()
Definition: instructions.cc:16253
Gcn3ISA::Inst_SOPC__S_CMP_LE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3360
Gcn3ISA::Inst_VOP3__V_CMP_CLASS_F64::Inst_VOP3__V_CMP_CLASS_F64
Inst_VOP3__V_CMP_CLASS_F64(InFmt_VOP3 *)
Definition: instructions.cc:15746
Gcn3ISA::Inst_VOP1__V_RCP_F32::~Inst_VOP1__V_RCP_F32
~Inst_VOP1__V_RCP_F32()
Definition: instructions.cc:8360
Gcn3ISA::Inst_VOP3__V_MAC_F32::Inst_VOP3__V_MAC_F32
Inst_VOP3__V_MAC_F32(InFmt_VOP3 *)
Definition: instructions.cc:24227
Gcn3ISA::Inst_SOPK__S_SETREG_B32::~Inst_SOPK__S_SETREG_B32
~Inst_SOPK__S_SETREG_B32()
Definition: instructions.cc:1804
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:38745
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_INC::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:41026
Gcn3ISA::Inst_VOP3__V_CMPX_NLG_F64::Inst_VOP3__V_CMPX_NLG_F64
Inst_VOP3__V_CMPX_NLG_F64(InFmt_VOP3 *)
Definition: instructions.cc:19097
Gcn3ISA::Inst_SOPP__S_SETKILL::~Inst_SOPP__S_SETKILL
~Inst_SOPP__S_SETKILL()
Definition: instructions.cc:4132
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_INC::~Inst_MIMG__IMAGE_ATOMIC_INC
~Inst_MIMG__IMAGE_ATOMIC_INC()
Definition: instructions.cc:38279
Gcn3ISA::Inst_DS__DS_XOR_SRC2_B64::~Inst_DS__DS_XOR_SRC2_B64
~Inst_DS__DS_XOR_SRC2_B64()
Definition: instructions.cc:34376
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_XOR::Inst_FLAT__FLAT_ATOMIC_XOR
Inst_FLAT__FLAT_ATOMIC_XOR(InFmt_FLAT *)
Definition: instructions.cc:40981
Gcn3ISA::Inst_SOP1__S_FLBIT_I32_B32::~Inst_SOP1__S_FLBIT_I32_B32
~Inst_SOP1__S_FLBIT_I32_B32()
Definition: instructions.cc:2378
Gcn3ISA::Inst_DS__DS_ADD_SRC2_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:34020
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE1::~Inst_VOP3__V_CVT_F32_UBYTE1
~Inst_VOP3__V_CVT_F32_UBYTE1()
Definition: instructions.cc:25820
Gcn3ISA::Inst_VOP3__V_CMPX_O_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16506
Gcn3ISA::Inst_SOPK__S_MULK_I32::Inst_SOPK__S_MULK_I32
Inst_SOPK__S_MULK_I32(InFmt_SOPK *)
Definition: instructions.cc:1736
Wavefront::outstandingReqsWrGm
int outstandingReqsWrGm
Definition: wavefront.hh:171
Gcn3ISA::Inst_DS__DS_SUB_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:32704
Gcn3ISA::Inst_VOP3__V_CMP_EQ_F64::Inst_VOP3__V_CMP_EQ_F64
Inst_VOP3__V_CMP_EQ_F64(InFmt_VOP3 *)
Definition: instructions.cc:17814
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_ADD_X2::Inst_MUBUF__BUFFER_ATOMIC_ADD_X2
Inst_MUBUF__BUFFER_ATOMIC_ADD_X2(InFmt_MUBUF *)
Definition: instructions.cc:36855
Gcn3ISA::Inst_VOP3__V_CMPX_NE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21779
Gcn3ISA::Inst_SOPC__S_CMP_LE_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3516
Gcn3ISA::Inst_SOP1__S_MOVRELS_B64::Inst_SOP1__S_MOVRELS_B64
Inst_SOP1__S_MOVRELS_B64(InFmt_SOP1 *)
Definition: instructions.cc:3055
Gcn3ISA::Inst_VOPC__V_CMP_GT_I16::Inst_VOPC__V_CMP_GT_I16
Inst_VOPC__V_CMP_GT_I16(InFmt_VOPC *)
Definition: instructions.cc:12675
Gcn3ISA::Inst_MIMG__IMAGE_GATHER4_C::~Inst_MIMG__IMAGE_GATHER4_C
~Inst_MIMG__IMAGE_GATHER4_C()
Definition: instructions.cc:38950
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX16::~Inst_SMEM__S_BUFFER_LOAD_DWORDX16
~Inst_SMEM__S_BUFFER_LOAD_DWORDX16()
Definition: instructions.cc:4992
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_UMIN::~Inst_MIMG__IMAGE_ATOMIC_UMIN
~Inst_MIMG__IMAGE_ATOMIC_UMIN()
Definition: instructions.cc:38121
Gcn3ISA::Inst_VOP3__V_CVT_F64_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25742
Gcn3ISA::Inst_VOPC__V_CMPX_NLT_F32::Inst_VOPC__V_CMPX_NLT_F32
Inst_VOPC__V_CMPX_NLT_F32(InFmt_VOPC *)
Definition: instructions.cc:11465
Wavefront::wfDynId
uint64_t wfDynId
Definition: wavefront.hh:224
Gcn3ISA::Inst_MIMG
Definition: op_encodings.hh:738
Gcn3ISA::Inst_VOPC__V_CMP_GE_I16::~Inst_VOPC__V_CMP_GE_I16
~Inst_VOPC__V_CMP_GE_I16()
Definition: instructions.cc:12743
Gcn3ISA::Inst_VOPC__V_CMPX_CLASS_F32::~Inst_VOPC__V_CMPX_CLASS_F32
~Inst_VOPC__V_CMPX_CLASS_F32()
Definition: instructions.cc:9525
Gcn3ISA::Inst_SOP2__S_CSELECT_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:397
Gcn3ISA::VecOperand::write
void write() override
write to the vrf.
Definition: operand.hh:197
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_F32::~Inst_VOPC__V_CMPX_EQ_F32
~Inst_VOPC__V_CMPX_EQ_F32()
Definition: instructions.cc:11071
Gcn3ISA::Inst_VOP3__V_CMP_F_U32::Inst_VOP3__V_CMP_F_U32
Inst_VOP3__V_CMP_F_U32(InFmt_VOP3 *)
Definition: instructions.cc:20948
Gcn3ISA::Inst_VOPC__V_CMP_NLG_F64::~Inst_VOPC__V_CMP_NLG_F64
~Inst_VOPC__V_CMP_NLG_F64()
Definition: instructions.cc:11851
Gcn3ISA::Inst_SMEM__S_BUFFER_LOAD_DWORDX4::Inst_SMEM__S_BUFFER_LOAD_DWORDX4
Inst_SMEM__S_BUFFER_LOAD_DWORDX4(InFmt_SMEM *)
Definition: instructions.cc:4866
Gcn3ISA::Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY::~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY
~Inst_MTBUF__TBUFFER_LOAD_FORMAT_XY()
Definition: instructions.cc:37191
Gcn3ISA::Inst_MTBUF__TBUFFER_STORE_FORMAT_X::initiateAcc
void initiateAcc(GPUDynInstPtr) override
Definition: instructions.cc:37294
Gcn3ISA::Inst_VOPC__V_CMP_LG_F16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:10022
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP_PCK::Inst_MIMG__IMAGE_LOAD_MIP_PCK
Inst_MIMG__IMAGE_LOAD_MIP_PCK(InFmt_MIMG *)
Definition: instructions.cc:37779
Gcn3ISA::Inst_VOP2__V_ASHRREV_I16::Inst_VOP2__V_ASHRREV_I16
Inst_VOP2__V_ASHRREV_I16(InFmt_VOP2 *)
Definition: instructions.cc:7086
Gcn3ISA::Inst_MIMG__IMAGE_LOAD_MIP::Inst_MIMG__IMAGE_LOAD_MIP
Inst_MIMG__IMAGE_LOAD_MIP(InFmt_MIMG *)
Definition: instructions.cc:37693
Gcn3ISA::Inst_VOP3__V_CMPX_GE_F16::~Inst_VOP3__V_CMPX_GE_F16
~Inst_VOP3__V_CMPX_GE_F16()
Definition: instructions.cc:16480
Gcn3ISA::Inst_MUBUF
Definition: op_encodings.hh:510
Gcn3ISA::Inst_SOP1__S_SEXT_I32_I8::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2490
Gcn3ISA::Inst_VOP1__V_CVT_F32_I32::~Inst_VOP1__V_CVT_F32_I32
~Inst_VOP1__V_CVT_F32_I32()
Definition: instructions.cc:7489
Gcn3ISA::Inst_DS__DS_SWIZZLE_B32::Inst_DS__DS_SWIZZLE_B32
Inst_DS__DS_SWIZZLE_B32(InFmt_DS *)
Definition: instructions.cc:32411
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:37809
Gcn3ISA::Inst_VOP3__V_CMP_GT_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19572
Gcn3ISA::Inst_SOP2__S_XOR_B64::~Inst_SOP2__S_XOR_B64
~Inst_SOP2__S_XOR_B64()
Definition: instructions.cc:569
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_AND::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38209
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_F16::~Inst_VOPC__V_CMPX_EQ_F16
~Inst_VOPC__V_CMPX_EQ_F16()
Definition: instructions.cc:10250
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_CL::~Inst_MIMG__IMAGE_SAMPLE_CL
~Inst_MIMG__IMAGE_SAMPLE_CL()
Definition: instructions.cc:38340
Gcn3ISA::Inst_VOP3__V_MUL_F32::~Inst_VOP3__V_MUL_F32
~Inst_VOP3__V_MUL_F32()
Definition: instructions.cc:23440
Gcn3ISA::Inst_DS__DS_MAX_F64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:33130
Gcn3ISA::Inst_VOP3__V_CMP_LT_I32::Inst_VOP3__V_CMP_LT_I32
Inst_VOP3__V_CMP_LT_I32(InFmt_VOP3 *)
Definition: instructions.cc:20670
Gcn3ISA::InFmt_FLAT_1::VDST
unsigned int VDST
Definition: gpu_decoder.hh:1401
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:30976
Gcn3ISA::Inst_VOPC__V_CMP_NE_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:13686
Gcn3ISA::InFmt_MIMG::GLC
unsigned int GLC
Definition: gpu_decoder.hh:1412
Gcn3ISA::Inst_VOPC__V_CMPX_F_F32::~Inst_VOPC__V_CMPX_F_F32
~Inst_VOPC__V_CMPX_F_F32()
Definition: instructions.cc:11010
Gcn3ISA::Inst_VOP3__V_CMP_T_U64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:22474
Gcn3ISA::Inst_SOPP__S_TTRACEDATA::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:4326
Gcn3ISA::InFmt_VOP3_SDST_ENC::VDST
unsigned int VDST
Definition: gpu_decoder.hh:1565
Gcn3ISA::Inst_VOP3__V_CMP_EQ_F16::Inst_VOP3__V_CMP_EQ_F16
Inst_VOP3__V_CMP_EQ_F16(InFmt_VOP3 *)
Definition: instructions.cc:16076
Gcn3ISA::Inst_VOP2__V_AND_B32::Inst_VOP2__V_AND_B32
Inst_VOP2__V_AND_B32(InFmt_VOP2 *)
Definition: instructions.cc:6207
Gcn3ISA::Inst_SOP2__S_ASHR_I32::Inst_SOP2__S_ASHR_I32
Inst_SOP2__S_ASHR_I32(InFmt_SOP2 *)
Definition: instructions.cc:1015
Gcn3ISA::Inst_VOPC__V_CMPX_LT_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:14039
Gcn3ISA::Inst_VOPC__V_CMP_GE_U16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:12987
Gcn3ISA::Inst_VOP3__V_CMP_F_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20960
Gcn3ISA::Inst_VOP1__V_COS_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:8635
Gcn3ISA::Inst_SOPC__S_CMP_EQ_U32::Inst_SOPC__S_CMP_EQ_U32
Inst_SOPC__S_CMP_EQ_U32(InFmt_SOPC *)
Definition: instructions.cc:3374
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_I64::Inst_VOPC__V_CMPX_EQ_I64
Inst_VOPC__V_CMPX_EQ_I64(InFmt_VOPC *)
Definition: instructions.cc:15027
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_D::Inst_MIMG__IMAGE_SAMPLE_D
Inst_MIMG__IMAGE_SAMPLE_D(InFmt_MIMG *)
Definition: instructions.cc:38350
Gcn3ISA::Inst_DS
Definition: op_encodings.hh:410
Gcn3ISA::Inst_MIMG__IMAGE_ATOMIC_DEC::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:38313
Gcn3ISA::Inst_DS__DS_WRITE_B32::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:31284
Gcn3ISA::Inst_MIMG__IMAGE_SAMPLE_C_L::Inst_MIMG__IMAGE_SAMPLE_C_L
Inst_MIMG__IMAGE_SAMPLE_C_L(InFmt_MIMG *)
Definition: instructions.cc:38514
Gcn3ISA::Inst_DS__DS_MAX_F32::Inst_DS__DS_MAX_F32
Inst_DS__DS_MAX_F32(InFmt_DS *)
Definition: instructions.cc:31479
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_I32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:21336
Gcn3ISA::Inst_VOP1__V_CVT_F32_UBYTE3::Inst_VOP1__V_CVT_F32_UBYTE3
Inst_VOP1__V_CVT_F32_UBYTE3(InFmt_VOP1 *)
Definition: instructions.cc:7916
Gcn3ISA::Inst_VOP2__V_ADD_U16::Inst_VOP2__V_ADD_U16
Inst_VOP2__V_ADD_U16(InFmt_VOP2 *)
Definition: instructions.cc:6899
Gcn3ISA::Inst_SOPP__S_SETKILL::Inst_SOPP__S_SETKILL
Inst_SOPP__S_SETKILL(InFmt_SOPP *)
Definition: instructions.cc:4127
Gcn3ISA::Inst_SOP1__S_XOR_SAVEEXEC_B64::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:2794
Gcn3ISA::Inst_VOP3__V_CVT_F32_UBYTE1::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:25826
Gcn3ISA::Inst_VOPC__V_CMP_LG_F32::~Inst_VOPC__V_CMP_LG_F32
~Inst_VOPC__V_CMP_LG_F32()
Definition: instructions.cc:10659
Gcn3ISA::Inst_VOP3__V_CMP_LT_U32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:20987
Gcn3ISA::Inst_VOP3__V_CMP_EQ_I16::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:19488
Gcn3ISA::Inst_VOPC__V_CMP_GT_U16::Inst_VOPC__V_CMP_GT_U16
Inst_VOPC__V_CMP_GT_U16(InFmt_VOPC *)
Definition: instructions.cc:12913
Gcn3ISA::Inst_SOP1__S_MOV_B32::~Inst_SOP1__S_MOV_B32
~Inst_SOP1__S_MOV_B32()
Definition: instructions.cc:1893
Gcn3ISA::Inst_VOP3__V_CMP_GT_F32::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:16814
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:23574
Gcn3ISA::Inst_VOPC__V_CMPX_LT_U32::~Inst_VOPC__V_CMPX_LT_U32
~Inst_VOPC__V_CMPX_LT_U32()
Definition: instructions.cc:14279
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:31907
Gcn3ISA::Inst_VOPC__V_CMP_GE_F32::Inst_VOPC__V_CMP_GE_F32
Inst_VOPC__V_CMP_GE_F32(InFmt_VOPC *)
Definition: instructions.cc:10685
Gcn3ISA::Inst_VOP3__V_FREXP_MANT_F32::~Inst_VOP3__V_FREXP_MANT_F32
~Inst_VOP3__V_FREXP_MANT_F32()
Definition: instructions.cc:27163
Gcn3ISA::Inst_VOPC__V_CMPX_EQ_F64::Inst_VOPC__V_CMPX_EQ_F64
Inst_VOPC__V_CMPX_EQ_F64(InFmt_VOPC *)
Definition: instructions.cc:12093
Gcn3ISA::Inst_VOP3__V_FFBH_I32::Inst_VOP3__V_FFBH_I32
Inst_VOP3__V_FFBH_I32(InFmt_VOP3 *)
Definition: instructions.cc:26950
Gcn3ISA::Inst_VOPC__V_CMPX_T_I32::Inst_VOPC__V_CMPX_T_I32
Inst_VOPC__V_CMPX_T_I32(InFmt_VOPC *)
Definition: instructions.cc:14219
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:38636
Gcn3ISA::Inst_MUBUF__BUFFER_STORE_FORMAT_D16_XY::completeAcc
void completeAcc(GPUDynInstPtr) override
Definition: instructions.cc:34958
Gcn3ISA::Inst_VOP3__V_FRACT_F32::~Inst_VOP3__V_FRACT_F32
~Inst_VOP3__V_FRACT_F32()
Definition: instructions.cc:26178
Gcn3ISA::Inst_VOPC__V_CMPX_LE_U16::Inst_VOPC__V_CMPX_LE_U16
Inst_VOPC__V_CMPX_LE_U16(InFmt_VOPC *)
Definition: instructions.cc:13369
Gcn3ISA::Inst_DS__DS_CMPST_RTN_B64::~Inst_DS__DS_CMPST_RTN_B64
~Inst_DS__DS_CMPST_RTN_B64()
Definition: instructions.cc:33429
Gcn3ISA::Inst_DS__DS_ADD_SRC2_F32::~Inst_DS__DS_ADD_SRC2_F32
~Inst_DS__DS_ADD_SRC2_F32()
Definition: instructions.cc:34011
Gcn3ISA::Inst_VOP3__V_CMPX_EQ_F16::Inst_VOP3__V_CMPX_EQ_F16
Inst_VOP3__V_CMPX_EQ_F16(InFmt_VOP3 *)
Definition: instructions.cc:16396
Gcn3ISA::Inst_VOPC__V_CMP_GE_F64::~Inst_VOPC__V_CMP_GE_F64
~Inst_VOPC__V_CMP_GE_F64()
Definition: instructions.cc:11721
Gcn3ISA::Inst_SOPP__S_NOP::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:3742
Gcn3ISA::Inst_VOPC__V_CMP_GT_U16::~Inst_VOPC__V_CMP_GT_U16
~Inst_VOPC__V_CMP_GT_U16()
Definition: instructions.cc:12919
Gcn3ISA::Inst_MUBUF__BUFFER_ATOMIC_XOR::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:36738
Gcn3ISA::Inst_FLAT__FLAT_ATOMIC_OR::Inst_FLAT__FLAT_ATOMIC_OR
Inst_FLAT__FLAT_ATOMIC_OR(InFmt_FLAT *)
Definition: instructions.cc:40956
Gcn3ISA::Inst_FLAT__FLAT_LOAD_DWORDX3::execute
void execute(GPUDynInstPtr) override
Definition: instructions.cc:39819
Gcn3ISA::Inst_VOP3__V_SQRT_F64::~Inst_VOP3__V_SQRT_F64
~Inst_VOP3__V_SQRT_F64()
Definition: instructions.cc:26703
Gcn3ISA::Inst_VOP3__V_CMP_O_F64::~Inst_VOP3__V_CMP_O_F64
~Inst_VOP3__V_CMP_O_F64()
Definition: instructions.cc:18097
Gcn3ISA::Inst_SOPK__S_CMPK_GT_I32::~Inst_SOPK__S_CMPK_GT_I32
~Inst_SOPK__S_CMPK_GT_I32()
Definition: instructions.cc:1462

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