<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Mar 9, 2021, at 8:33 AM, Andrew Savonichev via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">But I am really shooting in the dark here. I don't have a good<br class="">understanding of the difference between MicroOpBufferSize=0 and 1, and<br class="">I am not even sure which setting is really best for AMDGPU.<br class=""></blockquote><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Frankly, I don't know what is the difference between MicroOpBufferSize=0</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">and 1. We should probably treat them the same for MCA, so your changes</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">look good.</span></div></div></blockquote></div><div class=""><br class=""></div>We should really have some alias for MicroOpBufferSize=0/1. It’s too cryptic.<div class=""><br class=""></div><div class="">InOrder => MicroOpBufferSize=1</div><div class="">VLIW => MicroOpBufferSize=0</div><div class=""><br class=""></div><div class="">It only affects what instructions the scheduler puts in the ready queue. In VLIW-mode, the scheduler only considers instructions that can be scheduled in the current group. In InOrder mode, the scheduler can weigh the potential latency stall against other heuristics. I don’t think it’s relevant for MCA.</div><div class=""><br class=""></div><div class="">-Andy <br class=""><div class=""><br class=""></div><div class=""><div class="">  // "0" means operations that are not ready in this cycle are not considered</div><div class="">  // for scheduling (they go in the pending queue). Latency is paramount. This</div><div class="">  // may be more efficient if many instructions are pending in a schedule.</div><div class="">  //</div><div class="">  // "1" means all instructions are considered for scheduling regardless of</div><div class="">  // whether they are ready in this cycle. Latency still causes issue stalls,</div><div class="">  // but we balance those stalls against other heuristics.</div><div class="">  //</div><div class="">  // "> 1" means the processor is out-of-order. This is a machine independent</div><div class="">  // estimate of highly machine specific characteristics such as the register</div><div class="">  // renaming pool and reorder buffer.</div></div><div class=""><br class=""></div></div></body></html>