llvm/llvm-project

[llvm-mca][FeatureRequest] In timeline graph, note source of delay for each instruction

Open

#123,756 opened on 2025年1月21日

GitHub で見る
 (18 comments) (1 reaction) (1 assignee)C++ (10,782 forks)batch import
enhancementgood first issuetools:llvm-mca

Repository metrics

Stars
 (26,378 stars)
PR merge metrics
 (平均マージ 1d 2h) (30d で 1,000 merged PRs)

説明

Currently, the timeline graph looks like this:

Timeline view:
                    012345
Index     0123456789

[0,0]     DeeER.    .    .   vmulps   %xmm0, %xmm1, %xmm2
[0,1]     D==eeeER  .    .   vhaddps  %xmm2, %xmm2, %xmm3
[0,2]     .D====eeeER    .   vhaddps  %xmm3, %xmm3, %xmm4
[1,0]     .DeeE-----R    .   vmulps   %xmm0, %xmm1, %xmm2
[1,1]     . D=eeeE---R   .   vhaddps  %xmm2, %xmm2, %xmm3
[1,2]     . D====eeeER   .   vhaddps  %xmm3, %xmm3, %xmm4
[2,0]     .  DeeE-----R  .   vmulps   %xmm0, %xmm1, %xmm2
[2,1]     .  D====eeeER  .   vhaddps  %xmm2, %xmm2, %xmm3
[2,2]     .   D======eeeER   vhaddps  %xmm3, %xmm3, %xmm4

The value = means an instruction is dispatched but it cannot execute. There are two reasons why an instruction cannot execute:

  • It is waiting for data from some previous instruction (dependency)
  • It is waiting for available HW resource (resource pressure)

Instead of using = for both reasons, consider using one character (e.g. =) for dependency stall, and another character (e.g. _) for resource pressure stall.

コントリビューターガイド