Commit beebe5a0 authored by Jay Foad's avatar Jay Foad
Browse files

[MCA] Allow unlimited cycles in the timeline view

Change --max-timeline-cycles=0 to mean no limit on the number of cycles.
Use this in AMDGPU tests to show all instructions in the timeline view
instead of having it arbitrarily truncated.

Differential Revision: https://reviews.llvm.org/D104846
parent a54c6fc0
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -148,8 +148,8 @@ option specifies "``-``", then the output will also be sent to standard output.

.. option:: -timeline-max-cycles=<cycles>

  Limit the number of cycles in the timeline view. By default, the number of
  cycles is set to 80.
  Limit the number of cycles in the timeline view, or use 0 for no limit. By
  default, the number of cycles is set to 80.

.. option:: -resource-pressure

+1 −1
Original line number Diff line number Diff line
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
# RUN: llvm-mca -mtriple=amdgcn -mcpu=gfx1010 --timeline --iterations=1 < %s | FileCheck %s
# RUN: llvm-mca -mtriple=amdgcn -mcpu=gfx1010 --timeline --iterations=1 --timeline-max-cycles=0 < %s | FileCheck %s

v_add_f32 v0, v0, v0
v_add_f32 v1, v1, v1
+32 −17
Original line number Diff line number Diff line
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
# RUN: llvm-mca -mtriple=amdgcn -mcpu=gfx1010 --timeline --iterations=1 < %s | FileCheck %s
# RUN: llvm-mca -mtriple=amdgcn -mcpu=gfx1010 --timeline --iterations=1 --timeline-max-cycles=0 < %s | FileCheck %s

v_cvt_i32_f64 v0, v[0:1]
v_cvt_f64_i32 v[2:3], v2
@@ -133,22 +133,37 @@ v_sqrt_f64 v[4:5], v[4:5]
# CHECK-NEXT:  -      -      -     1.00    -     1.00   1.00    -     v_sqrt_f64_e32 v[4:5], v[4:5]

# CHECK:      Timeline view:
# CHECK-NEXT:                     0123456789          0123456789          0123456789          0
# CHECK-NEXT: Index     0123456789          0123456789          0123456789          0123456789

# CHECK:      [0,0]     DeeeeeeeeeeeeeeeeeeeeeE  .    .    .    .    .    .    .    .    .    .   v_cvt_i32_f64_e32 v0, v[0:1]
# CHECK-NEXT: [0,1]     .DeeeeeeeeeeeeeeeeeeeeeE .    .    .    .    .    .    .    .    .    .   v_cvt_f64_i32_e32 v[2:3], v2
# CHECK-NEXT: [0,2]     . DeeeeeeeeeeeeeeeeeeeeeE.    .    .    .    .    .    .    .    .    .   v_cvt_f32_f64_e32 v4, v[4:5]
# CHECK-NEXT: [0,3]     .  DeeeeeeeeeeeeeeeeeeeeeE    .    .    .    .    .    .    .    .    .   v_cvt_f64_f32_e32 v[6:7], v6
# CHECK-NEXT: [0,4]     .   DeeeeeeeeeeeeeeeeeeeeeE   .    .    .    .    .    .    .    .    .   v_cvt_u32_f64_e32 v8, v[8:9]
# CHECK-NEXT: [0,5]     .    DeeeeeeeeeeeeeeeeeeeeeE  .    .    .    .    .    .    .    .    .   v_cvt_f64_u32_e32 v[10:11], v10
# CHECK-NEXT: [0,6]     .    .    .    .    . DeeeeeeeeeeeeeeeeeeeeeE.    .    .    .    .    .   v_frexp_exp_i32_f64_e32 v0, v[0:1]
# CHECK-NEXT: [0,7]     .    .    .    .    .  DeeeeeeeeeeeeeeeeeeeeeE    .    .    .    .    .   v_frexp_mant_f64_e32 v[2:3], v[2:3]
# CHECK-NEXT: [0,8]     .    .    .    .    .   DeeeeeeeeeeeeeeeeeeeeeE   .    .    .    .    .   v_fract_f64_e32 v[4:5], v[4:5]
# CHECK-NEXT: [0,9]     .    .    .    .    .    .    .    .    .   DeeeeeeeeeeeeeeeeeeeeeE   .   v_trunc_f64_e32 v[0:1], v[0:1]
# CHECK-NEXT: [0,10]    .    .    .    .    .    .    .    .    .    DeeeeeeeeeeeeeeeeeeeeeE  .   v_ceil_f64_e32 v[2:3], v[2:3]
# CHECK-NEXT: [0,11]    .    .    .    .    .    .    .    .    .    .DeeeeeeeeeeeeeeeeeeeeeE .   v_rndne_f64_e32 v[4:5], v[4:5]
# CHECK-NEXT: [0,12]    .    .    .    .    .    .    .    .    .    . DeeeeeeeeeeeeeeeeeeeeeE.   v_floor_f64_e32 v[6:7], v[6:7]
# CHECK-NEXT:                     0123456789          0123456789          0123456789          0123456789          0123456789          0123456789          0123456789          0123456789          0123456789          0123456789          0123456789
# CHECK-NEXT: Index     0123456789          0123456789          0123456789          0123456789          0123456789          0123456789          0123456789          0123456789          0123456789          0123456789          0123456789          0123

