1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
# RUN: llvm-mca -mtriple=aarch64 -mcpu=tsv110 --instruction-info=0 --resource-pressure=0 --timeline --iterations=1 < %s | FileCheck %s
# LLVM-MCA-BEGIN madd nobypass
mul x0, x1, x2
add x0, x0, x1
add x0, x0, x1
add x0, x0, x1
# LLVM-MCA-END
# LLVM-MCA-BEGIN madd bypass
mul x0, x1, x2
madd x0, x1, x2, x0
madd x0, x1, x2, x0
madd x0, x0, x0, x0
# LLVM-MCA-END
# CHECK: [0] Code Region - madd nobypass
# CHECK: Iterations: 1
# CHECK-NEXT: Instructions: 4
# CHECK-NEXT: Total Cycles: 10
# CHECK-NEXT: Total uOps: 4
# CHECK: Dispatch Width: 4
# CHECK-NEXT: uOps Per Cycle: 0.40
# CHECK-NEXT: IPC: 0.40
# CHECK-NEXT: Block RThroughput: 1.0
# CHECK: Timeline view:
# CHECK-NEXT: Index 0123456789
# CHECK: [0,0] DeeeeER . mul x0, x1, x2
# CHECK-NEXT: [0,1] D====eER . add x0, x0, x1
# CHECK-NEXT: [0,2] D=====eER. add x0, x0, x1
# CHECK-NEXT: [0,3] D======eER add x0, x0, x1
# CHECK: Average Wait times (based on the timeline view):
# CHECK-NEXT: [0]: Executions
# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
# CHECK: [0] [1] [2] [3]
# CHECK-NEXT: 0. 1 1.0 1.0 0.0 mul x0, x1, x2
# CHECK-NEXT: 1. 1 5.0 0.0 0.0 add x0, x0, x1
# CHECK-NEXT: 2. 1 6.0 0.0 0.0 add x0, x0, x1
# CHECK-NEXT: 3. 1 7.0 0.0 0.0 add x0, x0, x1
# CHECK-NEXT: 1 4.8 0.3 0.0 <total>
# CHECK: [1] Code Region - madd bypass
# CHECK: Iterations: 1
# CHECK-NEXT: Instructions: 4
# CHECK-NEXT: Total Cycles: 13
# CHECK-NEXT: Total uOps: 4
# CHECK: Dispatch Width: 4
# CHECK-NEXT: uOps Per Cycle: 0.31
# CHECK-NEXT: IPC: 0.31
# CHECK-NEXT: Block RThroughput: 4.0
# CHECK: Timeline view:
# CHECK-NEXT: 012
# CHECK-NEXT: Index 0123456789
# CHECK: [0,0] DeeeeER . . mul x0, x1, x2
# CHECK-NEXT: [0,1] D=eeeeER . . madd x0, x1, x2, x0
# CHECK-NEXT: [0,2] D==eeeeER . . madd x0, x1, x2, x0
# CHECK-NEXT: [0,3] D======eeeeER madd x0, x0, x0, x0
# CHECK: Average Wait times (based on the timeline view):
# CHECK-NEXT: [0]: Executions
# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
# CHECK: [0] [1] [2] [3]
# CHECK-NEXT: 0. 1 1.0 1.0 0.0 mul x0, x1, x2
# CHECK-NEXT: 1. 1 2.0 0.0 0.0 madd x0, x1, x2, x0
# CHECK-NEXT: 2. 1 3.0 0.0 0.0 madd x0, x1, x2, x0
# CHECK-NEXT: 3. 1 7.0 0.0 0.0 madd x0, x0, x0, x0
# CHECK-NEXT: 1 3.3 0.3 0.0 <total>
|