[llvm-bugs] [Bug 42202] New: [mca] modelling decoder unit throttling

via llvm-bugs llvm-bugs at lists.llvm.org
Sat Jun 8 22:28:15 PDT 2019


https://bugs.llvm.org/show_bug.cgi?id=42202

            Bug ID: 42202
           Summary: [mca] modelling decoder unit throttling
           Product: tools
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: llvm-mca
          Assignee: unassignedbugs at nondot.org
          Reporter: lebedev.ri at gmail.com
                CC: andrea.dibiagio at gmail.com, llvm-bugs at lists.llvm.org,
                    matthew.davis at sony.com

This is two-fold issue:

* Instructions that generate two macro-ops are called double instructions.
  The decoders in the Piledriver, Steamroller, and Excavator can handle four
  single instructions (1-1-1-1) or one double instruction and two single
  (2-1-1) or two double instructions (2-2) in one clock cycle. The Bulldozer
  can handle (1-1-1-1) and (2-1-1), but not (2-2).

I.e. e.g. this is incorrect: https://godbolt.org/z/pT2Tgz

* Instructions that generate more than two macro-ops are using microcode.
  The decoders cannot do anything else while microcode is generated.
  This means that a decoder can stop decoding for several clock cycles
  after meeting an instruction that generates more than two macro-ops. 

Interestingly, this seems to be already handled? https://godbolt.org/z/HUJH1R

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20190609/f850684e/attachment.html>


More information about the llvm-bugs mailing list