# CHECK:      [0,0]     DeeeeeeeeeeeeeeeeeeeeeE  .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_cvt_i32_f64_e32 v0, v[0:1]
# CHECK-NEXT: [0,1]     .DeeeeeeeeeeeeeeeeeeeeeE .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_cvt_f64_i32_e32 v[2:3], v2
# CHECK-NEXT: [0,2]     . DeeeeeeeeeeeeeeeeeeeeeE.    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_cvt_f32_f64_e32 v4, v[4:5]
# CHECK-NEXT: [0,3]     .  DeeeeeeeeeeeeeeeeeeeeeE    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_cvt_f64_f32_e32 v[6:7], v6
# CHECK-NEXT: [0,4]     .   DeeeeeeeeeeeeeeeeeeeeeE   .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_cvt_u32_f64_e32 v8, v[8:9]
# CHECK-NEXT: [0,5]     .    DeeeeeeeeeeeeeeeeeeeeeE  .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_cvt_f64_u32_e32 v[10:11], v10
# CHECK-NEXT: [0,6]     .    .    .    .    . DeeeeeeeeeeeeeeeeeeeeeE.    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_frexp_exp_i32_f64_e32 v0, v[0:1]
# CHECK-NEXT: [0,7]     .    .    .    .    .  DeeeeeeeeeeeeeeeeeeeeeE    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_frexp_mant_f64_e32 v[2:3], v[2:3]
# CHECK-NEXT: [0,8]     .    .    .    .    .   DeeeeeeeeeeeeeeeeeeeeeE   .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_fract_f64_e32 v[4:5], v[4:5]
# CHECK-NEXT: [0,9]     .    .    .    .    .    .    .    .    .   DeeeeeeeeeeeeeeeeeeeeeE   .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_trunc_f64_e32 v[0:1], v[0:1]
# CHECK-NEXT: [0,10]    .    .    .    .    .    .    .    .    .    DeeeeeeeeeeeeeeeeeeeeeE  .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_ceil_f64_e32 v[2:3], v[2:3]
# CHECK-NEXT: [0,11]    .    .    .    .    .    .    .    .    .    .DeeeeeeeeeeeeeeeeeeeeeE .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_rndne_f64_e32 v[4:5], v[4:5]
# CHECK-NEXT: [0,12]    .    .    .    .    .    .    .    .    .    . DeeeeeeeeeeeeeeeeeeeeeE.    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_floor_f64_e32 v[6:7], v[6:7]
# CHECK-NEXT: [0,13]    .    .    .    .    .    .    .    .    .    .    .    .    .    .DeeeeeeeeeeeeeeeeeeeeeE .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_fma_f64 v[0:1], v[0:1], v[0:1], v[0:1]
# CHECK-NEXT: [0,14]    .    .    .    .    .    .    .    .    .    .    .    .    .    . DeeeeeeeeeeeeeeeeeeeeeE.    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_add_f64 v[2:3], v[2:3], v[2:3]
# CHECK-NEXT: [0,15]    .    .    .    .    .    .    .    .    .    .    .    .    .    .  DeeeeeeeeeeeeeeeeeeeeeE    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_mul_f64 v[4:5], v[4:5], v[4:5]
# CHECK-NEXT: [0,16]    .    .    .    .    .    .    .    .    .    .    .    .    .    .   DeeeeeeeeeeeeeeeeeeeeeE   .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_min_f64 v[6:7], v[6:7], v[6:7]
# CHECK-NEXT: [0,17]    .    .    .    .    .    .    .    .    .    .    .    .    .    .    DeeeeeeeeeeeeeeeeeeeeeE  .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_max_f64 v[8:9], v[8:9], v[8:9]
# CHECK-NEXT: [0,18]    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  DeeeeeeeeeeeeeeeeeeeeeE    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_div_fmas_f64 v[0:1], v[0:1], v[0:1], v[0:1]
# CHECK-NEXT: [0,19]    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    DeeeeeeeeeeeeeeeeeeeeeE  .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_div_fixup_f64 v[0:1], v[0:1], v[0:1], v[0:1]
# CHECK-NEXT: [0,20]    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    . DeeeeeeeeeeeeeeeeeeeeeE.    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_ldexp_f64 v[2:3], v[2:3], v0
# CHECK-NEXT: [0,21]    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    . DeeeeeeeeeeeeeeeeeeeeeE.    .    .    .    .    .    .    .    .    .  .   v_div_scale_f64 v[0:1], vcc_lo, v[0:1], v[0:1], v[0:1]
# CHECK-NEXT: [0,22]    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .   DeeeeeeeeeeeeeeeeeeeeeE   .    .    .    .    .  .   v_trig_preop_f64 v[2:3], v[2:3], v0
# CHECK-NEXT: [0,23]    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    DeeeeeeeeeeeeeeeeeeeeeE  .    .    .    .    .  .   v_cmp_eq_f64_e32 vcc_lo, v[0:1], v[0:1]
# CHECK-NEXT: [0,24]    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .DeeeeeeeeeeeeeeeeeeeeeE .  .   v_cmp_class_f64_e64 vcc_lo, v[2:3], s0
# CHECK-NEXT: [0,25]    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    . DeeeeeeeeeeeeeeeeeeeeeeeE .   v_rcp_f64_e32 v[0:1], v[0:1]
# CHECK-NEXT: [0,26]    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  DeeeeeeeeeeeeeeeeeeeeeeeE.   v_rsq_f64_e32 v[2:3], v[2:3]
# CHECK-NEXT: [0,27]    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .   DeeeeeeeeeeeeeeeeeeeeeeeE   v_sqrt_f64_e32 v[4:5], v[4:5]

