gem5  [DEVELOP-FOR-23.0]
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
pm4_queues.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021 Advanced Micro Devices, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright notice,
9  * this list of conditions and the following disclaimer.
10  *
11  * 2. Redistributions in binary form must reproduce the above copyright notice,
12  * this list of conditions and the following disclaimer in the documentation
13  * and/or other materials provided with the distribution.
14  *
15  * 3. Neither the name of the copyright holder nor the names of its
16  * contributors may be used to endorse or promote products derived from this
17  * software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  *
31  */
32 
33 #ifndef __DEV_AMDGPU_PM4_QUEUES_HH__
34 #define __DEV_AMDGPU_PM4_QUEUES_HH__
35 
37 
38 namespace gem5
39 {
40 
46 typedef struct GEM5_PACKED
47 {
48  union
49  {
50  struct
51  {
54  };
55  uint64_t mqdReadIndex;
56  };
65  uint32_t disable_queue;
66  uint32_t reserved_107;
71  uint32_t reserved_112;
72  uint32_t reserved_113;
75  uint32_t cp_packet_id_lo;
76  uint32_t cp_packet_id_hi;
81  uint32_t gds_save_mask_lo;
82  uint32_t gds_save_mask_hi;
87  union
88  {
89  struct
90  {
91  uint32_t mqd_base_addr_lo;
92  uint32_t mqd_base_addr_hi;
93  };
94  uint64_t mqdBase;
95  };
96  uint32_t hqd_active;
97  uint32_t hqd_vmid;
101  uint32_t hqd_quantum;
102  union
103  {
104  struct
105  {
106  uint32_t hqd_pq_base_lo;
107  uint32_t hqd_pq_base_hi;
108  };
109  uint64_t base;
110  };
111  union
112  {
113  uint32_t hqd_pq_rptr;
114  uint32_t rptr;
115  };
116  union
117  {
118  struct
119  {
122  };
123  uint64_t aqlRptr;
124  };
127  union
128  {
130  uint32_t doorbell;
131  };
132  uint32_t reserved_144;
133  uint32_t hqd_pq_control;
134  union
135  {
136  struct
137  {
140  };
142  };
143  union
144  {
145  uint32_t hqd_ib_rptr;
146  uint32_t ibRptr;
147  };
148  uint32_t hqd_ib_control;
149  uint32_t hqd_iq_timer;
150  uint32_t hqd_iq_rptr;
153  uint32_t cp_hqd_sema_cmd;
154  uint32_t cp_hqd_msg_type;
161  uint32_t cp_mqd_control;
167  uint32_t cp_hqd_eop_rptr;
168  uint32_t cp_hqd_eop_wptr;
178  uint32_t cp_hqd_error;
180  union
181  {
183  uint32_t aql;
184  };
187 } QueueDesc;
188 
194 typedef struct GEM5_PACKED
195 {
197  union
198  {
199  struct
200  {
203  };
204  uint64_t rb_base;
205  };
206  union
207  {
208  struct
209  {
212  };
213  uint64_t rptr;
214  };
215  union
216  {
217  struct
218  {
221  };
222  uint64_t wptr;
223  };
259  uint32_t reserved_42;
260  uint32_t reserved_43;
261  uint32_t reserved_44;
262  uint32_t reserved_45;
263  uint32_t reserved_46;
264  uint32_t reserved_47;
265  uint32_t reserved_48;
266  uint32_t reserved_49;
267  uint32_t reserved_50;
268  uint32_t reserved_51;
269  uint32_t reserved_52;
270  uint32_t reserved_53;
271  uint32_t reserved_54;
272  uint32_t reserved_55;
273  uint32_t reserved_56;
274  uint32_t reserved_57;
275  uint32_t reserved_58;
276  uint32_t reserved_59;
277  uint32_t reserved_60;
278  uint32_t reserved_61;
279  uint32_t reserved_62;
280  uint32_t reserved_63;
281  uint32_t reserved_64;
282  uint32_t reserved_65;
283  uint32_t reserved_66;
284  uint32_t reserved_67;
285  uint32_t reserved_68;
286  uint32_t reserved_69;
287  uint32_t reserved_70;
288  uint32_t reserved_71;
289  uint32_t reserved_72;
290  uint32_t reserved_73;
291  uint32_t reserved_74;
292  uint32_t reserved_75;
293  uint32_t reserved_76;
294  uint32_t reserved_77;
295  uint32_t reserved_78;
296  uint32_t reserved_79;
297  uint32_t reserved_80;
298  uint32_t reserved_81;
299  uint32_t reserved_82;
300  uint32_t reserved_83;
301  uint32_t reserved_84;
302  uint32_t reserved_85;
303  uint32_t reserved_86;
304  uint32_t reserved_87;
305  uint32_t reserved_88;
306  uint32_t reserved_89;
307  uint32_t reserved_90;
308  uint32_t reserved_91;
309  uint32_t reserved_92;
310  uint32_t reserved_93;
311  uint32_t reserved_94;
312  uint32_t reserved_95;
313  uint32_t reserved_96;
314  uint32_t reserved_97;
315  uint32_t reserved_98;
316  uint32_t reserved_99;
317  uint32_t reserved_100;
318  uint32_t reserved_101;
319  uint32_t reserved_102;
320  uint32_t reserved_103;
321  uint32_t reserved_104;
322  uint32_t reserved_105;
323  uint32_t reserved_106;
324  uint32_t reserved_107;
325  uint32_t reserved_108;
326  uint32_t reserved_109;
327  uint32_t reserved_110;
328  uint32_t reserved_111;
329  uint32_t reserved_112;
330  uint32_t reserved_113;
331  uint32_t reserved_114;
332  uint32_t reserved_115;
333  uint32_t reserved_116;
334  uint32_t reserved_117;
335  uint32_t reserved_118;
336  uint32_t reserved_119;
337  uint32_t reserved_120;
338  uint32_t reserved_121;
339  uint32_t reserved_122;
340  uint32_t reserved_123;
341  uint32_t reserved_124;
342  uint32_t reserved_125;
343  /* reserved_126,127: repurposed for driver-internal use */
344  uint32_t sdma_engine_id;
345  uint32_t sdma_queue_id;
346 } SDMAQueueDesc;
347 
348 /* The Primary Queue has extra attributes, which will be stored separately. */
349 typedef struct PrimaryQueue : QueueDesc
350 {
351  union
352  {
353  struct
354  {
355  uint32_t queueRptrAddrLo;
356  uint32_t queueRptrAddrHi;
357  };
359  };
360  union
361  {
362  struct
363  {
364  uint32_t queueWptrLo;
365  uint32_t queueWptrHi;
366  };
368  };
369  uint32_t doorbellOffset;
370  uint32_t doorbellRangeLo;
371  uint32_t doorbellRangeHi;
372 } PrimaryQueue;
373 
377 class PM4Queue
378 {
379  int _id;
380 
381  /* Queue descriptor read from the system memory of the simulated system. */
383 
393  bool _ib;
395  public:
396  PM4Queue() : _id(0), q(nullptr), _wptr(0), _offset(0), _processing(false),
397  _ib(false), _pkt() {}
400  _processing(false), _ib(false), _pkt() {}
403  _processing(false), _ib(false), _pkt(*pkt) {}
404 
405  QueueDesc *getMQD() { return q; }
406  int id() { return _id; }
407  Addr mqdBase() { return q->mqdBase; }
408  Addr base() { return q->base; }
409  Addr ibBase() { return q->ibBase; }
410 
411  Addr
413  {
414  if (ib()) return q->ibBase + q->ibRptr;
415  else return q->base + (q->rptr % size());
416  }
417 
418  Addr
420  {
421  if (ib()) return q->ibBase + _ibWptr;
422  else return q->base + (_wptr % size());
423  }
424 
425  Addr
427  {
428  if (ib()) return q->ibRptr;
429  else return q->rptr;
430  }
431 
432  Addr
434  {
435  if (ib()) return _ibWptr;
436  else return _wptr;
437  }
438 
439  Addr offset() { return _offset; }
440  bool processing() { return _processing; }
441  bool ib() { return _ib; }
442 
443  void id(int value) { _id = value; }
444  void base(Addr value) { q->base = value; }
445  void ibBase(Addr value) { q->ibBase = value; }
446 
454  void
456  {
457  if (ib()) q->ibRptr = _ibWptr;
458  else q->rptr = _wptr;
459  }
460 
461  void
462  incRptr(Addr value)
463  {
464  if (ib()) q->ibRptr += value;
465  else q->rptr += value;
466  }
467 
468  void
469  rptr(Addr value)
470  {
471  if (ib()) q->ibRptr = value;
472  else q->rptr = value;
473  }
474 
475  void
476  wptr(Addr value)
477  {
478  if (ib()) _ibWptr = value;
479  else _wptr = value;
480  }
481 
482  void offset(Addr value) { _offset = value; }
483  void processing(bool value) { _processing = value; }
484  void ib(bool value) { _ib = value; }
485  uint32_t me() { return _pkt.me + 1; }
486  uint32_t pipe() { return _pkt.pipe; }
487  uint32_t queue() { return _pkt.queueSlot; }
488  bool privileged() { return _pkt.queueSel == 0 ? 1 : 0; }
489  PM4MapQueues* getPkt() { return &_pkt; }
490  void setPkt(uint32_t me, uint32_t pipe, uint32_t queue, bool privileged) {
491  _pkt.me = me - 1;
492  _pkt.pipe = pipe;
493  _pkt.queueSlot = queue;
494  _pkt.queueSel = (privileged == 0) ? 1 : 0;
495  }
496 
497  // Same computation as processMQD. See comment there for details.
498  uint64_t size() { return 4UL << ((q->hqd_pq_control & 0x3f) + 1); }
499 };
500 
501 } // namespace gem5
502 
503 #endif // __DEV_AMDGPU_PM4_QUEUES_HH__
gem5::GEM5_PACKED::hqd_pq_rptr
uint32_t hqd_pq_rptr
Definition: pm4_queues.hh:113
gem5::PM4Queue::ibBase
Addr ibBase()
Definition: pm4_queues.hh:409
gem5::GEM5_PACKED::reserved_113
uint32_t reserved_113
Definition: pm4_queues.hh:72
gem5::GEM5_PACKED::cp_hqd_eop_wptr
uint32_t cp_hqd_eop_wptr
Definition: pm4_queues.hh:168
gem5::GEM5_PACKED::reserved_118
uint32_t reserved_118
Definition: pm4_queues.hh:335
gem5::GEM5_PACKED::reserved_90
uint32_t reserved_90
Definition: pm4_queues.hh:307
gem5::GEM5_PACKED::gds_save_base_addr_hi
uint32_t gds_save_base_addr_hi
Definition: pm4_queues.hh:80
gem5::GEM5_PACKED::reserved_72
uint32_t reserved_72
Definition: pm4_queues.hh:289
gem5::PM4Queue::_pkt
PM4MapQueues _pkt
Definition: pm4_queues.hh:394
gem5::PM4Queue::ibBase
void ibBase(Addr value)
Definition: pm4_queues.hh:445
gem5::GEM5_PACKED::cp_hqd_cntl_stack_offset
uint32_t cp_hqd_cntl_stack_offset
Definition: pm4_queues.hh:173
gem5::GEM5_PACKED::reserved_124
uint32_t reserved_124
Definition: pm4_queues.hh:341
gem5::GEM5_PACKED::rptr
uint64_t rptr
Definition: pm4_queues.hh:213
gem5::GEM5_PACKED::reserved_121
uint32_t reserved_121
Definition: pm4_queues.hh:338
gem5::GEM5_PACKED
PM4 packets.
Definition: pm4_defines.hh:77
gem5::GEM5_PACKED::hqd_iq_timer
uint32_t hqd_iq_timer
Definition: pm4_queues.hh:149
gem5::PM4Queue::queue
uint32_t queue()
Definition: pm4_queues.hh:487
gem5::GEM5_PACKED::reserved_112
uint32_t reserved_112
Definition: pm4_queues.hh:71
gem5::GEM5_PACKED::rptr
uint32_t rptr
Definition: pm4_queues.hh:114
gem5::PM4Queue::processing
bool processing()
Definition: pm4_queues.hh:440
gem5::GEM5_PACKED::sdmax_rlcx_doorbell
uint32_t sdmax_rlcx_doorbell
Definition: pm4_queues.hh:235
gem5::GEM5_PACKED::reserved_94
uint32_t reserved_94
Definition: pm4_queues.hh:311
gem5::GEM5_PACKED::hqd_pq_doorbell_control
uint32_t hqd_pq_doorbell_control
Definition: pm4_queues.hh:129
gem5::GEM5_PACKED::reserved_65
uint32_t reserved_65
Definition: pm4_queues.hh:282
gem5::GEM5_PACKED::cp_packet_id_hi
uint32_t cp_packet_id_hi
Definition: pm4_queues.hh:76
gem5::QueueDesc
struct gem5::GEM5_PACKED QueueDesc
Queue descriptor with relevant MQD attributes.
gem5::PM4Queue::base
void base(Addr value)
Definition: pm4_queues.hh:444
gem5::GEM5_PACKED::mqd_base_addr_hi
uint32_t mqd_base_addr_hi
Definition: pm4_queues.hh:92
gem5::GEM5_PACKED::hqd_queue_priority
uint32_t hqd_queue_priority
Definition: pm4_queues.hh:100
gem5::GEM5_PACKED::cp_hqd_eop_base_addr_hi
uint32_t cp_hqd_eop_base_addr_hi
Definition: pm4_queues.hh:165
gem5::GEM5_PACKED::cp_hqd_wg_state_offset
uint32_t cp_hqd_wg_state_offset
Definition: pm4_queues.hh:175
gem5::GEM5_PACKED::cp_mqd_readindex_lo
uint32_t cp_mqd_readindex_lo
Definition: pm4_queues.hh:52
gem5::GEM5_PACKED::sdmax_rlcx_preempt
uint32_t sdmax_rlcx_preempt
Definition: pm4_queues.hh:243
gem5::GEM5_PACKED::cp_packet_exe_status_hi
uint32_t cp_packet_exe_status_hi
Definition: pm4_queues.hh:78
gem5::GEM5_PACKED::reserved_63
uint32_t reserved_63
Definition: pm4_queues.hh:280
gem5::GEM5_PACKED::reserved_82
uint32_t reserved_82
Definition: pm4_queues.hh:299
gem5::GEM5_PACKED::cp_hqd_pq_wptr_lo
uint32_t cp_hqd_pq_wptr_lo
Definition: pm4_queues.hh:185
gem5::GEM5_PACKED::sdmax_rlcx_rb_cntl
uint32_t sdmax_rlcx_rb_cntl
Definition: pm4_queues.hh:196
gem5::GEM5_PACKED::reserved_50
uint32_t reserved_50
Definition: pm4_queues.hh:267
gem5::GEM5_PACKED::sdmax_rlcx_midcmd_data0
uint32_t sdmax_rlcx_midcmd_data0
Definition: pm4_queues.hh:249
gem5::GEM5_PACKED::sdmax_rlcx_midcmd_cntl
uint32_t sdmax_rlcx_midcmd_cntl
Definition: pm4_queues.hh:258
gem5::PM4Queue
Class defining a PM4 queue.
Definition: pm4_queues.hh:377
gem5::PM4Queue::id
void id(int value)
Definition: pm4_queues.hh:443
gem5::PrimaryQueue::queueWptrLo
uint32_t queueWptrLo
Definition: pm4_queues.hh:364
gem5::GEM5_PACKED::reserved_73
uint32_t reserved_73
Definition: pm4_queues.hh:290
gem5::GEM5_PACKED::cp_mqd_save_end_time_hi
uint32_t cp_mqd_save_end_time_hi
Definition: pm4_queues.hh:60
gem5::GEM5_PACKED::sdmax_rlcx_doorbell_log
uint32_t sdmax_rlcx_doorbell_log
Definition: pm4_queues.hh:237
gem5::PM4Queue::_ib
bool _ib
Definition: pm4_queues.hh:393
gem5::PM4Queue::pipe
uint32_t pipe()
Definition: pm4_queues.hh:486
gem5::PM4Queue::fastforwardRptr
void fastforwardRptr()
It seems that PM4 nop packets with count 0x3fff, not only do not consider the count value,...
Definition: pm4_queues.hh:455
gem5::GEM5_PACKED::cp_hqd_atomic0_preop_lo
uint32_t cp_hqd_atomic0_preop_lo
Definition: pm4_queues.hh:155
gem5::PM4Queue::mqdBase
Addr mqdBase()
Definition: pm4_queues.hh:407
gem5::GEM5_PACKED::hqd_vmid
uint32_t hqd_vmid
Definition: pm4_queues.hh:97
gem5::PM4Queue::size
uint64_t size()
Definition: pm4_queues.hh:498
gem5::PM4Queue::rptr
void rptr(Addr value)
Definition: pm4_queues.hh:469
gem5::GEM5_PACKED::reserved_105
uint32_t reserved_105
Definition: pm4_queues.hh:322
gem5::GEM5_PACKED::reserved_66
uint32_t reserved_66
Definition: pm4_queues.hh:283
gem5::GEM5_PACKED::ctx_save_base_addr_lo
uint32_t ctx_save_base_addr_lo
Definition: pm4_queues.hh:83
gem5::GEM5_PACKED::reserved_61
uint32_t reserved_61
Definition: pm4_queues.hh:278
gem5::PM4Queue::wptr
void wptr(Addr value)
Definition: pm4_queues.hh:476
gem5::GEM5_PACKED::reserved_52
uint32_t reserved_52
Definition: pm4_queues.hh:269
gem5::GEM5_PACKED::queueSel
uint32_t queueSel
Definition: pm4_defines.hh:123
gem5::GEM5_PACKED::reserved_43
uint32_t reserved_43
Definition: pm4_queues.hh:260
gem5::GEM5_PACKED::cp_hqd_cntl_stack_size
uint32_t cp_hqd_cntl_stack_size
Definition: pm4_queues.hh:174
gem5::GEM5_PACKED::reserved_109
uint32_t reserved_109
Definition: pm4_queues.hh:326
gem5::GEM5_PACKED::hqd_pq_wptr_poll_addr_hi
uint32_t hqd_pq_wptr_poll_addr_hi
Definition: pm4_queues.hh:126
gem5::GEM5_PACKED::gds_save_mask_lo
uint32_t gds_save_mask_lo
Definition: pm4_queues.hh:81
gem5::GEM5_PACKED::reserved_95
uint32_t reserved_95
Definition: pm4_queues.hh:312
gem5::GEM5_PACKED::reserved_44
uint32_t reserved_44
Definition: pm4_queues.hh:261
gem5::GEM5_PACKED::sdmax_rlcx_rb_rptr_addr_lo
uint32_t sdmax_rlcx_rb_rptr_addr_lo
Definition: pm4_queues.hh:226
gem5::GEM5_PACKED::reserved_46
uint32_t reserved_46
Definition: pm4_queues.hh:263
gem5::GEM5_PACKED::cp_mqd_restore_end_time_lo
uint32_t cp_mqd_restore_end_time_lo
Definition: pm4_queues.hh:63
gem5::GEM5_PACKED::cp_pq_exe_status_lo
uint32_t cp_pq_exe_status_lo
Definition: pm4_queues.hh:73
gem5::GEM5_PACKED::sdmax_rlcx_ib_size
uint32_t sdmax_rlcx_ib_size
Definition: pm4_queues.hh:232
gem5::GEM5_PACKED::hqd_pq_base_lo
uint32_t hqd_pq_base_lo
Definition: pm4_queues.hh:106
gem5::PM4Queue::me
uint32_t me()
Definition: pm4_queues.hh:485
gem5::GEM5_PACKED::hqd_ib_base_addr_lo
uint32_t hqd_ib_base_addr_lo
Definition: pm4_queues.hh:138
gem5::GEM5_PACKED::reserved_86
uint32_t reserved_86
Definition: pm4_queues.hh:303
gem5::GEM5_PACKED::ibBase
Addr ibBase
Definition: pm4_queues.hh:141
gem5::PrimaryQueue::queueRptrAddrHi
uint32_t queueRptrAddrHi
Definition: pm4_queues.hh:356
gem5::GEM5_PACKED::sdmax_rlcx_rb_wptr_poll_cntl
uint32_t sdmax_rlcx_rb_wptr_poll_cntl
Definition: pm4_queues.hh:224
gem5::GEM5_PACKED::reserved_115
uint32_t reserved_115
Definition: pm4_queues.hh:332
gem5::PrimaryQueue
gem5::PrimaryQueue PrimaryQueue
gem5::GEM5_PACKED::reserved_120
uint32_t reserved_120
Definition: pm4_queues.hh:337
gem5::PrimaryQueue::queueWptr
Addr queueWptr
Definition: pm4_queues.hh:367
gem5::GEM5_PACKED::reserved_67
uint32_t reserved_67
Definition: pm4_queues.hh:284
gem5::GEM5_PACKED::sdmax_rlcx_skip_cntl
uint32_t sdmax_rlcx_skip_cntl
Definition: pm4_queues.hh:233
gem5::GEM5_PACKED::hqd_pq_rptr_report_addr_lo
uint32_t hqd_pq_rptr_report_addr_lo
Definition: pm4_queues.hh:120
gem5::PrimaryQueue
Definition: pm4_queues.hh:349
gem5::GEM5_PACKED::sdmax_rlcx_midcmd_data6
uint32_t sdmax_rlcx_midcmd_data6
Definition: pm4_queues.hh:255
gem5::GEM5_PACKED::cp_mqd_restore_start_time_hi
uint32_t cp_mqd_restore_start_time_hi
Definition: pm4_queues.hh:62
gem5::GEM5_PACKED::reserved_96
uint32_t reserved_96
Definition: pm4_queues.hh:313
gem5::GEM5_PACKED::reserved_122
uint32_t reserved_122
Definition: pm4_queues.hh:339
gem5::GEM5_PACKED::cp_hqd_atomic1_preop_hi
uint32_t cp_hqd_atomic1_preop_hi
Definition: pm4_queues.hh:158
gem5::GEM5_PACKED::hqd_pq_rptr_report_addr_hi
uint32_t hqd_pq_rptr_report_addr_hi
Definition: pm4_queues.hh:121
gem5::GEM5_PACKED::cp_hqd_dma_offload
uint32_t cp_hqd_dma_offload
Definition: pm4_queues.hh:152
gem5::GEM5_PACKED::sdmax_rlcx_ib_sub_remain
uint32_t sdmax_rlcx_ib_sub_remain
Definition: pm4_queues.hh:242
gem5::GEM5_PACKED::disable_queue
uint32_t disable_queue
Definition: pm4_queues.hh:65
gem5::GEM5_PACKED::reserved_77
uint32_t reserved_77
Definition: pm4_queues.hh:294
gem5::GEM5_PACKED::mqdReadIndex
uint64_t mqdReadIndex
Definition: pm4_queues.hh:55
gem5::GEM5_PACKED::reserved_123
uint32_t reserved_123
Definition: pm4_queues.hh:340
gem5::GEM5_PACKED::reserved_102
uint32_t reserved_102
Definition: pm4_queues.hh:319
gem5::GEM5_PACKED::sdmax_rlcx_rb_rptr_hi
uint32_t sdmax_rlcx_rb_rptr_hi
Definition: pm4_queues.hh:211
gem5::GEM5_PACKED::cp_mqd_restore_start_time_lo
uint32_t cp_mqd_restore_start_time_lo
Definition: pm4_queues.hh:61
gem5::PrimaryQueue::queueRptrAddr
Addr queueRptrAddr
Definition: pm4_queues.hh:358
gem5::GEM5_PACKED::hqd_ib_base_addr_hi
uint32_t hqd_ib_base_addr_hi
Definition: pm4_queues.hh:139
gem5::GEM5_PACKED::reserved_47
uint32_t reserved_47
Definition: pm4_queues.hh:264
gem5::PM4Queue::privileged
bool privileged()
Definition: pm4_queues.hh:488
gem5::GEM5_PACKED::cp_hqd_eop_done_events
uint32_t cp_hqd_eop_done_events
Definition: pm4_queues.hh:169
gem5::GEM5_PACKED::cp_hqd_hq_control1
uint32_t cp_hqd_hq_control1
Definition: pm4_queues.hh:163
gem5::GEM5_PACKED::cp_hqd_aql_control
uint32_t cp_hqd_aql_control
Definition: pm4_queues.hh:182
gem5::GEM5_PACKED::reserved_55
uint32_t reserved_55
Definition: pm4_queues.hh:272
gem5::PM4Queue::rptr
Addr rptr()
Definition: pm4_queues.hh:412
gem5::PM4Queue::PM4Queue
PM4Queue(int id, QueueDesc *queue, Addr offset, PM4MapQueues *pkt)
Definition: pm4_queues.hh:401
gem5::GEM5_PACKED::reserved_87
uint32_t reserved_87
Definition: pm4_queues.hh:304
gem5::GEM5_PACKED::gds_cs_ctxsw_cnt2
uint32_t gds_cs_ctxsw_cnt2
Definition: pm4_queues.hh:69
gem5::GEM5_PACKED::hqd_pipe_priority
uint32_t hqd_pipe_priority
Definition: pm4_queues.hh:99
gem5::GEM5_PACKED::reserved_110
uint32_t reserved_110
Definition: pm4_queues.hh:327
gem5::GEM5_PACKED::cp_hqd_atomic0_preop_hi
uint32_t cp_hqd_atomic0_preop_hi
Definition: pm4_queues.hh:156
gem5::GEM5_PACKED::aql
uint32_t aql
Definition: pm4_queues.hh:183
gem5::GEM5_PACKED::cp_hqd_ctx_save_base_addr_lo
uint32_t cp_hqd_ctx_save_base_addr_lo
Definition: pm4_queues.hh:170
gem5::GEM5_PACKED::cp_hqd_msg_type
uint32_t cp_hqd_msg_type
Definition: pm4_queues.hh:154
gem5::GEM5_PACKED::cp_hqd_sema_cmd
uint32_t cp_hqd_sema_cmd
Definition: pm4_queues.hh:153
gem5::GEM5_PACKED::pipe
uint32_t pipe
Definition: pm4_defines.hh:128
gem5::PM4Queue::_ibWptr
Addr _ibWptr
Definition: pm4_queues.hh:390
gem5::GEM5_PACKED::cp_hqd_hq_control0
uint32_t cp_hqd_hq_control0
Definition: pm4_queues.hh:160
gem5::GEM5_PACKED::gds_cs_ctxsw_cnt3
uint32_t gds_cs_ctxsw_cnt3
Definition: pm4_queues.hh:70
gem5::GEM5_PACKED::sdmax_rlcx_midcmd_data5
uint32_t sdmax_rlcx_midcmd_data5
Definition: pm4_queues.hh:254
gem5::GEM5_PACKED::reserved_62
uint32_t reserved_62
Definition: pm4_queues.hh:279
gem5::GEM5_PACKED::reserved_51
uint32_t reserved_51
Definition: pm4_queues.hh:268
gem5::GEM5_PACKED::reserved_59
uint32_t reserved_59
Definition: pm4_queues.hh:276
gem5::GEM5_PACKED::hqd_pq_base_hi
uint32_t hqd_pq_base_hi
Definition: pm4_queues.hh:107
gem5::GEM5_PACKED::cp_hqd_ctx_save_base_addr_hi
uint32_t cp_hqd_ctx_save_base_addr_hi
Definition: pm4_queues.hh:171
gem5::GEM5_PACKED::rb_base
uint64_t rb_base
Definition: pm4_queues.hh:204
gem5::GEM5_PACKED::ctx_save_base_addr_hi
uint32_t ctx_save_base_addr_hi
Definition: pm4_queues.hh:84
gem5::GEM5_PACKED::sdmax_rlcx_midcmd_data7
uint32_t sdmax_rlcx_midcmd_data7
Definition: pm4_queues.hh:256
gem5::GEM5_PACKED::cp_hqd_hq_status1
uint32_t cp_hqd_hq_status1
Definition: pm4_queues.hh:162
gem5::GEM5_PACKED::me
uint32_t me
Definition: pm4_defines.hh:129
gem5::GEM5_PACKED::sdmax_rlcx_ib_base_hi
uint32_t sdmax_rlcx_ib_base_hi
Definition: pm4_queues.hh:231
gem5::GEM5_PACKED::cp_mqd_save_start_time_hi
uint32_t cp_mqd_save_start_time_hi
Definition: pm4_queues.hh:58
gem5::GEM5_PACKED::reserved_103
uint32_t reserved_103
Definition: pm4_queues.hh:320
gem5::GEM5_PACKED::sdmax_rlcx_status
uint32_t sdmax_rlcx_status
Definition: pm4_queues.hh:236
gem5::GEM5_PACKED::reserved_53
uint32_t reserved_53
Definition: pm4_queues.hh:270
gem5::GEM5_PACKED::reserved_78
uint32_t reserved_78
Definition: pm4_queues.hh:295
gem5::GEM5_PACKED::cp_mqd_save_end_time_lo
uint32_t cp_mqd_save_end_time_lo
Definition: pm4_queues.hh:59
gem5::GEM5_PACKED::sdmax_rlcx_midcmd_data4
uint32_t sdmax_rlcx_midcmd_data4
Definition: pm4_queues.hh:253
gem5::GEM5_PACKED::reserved_58
uint32_t reserved_58
Definition: pm4_queues.hh:275
gem5::GEM5_PACKED::ibRptr
uint32_t ibRptr
Definition: pm4_queues.hh:146
gem5::GEM5_PACKED::hqd_quantum
uint32_t hqd_quantum
Definition: pm4_queues.hh:101
gem5::GEM5_PACKED::reserved_56
uint32_t reserved_56
Definition: pm4_queues.hh:273
gem5::GEM5_PACKED::reserved_116
uint32_t reserved_116
Definition: pm4_queues.hh:333
gem5::Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:147
gem5::PrimaryQueue::queueRptrAddrLo
uint32_t queueRptrAddrLo
Definition: pm4_queues.hh:355
gem5::PM4Queue::getRptr
Addr getRptr()
Definition: pm4_queues.hh:426
gem5::GEM5_PACKED::cp_packet_exe_status_lo
uint32_t cp_packet_exe_status_lo
Definition: pm4_queues.hh:77
gem5::GEM5_PACKED::reserved_42
uint32_t reserved_42
Definition: pm4_queues.hh:259
gem5::PM4Queue::getMQD
QueueDesc * getMQD()
Definition: pm4_queues.hh:405
gem5::PM4Queue::_offset
Addr _offset
Definition: pm4_queues.hh:391
gem5::GEM5_PACKED::reserved_119
uint32_t reserved_119
Definition: pm4_queues.hh:336
gem5::PrimaryQueue::doorbellOffset
uint32_t doorbellOffset
Definition: pm4_queues.hh:369
gem5::GEM5_PACKED::sdmax_rlcx_midcmd_data1
uint32_t sdmax_rlcx_midcmd_data1
Definition: pm4_queues.hh:250
gem5::PM4Queue::setPkt
void setPkt(uint32_t me, uint32_t pipe, uint32_t queue, bool privileged)
Definition: pm4_queues.hh:490
gem5::GEM5_PACKED::queueSlot
uint32_t queueSlot
Definition: pm4_defines.hh:127
gem5::GEM5_PACKED::sdmax_rlcx_midcmd_data8
uint32_t sdmax_rlcx_midcmd_data8
Definition: pm4_queues.hh:257
gem5::GEM5_PACKED::sdmax_rlcx_rb_rptr
uint32_t sdmax_rlcx_rb_rptr
Definition: pm4_queues.hh:210
gem5::GEM5_PACKED::reserved_81
uint32_t reserved_81
Definition: pm4_queues.hh:298
gem5::PM4Queue::processing
void processing(bool value)
Definition: pm4_queues.hh:483
gem5::PM4Queue::q
QueueDesc * q
Definition: pm4_queues.hh:382
gem5::GEM5_PACKED::doorbell
uint32_t doorbell
Definition: pm4_queues.hh:130
gem5::GEM5_PACKED::dynamic_cu_mask_addr_hi
uint32_t dynamic_cu_mask_addr_hi
Definition: pm4_queues.hh:86
gem5::GEM5_PACKED::cp_hqd_eop_base_addr_lo
uint32_t cp_hqd_eop_base_addr_lo
Definition: pm4_queues.hh:164
gem5::GEM5_PACKED::cp_hqd_pq_wptr_hi
uint32_t cp_hqd_pq_wptr_hi
Definition: pm4_queues.hh:186
gem5::GEM5_PACKED::sdmax_rlcx_midcmd_data2
uint32_t sdmax_rlcx_midcmd_data2
Definition: pm4_queues.hh:251
gem5::GEM5_PACKED::hqd_ib_control
uint32_t hqd_ib_control
Definition: pm4_queues.hh:148
gem5::GEM5_PACKED::sdmax_rlcx_rb_wptr_poll_addr_hi
uint32_t sdmax_rlcx_rb_wptr_poll_addr_hi
Definition: pm4_queues.hh:245
gem5::GEM5_PACKED::ibBase
uint64_t ibBase
Definition: pm4_defines.hh:381
gem5::GEM5_PACKED::reserved_88
uint32_t reserved_88
Definition: pm4_queues.hh:305
gem5::GEM5_PACKED::reserved_117
uint32_t reserved_117
Definition: pm4_queues.hh:334
gem5::GEM5_PACKED::sdmax_rlcx_ib_rptr
uint32_t sdmax_rlcx_ib_rptr
Definition: pm4_queues.hh:228
gem5::GEM5_PACKED::mqdBase
uint64_t mqdBase
Definition: pm4_queues.hh:94
gem5::PM4Queue::_wptr
Addr _wptr
Most important fields of a PM4 queue are stored in the queue descriptor (i.e., QueueDesc).
Definition: pm4_queues.hh:389
gem5::PM4Queue::offset
void offset(Addr value)
Definition: pm4_queues.hh:482
gem5::GEM5_PACKED::reserved_71
uint32_t reserved_71
Definition: pm4_queues.hh:288
gem5::GEM5_PACKED::reserved_48
uint32_t reserved_48
Definition: pm4_queues.hh:265
gem5::GEM5_PACKED::cp_mqd_save_start_time_lo
uint32_t cp_mqd_save_start_time_lo
Definition: pm4_queues.hh:57
gem5::GEM5_PACKED::sdmax_rlcx_dummy_reg
uint32_t sdmax_rlcx_dummy_reg
Definition: pm4_queues.hh:244
gem5::PM4Queue::getWptr
Addr getWptr()
Definition: pm4_queues.hh:433
gem5::GEM5_PACKED::reserved_108
uint32_t reserved_108
Definition: pm4_queues.hh:325
gem5::GEM5_PACKED::cp_hqd_error
uint32_t cp_hqd_error
Definition: pm4_queues.hh:178
gem5::PM4Queue::getPkt
PM4MapQueues * getPkt()
Definition: pm4_queues.hh:489
gem5::PM4Queue::_id
int _id
Definition: pm4_queues.hh:379
gem5::GEM5_PACKED::sdmax_rlcx_midcmd_data3
uint32_t sdmax_rlcx_midcmd_data3
Definition: pm4_queues.hh:252
gem5::GEM5_PACKED::hqd_active
uint32_t hqd_active
Definition: pm4_queues.hh:96
gem5::GEM5_PACKED::reserved_98
uint32_t reserved_98
Definition: pm4_queues.hh:315
gem5::GEM5_PACKED::reserved_74
uint32_t reserved_74
Definition: pm4_queues.hh:291
gem5::GEM5_PACKED::sdmax_rlcx_rb_base_hi
uint32_t sdmax_rlcx_rb_base_hi
Definition: pm4_queues.hh:202
gem5::PM4Queue::incRptr
void incRptr(Addr value)
Definition: pm4_queues.hh:462
gem5::GEM5_PACKED::sdmax_rlcx_watermark
uint32_t sdmax_rlcx_watermark
Definition: pm4_queues.hh:238
gem5::GEM5_PACKED::aqlRptr
uint64_t aqlRptr
Definition: pm4_queues.hh:123
gem5::GEM5_PACKED::reserved_99
uint32_t reserved_99
Definition: pm4_queues.hh:316
gem5::GEM5_PACKED::reserved_91
uint32_t reserved_91
Definition: pm4_queues.hh:308
gem5::GEM5_PACKED::sdma_queue_id
uint32_t sdma_queue_id
Definition: pm4_queues.hh:345
gem5::GEM5_PACKED::reserved_144
uint32_t reserved_144
Definition: pm4_queues.hh:132
gem5::GEM5_PACKED::cp_mqd_control
uint32_t cp_mqd_control
Definition: pm4_queues.hh:161
gem5::PrimaryQueue::queueWptrHi
uint32_t queueWptrHi
Definition: pm4_queues.hh:365
gem5::GEM5_PACKED::sdmax_rlcx_rb_rptr_addr_hi
uint32_t sdmax_rlcx_rb_rptr_addr_hi
Definition: pm4_queues.hh:225
gem5::GEM5_PACKED::wptr
uint64_t wptr
Definition: pm4_queues.hh:222
gem5::GEM5_PACKED::cp_hqd_eop_rptr
uint32_t cp_hqd_eop_rptr
Definition: pm4_queues.hh:167
gem5::GEM5_PACKED::sdmax_rlcx_csa_addr_hi
uint32_t sdmax_rlcx_csa_addr_hi
Definition: pm4_queues.hh:241
gem5::GEM5_PACKED::reserved_104
uint32_t reserved_104
Definition: pm4_queues.hh:321
gem5::GEM5_PACKED::mqd_base_addr_lo
uint32_t mqd_base_addr_lo
Definition: pm4_queues.hh:91
gem5::GEM5_PACKED::hqd_iq_rptr
uint32_t hqd_iq_rptr
Definition: pm4_queues.hh:150
gem5::GEM5_PACKED::reserved_45
uint32_t reserved_45
Definition: pm4_queues.hh:262
gem5::PM4Queue::base
Addr base()
Definition: pm4_queues.hh:408
gem5::GEM5_PACKED::hqd_pq_wptr_poll_addr_lo
uint32_t hqd_pq_wptr_poll_addr_lo
Definition: pm4_queues.hh:125
gem5::GEM5_PACKED::sdmax_rlcx_doorbell_offset
uint32_t sdmax_rlcx_doorbell_offset
Definition: pm4_queues.hh:239
gem5::GEM5_PACKED::reserved_97
uint32_t reserved_97
Definition: pm4_queues.hh:314
gem5::GEM5_PACKED::hqd_ib_rptr
uint32_t hqd_ib_rptr
Definition: pm4_queues.hh:145
gem5::GEM5_PACKED::dynamic_cu_mask_addr_lo
uint32_t dynamic_cu_mask_addr_lo
Definition: pm4_queues.hh:85
gem5::GEM5_PACKED::sdmax_rlcx_rb_base
uint32_t sdmax_rlcx_rb_base
Definition: pm4_queues.hh:201
gem5::GEM5_PACKED::sdmax_rlcx_rb_wptr
uint32_t sdmax_rlcx_rb_wptr
Definition: pm4_queues.hh:219
gem5::GEM5_PACKED::reserved_49
uint32_t reserved_49
Definition: pm4_queues.hh:266
gem5::PM4Queue::_processing
bool _processing
Definition: pm4_queues.hh:392
gem5::GEM5_PACKED::reserved_106
uint32_t reserved_106
Definition: pm4_queues.hh:323
gem5::GEM5_PACKED::sdmax_rlcx_csa_addr_lo
uint32_t sdmax_rlcx_csa_addr_lo
Definition: pm4_queues.hh:240
gem5::GEM5_PACKED::cp_mqd_readindex_hi
uint32_t cp_mqd_readindex_hi
Definition: pm4_queues.hh:53
gem5::GEM5_PACKED::reserved_76
uint32_t reserved_76
Definition: pm4_queues.hh:293
gem5::GEM5_PACKED::gds_save_mask_hi
uint32_t gds_save_mask_hi
Definition: pm4_queues.hh:82
gem5::PM4Queue::PM4Queue
PM4Queue()
Definition: pm4_queues.hh:396
gem5::GEM5_PACKED::gds_cs_ctxsw_cnt1
uint32_t gds_cs_ctxsw_cnt1
Definition: pm4_queues.hh:68
pm4_defines.hh
gem5::PM4Queue::ib
void ib(bool value)
Definition: pm4_queues.hh:484
gem5::GEM5_PACKED::cp_hqd_eop_wptr_mem
uint32_t cp_hqd_eop_wptr_mem
Definition: pm4_queues.hh:179
gem5::GEM5_PACKED::reserved_125
uint32_t reserved_125
Definition: pm4_queues.hh:342
gem5::GEM5_PACKED::sdma_engine_id
uint32_t sdma_engine_id
Definition: pm4_queues.hh:344
gem5::PM4Queue::offset
Addr offset()
Definition: pm4_queues.hh:439
gem5::GEM5_PACKED::sdmax_rlcx_context_status
uint32_t sdmax_rlcx_context_status
Definition: pm4_queues.hh:234
gem5::GEM5_PACKED::base
uint64_t base
Definition: pm4_queues.hh:109
gem5::GEM5_PACKED::hqd_persistent_state
uint32_t hqd_persistent_state
Definition: pm4_queues.hh:98
gem5::GEM5_PACKED::cp_hqd_hq_status0
uint32_t cp_hqd_hq_status0
Definition: pm4_queues.hh:159
gem5::GEM5_PACKED::sdmax_rlcx_rb_wptr_poll_addr_lo
uint32_t sdmax_rlcx_rb_wptr_poll_addr_lo
Definition: pm4_queues.hh:246
gem5::PrimaryQueue::doorbellRangeHi
uint32_t doorbellRangeHi
Definition: pm4_queues.hh:371
gem5::PM4Queue::id
int id()
Definition: pm4_queues.hh:406
gem5::GEM5_PACKED::reserved_100
uint32_t reserved_100
Definition: pm4_queues.hh:317
gem5::GEM5_PACKED::reserved_68
uint32_t reserved_68
Definition: pm4_queues.hh:285
gem5::GEM5_PACKED::cp_hqd_dequeue_request
uint32_t cp_hqd_dequeue_request
Definition: pm4_queues.hh:151
gem5::GEM5_PACKED::cp_packet_id_lo
uint32_t cp_packet_id_lo
Definition: pm4_queues.hh:75
gem5::GEM5_PACKED::sdmax_rlcx_rb_wptr_hi
uint32_t sdmax_rlcx_rb_wptr_hi
Definition: pm4_queues.hh:220
gem5::GEM5_PACKED::sdmax_rlcx_minor_ptr_update
uint32_t sdmax_rlcx_minor_ptr_update
Definition: pm4_queues.hh:248
gem5::GEM5_PACKED::reserved_69
uint32_t reserved_69
Definition: pm4_queues.hh:286
gem5::GEM5_PACKED::cp_hqd_atomic1_preop_lo
uint32_t cp_hqd_atomic1_preop_lo
Definition: pm4_queues.hh:157
gem5::GEM5_PACKED::cp_pq_exe_status_hi
uint32_t cp_pq_exe_status_hi
Definition: pm4_queues.hh:74
gem5::GEM5_PACKED::cp_hqd_eop_control
uint32_t cp_hqd_eop_control
Definition: pm4_queues.hh:166
gem5::GEM5_PACKED::sdmax_rlcx_ib_base_lo
uint32_t sdmax_rlcx_ib_base_lo
Definition: pm4_queues.hh:230
gem5::PM4Queue::wptr
Addr wptr()
Definition: pm4_queues.hh:419
gem5::GEM5_PACKED::reserved_85
uint32_t reserved_85
Definition: pm4_queues.hh:302
gem5
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Definition: gpu_translation_state.hh:37
gem5::PrimaryQueue::doorbellRangeLo
uint32_t doorbellRangeLo
Definition: pm4_queues.hh:370
gem5::GEM5_PACKED::reserved_107
uint32_t reserved_107
Definition: pm4_queues.hh:66
gem5::GEM5_PACKED::reserved_114
uint32_t reserved_114
Definition: pm4_queues.hh:331
gem5::GEM5_PACKED::reserved_101
uint32_t reserved_101
Definition: pm4_queues.hh:318
gem5::GEM5_PACKED::reserved_70
uint32_t reserved_70
Definition: pm4_queues.hh:287
gem5::GEM5_PACKED::reserved_89
uint32_t reserved_89
Definition: pm4_queues.hh:306
gem5::GEM5_PACKED::gds_save_base_addr_lo
uint32_t gds_save_base_addr_lo
Definition: pm4_queues.hh:79
gem5::GEM5_PACKED::reserved_79
uint32_t reserved_79
Definition: pm4_queues.hh:296
gem5::GEM5_PACKED::reserved_57
uint32_t reserved_57
Definition: pm4_queues.hh:274
gem5::GEM5_PACKED::reserved_80
uint32_t reserved_80
Definition: pm4_queues.hh:297
gem5::GEM5_PACKED::sdmax_rlcx_ib_offset
uint32_t sdmax_rlcx_ib_offset
Definition: pm4_queues.hh:229
gem5::GEM5_PACKED::reserved_64
uint32_t reserved_64
Definition: pm4_queues.hh:281
gem5::GEM5_PACKED::cp_hqd_ctx_save_control
uint32_t cp_hqd_ctx_save_control
Definition: pm4_queues.hh:172
gem5::GEM5_PACKED::reserved_93
uint32_t reserved_93
Definition: pm4_queues.hh:310
gem5::GEM5_PACKED::reserved_54
uint32_t reserved_54
Definition: pm4_queues.hh:271
gem5::PM4Queue::PM4Queue
PM4Queue(int id, QueueDesc *queue, Addr offset)
Definition: pm4_queues.hh:398
gem5::GEM5_PACKED::reserved_83
uint32_t reserved_83
Definition: pm4_queues.hh:300
gem5::GEM5_PACKED::reserved_92
uint32_t reserved_92
Definition: pm4_queues.hh:309
gem5::SDMAQueueDesc
struct gem5::GEM5_PACKED SDMAQueueDesc
Queue descriptor for SDMA-based user queues (RLC queues).
gem5::GEM5_PACKED::reserved_75
uint32_t reserved_75
Definition: pm4_queues.hh:292
gem5::GEM5_PACKED::cp_mqd_restore_end_time_hi
uint32_t cp_mqd_restore_end_time_hi
Definition: pm4_queues.hh:64
gem5::GEM5_PACKED::sdmax_rlcx_rb_aql_cntl
uint32_t sdmax_rlcx_rb_aql_cntl
Definition: pm4_queues.hh:247
gem5::GEM5_PACKED::cp_hqd_gds_resource_state
uint32_t cp_hqd_gds_resource_state
Definition: pm4_queues.hh:177
gem5::GEM5_PACKED::reserved_111
uint32_t reserved_111
Definition: pm4_queues.hh:328
gem5::GEM5_PACKED::hqd_pq_control
uint32_t hqd_pq_control
Definition: pm4_queues.hh:133
gem5::PM4Queue::ib
bool ib()
Definition: pm4_queues.hh:441
gem5::GEM5_PACKED::gds_cs_ctxsw_cnt0
uint32_t gds_cs_ctxsw_cnt0
Definition: pm4_queues.hh:67
gem5::GEM5_PACKED::reserved_60
uint32_t reserved_60
Definition: pm4_queues.hh:277
gem5::GEM5_PACKED::sdmax_rlcx_ib_cntl
uint32_t sdmax_rlcx_ib_cntl
Definition: pm4_queues.hh:227
gem5::GEM5_PACKED::reserved_84
uint32_t reserved_84
Definition: pm4_queues.hh:301
gem5::GEM5_PACKED::cp_hqd_ctx_save_size
uint32_t cp_hqd_ctx_save_size
Definition: pm4_queues.hh:176

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