# CHECK:      Average Wait times (based on the timeline view):
# CHECK-NEXT: [0]: Executions
+10 −9
Original line number Diff line number Diff line
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
# RUN: llvm-mca -mtriple=amdgcn -mcpu=gfx1010 --timeline --iterations=1 < %s | FileCheck %s
# RUN: llvm-mca -mtriple=amdgcn -mcpu=gfx1010 --timeline --iterations=1 --timeline-max-cycles=0 < %s | FileCheck %s

v_log_f32 v0, v0
v_rcp_f32 v0, v0
@@ -61,15 +61,16 @@ v_sqrt_f64 v[2:3], v[0:1]
# CHECK-NEXT:  -      -      -     1.00    -     1.00   1.00    -     v_sqrt_f64_e32 v[2:3], v[0:1]

# CHECK:      Timeline view:
# CHECK-NEXT:                     0123456789          0123456789          0123456789
# CHECK-NEXT: Index     0123456789          0123456789          0123456789          0123456789
# CHECK-NEXT:                     0123456789          0123456789          0123456789          0123456789          0123
# CHECK-NEXT: Index     0123456789          0123456789          0123456789          0123456789          0123456789

# CHECK:      [0,0]     DeeeeeeeeeE    .    .    .    .    .    .    .    .    .    .    .   .   v_log_f32_e32 v0, v0
# CHECK-NEXT: [0,1]     .    .    DeeeeeeeeeE    .    .    .    .    .    .    .    .    .   .   v_rcp_f32_e32 v0, v0
# CHECK-NEXT: [0,2]     .    .    .DeeeeeeeeeE   .    .    .    .    .    .    .    .    .   .   v_rsq_f32_e32 v1, v1
# CHECK-NEXT: [0,3]     .    .    .    .    DeeeeeeeeeE    .    .    .    .    .    .    .   .   v_sqrt_f32_e32 v2, v0
# CHECK-NEXT: [0,4]     .    .    .    .    .DeeeeeeeeeeeeeeeeeeeeeeeE    .    .    .    .   .   v_rcp_f64_e32 v[0:1], v[0:1]
# CHECK-NEXT: [0,5]     .    .    .    .    .    .    .    .    .    DeeeeeeeeeeeeeeeeeeeeeeeE   v_rsq_f64_e32 v[1:2], v[1:2]
# CHECK:      [0,0]     DeeeeeeeeeE    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_log_f32_e32 v0, v0
# CHECK-NEXT: [0,1]     .    .    DeeeeeeeeeE    .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_rcp_f32_e32 v0, v0
# CHECK-NEXT: [0,2]     .    .    .DeeeeeeeeeE   .    .    .    .    .    .    .    .    .    .    .    .    .    .  .   v_rsq_f32_e32 v1, v1
# CHECK-NEXT: [0,3]     .    .    .    .    DeeeeeeeeeE    .    .    .    .    .    .    .    .    .    .    .    .  .   v_sqrt_f32_e32 v2, v0
# CHECK-NEXT: [0,4]     .    .    .    .    .DeeeeeeeeeeeeeeeeeeeeeeeE    .    .    .    .    .    .    .    .    .  .   v_rcp_f64_e32 v[0:1], v[0:1]
# CHECK-NEXT: [0,5]     .    .    .    .    .    .    .    .    .    DeeeeeeeeeeeeeeeeeeeeeeeE.    .    .    .    .  .   v_rsq_f64_e32 v[1:2], v[1:2]
# CHECK-NEXT: [0,6]     .    .    .    .    .    .    .    .    .    .    .    .    .    .   DeeeeeeeeeeeeeeeeeeeeeeeE   v_sqrt_f64_e32 v[2:3], v[0:1]

# CHECK:      Average Wait times (based on the timeline view):
# CHECK-NEXT: [0]: Executions
+2 −2
Original line number Diff line number Diff line
@@ -21,8 +21,8 @@ TimelineView::TimelineView(const MCSubtargetInfo &sti, MCInstPrinter &Printer,
                           llvm::ArrayRef<llvm::MCInst> S, unsigned Iterations,
                           unsigned Cycles)
    : InstructionView(sti, Printer, S), CurrentCycle(0),
      MaxCycle(Cycles == 0 ? 80 : Cycles), LastCycle(0), WaitTime(S.size()),
      UsedBuffer(S.size()) {
      MaxCycle(Cycles == 0 ? std::numeric_limits<unsigned>::max() : Cycles),
      LastCycle(0), WaitTime(S.size()), UsedBuffer(S.size()) {
  unsigned NumInstructions = getSource().size();
  assert(Iterations && "Invalid number of iterations specified!");
  NumInstructions *= Iterations;
Loading