Skip to content

Commit 1dedc96

Browse files
[RISCV][llvm-mca] Add mca tests for riscv lmul instruments
Add llvm-mca tests for RISCV LMUL instruments to show that llvm-mca RISCV LMUL instruments work. Differential Revision: https://reviews.llvm.org/D149496
1 parent ea7ee9d commit 1dedc96

10 files changed

+561
-0
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2+
# RUN: llvm-mca -mtriple=riscv64 -mcpu=sifive-x280 -timeline -iterations=1 < %s | FileCheck %s
3+
4+
vsetvli zero, a0, e8, m1, tu, mu
5+
# LLVM-MCA-RISCV-LMUL M1
6+
vadd.vv v12, v12, v12
7+
vsetvli zero, a0, e8, m8, tu, mu
8+
# LLVM-MCA-RISCV-LMUL M8
9+
vadd.vv v12, v12, v12
10+
11+
# CHECK: Iterations: 1
12+
# CHECK-NEXT: Instructions: 4
13+
# CHECK-NEXT: Total Cycles: 12
14+
# CHECK-NEXT: Total uOps: 4
15+
16+
# CHECK: Dispatch Width: 2
17+
# CHECK-NEXT: uOps Per Cycle: 0.33
18+
# CHECK-NEXT: IPC: 0.33
19+
# CHECK-NEXT: Block RThroughput: 18.0
20+
21+
# CHECK: Instruction Info:
22+
# CHECK-NEXT: [1]: #uOps
23+
# CHECK-NEXT: [2]: Latency
24+
# CHECK-NEXT: [3]: RThroughput
25+
# CHECK-NEXT: [4]: MayLoad
26+
# CHECK-NEXT: [5]: MayStore
27+
# CHECK-NEXT: [6]: HasSideEffects (U)
28+
29+
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
30+
# CHECK-NEXT: 1 3 1.00 U vsetvli zero, a0, e8, m1, tu, mu
31+
# CHECK-NEXT: 1 4 16.00 vadd.vv v12, v12, v12
32+
# CHECK-NEXT: 1 3 1.00 U vsetvli zero, a0, e8, m8, tu, mu
33+
# CHECK-NEXT: 1 4 16.00 vadd.vv v12, v12, v12
34+
35+
# CHECK: Resources:
36+
# CHECK-NEXT: [0] - SiFive7FDiv
37+
# CHECK-NEXT: [1] - SiFive7IDiv
38+
# CHECK-NEXT: [2] - SiFive7PipeA
39+
# CHECK-NEXT: [3] - SiFive7PipeB
40+
# CHECK-NEXT: [4] - SiFive7PipeV
41+
# CHECK-NEXT: [5] - SiFive7VA
42+
# CHECK-NEXT: [6] - SiFive7VL
43+
# CHECK-NEXT: [7] - SiFive7VS
44+
45+
# CHECK: Resource pressure per iteration:
46+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7]
47+
# CHECK-NEXT: - - 2.00 - 18.00 18.00 - -
48+
49+
# CHECK: Resource pressure by instruction:
50+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions:
51+
# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, a0, e8, m1, tu, mu
52+
# CHECK-NEXT: - - - - 2.00 2.00 - - vadd.vv v12, v12, v12
53+
# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, a0, e8, m8, tu, mu
54+
# CHECK-NEXT: - - - - 16.00 16.00 - - vadd.vv v12, v12, v12
55+
56+
# CHECK: Timeline view:
57+
# CHECK-NEXT: 01
58+
# CHECK-NEXT: Index 0123456789
59+
60+
# CHECK: [0,0] DeeE . .. vsetvli zero, a0, e8, m1, tu, mu
61+
# CHECK-NEXT: [0,1] . DeeeE .. vadd.vv v12, v12, v12
62+
# CHECK-NEXT: [0,2] . DeeE .. vsetvli zero, a0, e8, m8, tu, mu
63+
# CHECK-NEXT: [0,3] . . DeeeE vadd.vv v12, v12, v12
64+
65+
# CHECK: Average Wait times (based on the timeline view):
66+
# CHECK-NEXT: [0]: Executions
67+
# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
68+
# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
69+
# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
70+
71+
# CHECK: [0] [1] [2] [3]
72+
# CHECK-NEXT: 0. 1 0.0 0.0 0.0 vsetvli zero, a0, e8, m1, tu, mu
73+
# CHECK-NEXT: 1. 1 0.0 0.0 0.0 vadd.vv v12, v12, v12
74+
# CHECK-NEXT: 2. 1 0.0 0.0 0.0 vsetvli zero, a0, e8, m8, tu, mu
75+
# CHECK-NEXT: 3. 1 0.0 0.0 0.0 vadd.vv v12, v12, v12
76+
# CHECK-NEXT: 1 0.0 0.0 0.0 <total>
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2+
# RUN: llvm-mca -mtriple=riscv64 -mcpu=sifive-x280 -timeline -iterations=1 -disable-im < %s | FileCheck %s
3+
4+
vsetvli zero, a0, e8, m2, tu, mu
5+
# LLVM-MCA-RISCV-LMUL M2
6+
vadd.vv v12, v12, v12
7+
vsetvli zero, a0, e8, m1, tu, mu
8+
# LLVM-MCA-RISCV-LMUL M1
9+
vadd.vv v12, v12, v12
10+
vsetvli zero, a0, e8, m8, tu, mu
11+
# LLVM-MCA-RISCV-LMUL M8
12+
vadd.vv v12, v12, v12
13+
14+
# CHECK: Iterations: 1
15+
# CHECK-NEXT: Instructions: 6
16+
# CHECK-NEXT: Total Cycles: 40
17+
# CHECK-NEXT: Total uOps: 6
18+
19+
# CHECK: Dispatch Width: 2
20+
# CHECK-NEXT: uOps Per Cycle: 0.15
21+
# CHECK-NEXT: IPC: 0.15
22+
# CHECK-NEXT: Block RThroughput: 48.0
23+
24+
# CHECK: Instruction Info:
25+
# CHECK-NEXT: [1]: #uOps
26+
# CHECK-NEXT: [2]: Latency
27+
# CHECK-NEXT: [3]: RThroughput
28+
# CHECK-NEXT: [4]: MayLoad
29+
# CHECK-NEXT: [5]: MayStore
30+
# CHECK-NEXT: [6]: HasSideEffects (U)
31+
32+
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
33+
# CHECK-NEXT: 1 3 1.00 U vsetvli zero, a0, e8, m2, tu, mu
34+
# CHECK-NEXT: 1 4 16.00 vadd.vv v12, v12, v12
35+
# CHECK-NEXT: 1 3 1.00 U vsetvli zero, a0, e8, m1, tu, mu
36+
# CHECK-NEXT: 1 4 16.00 vadd.vv v12, v12, v12
37+
# CHECK-NEXT: 1 3 1.00 U vsetvli zero, a0, e8, m8, tu, mu
38+
# CHECK-NEXT: 1 4 16.00 vadd.vv v12, v12, v12
39+
40+
# CHECK: Resources:
41+
# CHECK-NEXT: [0] - SiFive7FDiv
42+
# CHECK-NEXT: [1] - SiFive7IDiv
43+
# CHECK-NEXT: [2] - SiFive7PipeA
44+
# CHECK-NEXT: [3] - SiFive7PipeB
45+
# CHECK-NEXT: [4] - SiFive7PipeV
46+
# CHECK-NEXT: [5] - SiFive7VA
47+
# CHECK-NEXT: [6] - SiFive7VL
48+
# CHECK-NEXT: [7] - SiFive7VS
49+
50+
# CHECK: Resource pressure per iteration:
51+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7]
52+
# CHECK-NEXT: - - 3.00 - 48.00 48.00 - -
53+
54+
# CHECK: Resource pressure by instruction:
55+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions:
56+
# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, a0, e8, m2, tu, mu
57+
# CHECK-NEXT: - - - - 16.00 16.00 - - vadd.vv v12, v12, v12
58+
# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, a0, e8, m1, tu, mu
59+
# CHECK-NEXT: - - - - 16.00 16.00 - - vadd.vv v12, v12, v12
60+
# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, a0, e8, m8, tu, mu
61+
# CHECK-NEXT: - - - - 16.00 16.00 - - vadd.vv v12, v12, v12
62+
63+
# CHECK: Timeline view:
64+
# CHECK-NEXT: 0123456789 0123456789
65+
# CHECK-NEXT: Index 0123456789 0123456789
66+
67+
# CHECK: [0,0] DeeE . . . . . . . . vsetvli zero, a0, e8, m2, tu, mu
68+
# CHECK-NEXT: [0,1] . DeeeE . . . . . . . vadd.vv v12, v12, v12
69+
# CHECK-NEXT: [0,2] . DeeE . . . . . . . vsetvli zero, a0, e8, m1, tu, mu
70+
# CHECK-NEXT: [0,3] . . . . DeeeE . . . . vadd.vv v12, v12, v12
71+
# CHECK-NEXT: [0,4] . . . . DeeE . . . . vsetvli zero, a0, e8, m8, tu, mu
72+
# CHECK-NEXT: [0,5] . . . . . . . DeeeE vadd.vv v12, v12, v12
73+
74+
# CHECK: Average Wait times (based on the timeline view):
75+
# CHECK-NEXT: [0]: Executions
76+
# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
77+
# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
78+
# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
79+
80+
# CHECK: [0] [1] [2] [3]
81+
# CHECK-NEXT: 0. 1 0.0 0.0 0.0 vsetvli zero, a0, e8, m2, tu, mu
82+
# CHECK-NEXT: 1. 1 0.0 0.0 0.0 vadd.vv v12, v12, v12
83+
# CHECK-NEXT: 2. 1 0.0 0.0 0.0 vsetvli zero, a0, e8, m1, tu, mu
84+
# CHECK-NEXT: 3. 1 0.0 0.0 0.0 vadd.vv v12, v12, v12
85+
# CHECK-NEXT: 4. 1 0.0 0.0 0.0 vsetvli zero, a0, e8, m8, tu, mu
86+
# CHECK-NEXT: 5. 1 0.0 0.0 0.0 vadd.vv v12, v12, v12
87+
# CHECK-NEXT: 1 0.0 0.0 0.0 <total>
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2+
# RUN: llvm-mca -mtriple=riscv64 -mcpu=sifive-x280 -timeline -iterations=1 < %s | FileCheck %s
3+
4+
vsetvli zero, a0, e8, m1, tu, mu
5+
# LLVM-MCA-RISCV-LMUL M1
6+
vadd.vv v12, v12, v12
7+
8+
# CHECK: Iterations: 1
9+
# CHECK-NEXT: Instructions: 2
10+
# CHECK-NEXT: Total Cycles: 8
11+
# CHECK-NEXT: Total uOps: 2
12+
13+
# CHECK: Dispatch Width: 2
14+
# CHECK-NEXT: uOps Per Cycle: 0.25
15+
# CHECK-NEXT: IPC: 0.25
16+
# CHECK-NEXT: Block RThroughput: 2.0
17+
18+
# CHECK: Instruction Info:
19+
# CHECK-NEXT: [1]: #uOps
20+
# CHECK-NEXT: [2]: Latency
21+
# CHECK-NEXT: [3]: RThroughput
22+
# CHECK-NEXT: [4]: MayLoad
23+
# CHECK-NEXT: [5]: MayStore
24+
# CHECK-NEXT: [6]: HasSideEffects (U)
25+
26+
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
27+
# CHECK-NEXT: 1 3 1.00 U vsetvli zero, a0, e8, m1, tu, mu
28+
# CHECK-NEXT: 1 4 16.00 vadd.vv v12, v12, v12
29+
30+
# CHECK: Resources:
31+
# CHECK-NEXT: [0] - SiFive7FDiv
32+
# CHECK-NEXT: [1] - SiFive7IDiv
33+
# CHECK-NEXT: [2] - SiFive7PipeA
34+
# CHECK-NEXT: [3] - SiFive7PipeB
35+
# CHECK-NEXT: [4] - SiFive7PipeV
36+
# CHECK-NEXT: [5] - SiFive7VA
37+
# CHECK-NEXT: [6] - SiFive7VL
38+
# CHECK-NEXT: [7] - SiFive7VS
39+
40+
# CHECK: Resource pressure per iteration:
41+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7]
42+
# CHECK-NEXT: - - 1.00 - 2.00 2.00 - -
43+
44+
# CHECK: Resource pressure by instruction:
45+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions:
46+
# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, a0, e8, m1, tu, mu
47+
# CHECK-NEXT: - - - - 2.00 2.00 - - vadd.vv v12, v12, v12
48+
49+
# CHECK: Timeline view:
50+
# CHECK-NEXT: Index 01234567
51+
52+
# CHECK: [0,0] DeeE . . vsetvli zero, a0, e8, m1, tu, mu
53+
# CHECK-NEXT: [0,1] . DeeeE vadd.vv v12, v12, v12
54+
55+
# CHECK: Average Wait times (based on the timeline view):
56+
# CHECK-NEXT: [0]: Executions
57+
# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
58+
# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
59+
# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
60+
61+
# CHECK: [0] [1] [2] [3]
62+
# CHECK-NEXT: 0. 1 0.0 0.0 0.0 vsetvli zero, a0, e8, m1, tu, mu
63+
# CHECK-NEXT: 1. 1 0.0 0.0 0.0 vadd.vv v12, v12, v12
64+
# CHECK-NEXT: 1 0.0 0.0 0.0 <total>
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2+
# RUN: llvm-mca -mtriple=riscv64 -mcpu=sifive-x280 -timeline -iterations=1 < %s | FileCheck %s
3+
4+
vadd.vv v12, v12, v12
5+
vsetvli zero, a0, e8, m8, tu, mu
6+
# LLVM-MCA-RISCV-LMUL MF8
7+
vadd.vv v12, v12, v12
8+
9+
# CHECK: Iterations: 1
10+
# CHECK-NEXT: Instructions: 3
11+
# CHECK-NEXT: Total Cycles: 21
12+
# CHECK-NEXT: Total uOps: 3
13+
14+
# CHECK: Dispatch Width: 2
15+
# CHECK-NEXT: uOps Per Cycle: 0.14
16+
# CHECK-NEXT: IPC: 0.14
17+
# CHECK-NEXT: Block RThroughput: 17.0
18+
19+
# CHECK: Instruction Info:
20+
# CHECK-NEXT: [1]: #uOps
21+
# CHECK-NEXT: [2]: Latency
22+
# CHECK-NEXT: [3]: RThroughput
23+
# CHECK-NEXT: [4]: MayLoad
24+
# CHECK-NEXT: [5]: MayStore
25+
# CHECK-NEXT: [6]: HasSideEffects (U)
26+
27+
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
28+
# CHECK-NEXT: 1 4 16.00 vadd.vv v12, v12, v12
29+
# CHECK-NEXT: 1 3 1.00 U vsetvli zero, a0, e8, m8, tu, mu
30+
# CHECK-NEXT: 1 4 16.00 vadd.vv v12, v12, v12
31+
32+
# CHECK: Resources:
33+
# CHECK-NEXT: [0] - SiFive7FDiv
34+
# CHECK-NEXT: [1] - SiFive7IDiv
35+
# CHECK-NEXT: [2] - SiFive7PipeA
36+
# CHECK-NEXT: [3] - SiFive7PipeB
37+
# CHECK-NEXT: [4] - SiFive7PipeV
38+
# CHECK-NEXT: [5] - SiFive7VA
39+
# CHECK-NEXT: [6] - SiFive7VL
40+
# CHECK-NEXT: [7] - SiFive7VS
41+
42+
# CHECK: Resource pressure per iteration:
43+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7]
44+
# CHECK-NEXT: - - 1.00 - 17.00 17.00 - -
45+
46+
# CHECK: Resource pressure by instruction:
47+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions:
48+
# CHECK-NEXT: - - - - 16.00 16.00 - - vadd.vv v12, v12, v12
49+
# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, a0, e8, m8, tu, mu
50+
# CHECK-NEXT: - - - - 1.00 1.00 - - vadd.vv v12, v12, v12
51+
52+
# CHECK: Timeline view:
53+
# CHECK-NEXT: 0123456789
54+
# CHECK-NEXT: Index 0123456789 0
55+
56+
# CHECK: [0,0] DeeeE. . . . vadd.vv v12, v12, v12
57+
# CHECK-NEXT: [0,1] .DeeE. . . . vsetvli zero, a0, e8, m8, tu, mu
58+
# CHECK-NEXT: [0,2] . . . .DeeeE vadd.vv v12, v12, v12
59+
60+
# CHECK: Average Wait times (based on the timeline view):
61+
# CHECK-NEXT: [0]: Executions
62+
# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
63+
# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
64+
# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
65+
66+
# CHECK: [0] [1] [2] [3]
67+
# CHECK-NEXT: 0. 1 0.0 0.0 0.0 vadd.vv v12, v12, v12
68+
# CHECK-NEXT: 1. 1 0.0 0.0 0.0 vsetvli zero, a0, e8, m8, tu, mu
69+
# CHECK-NEXT: 2. 1 0.0 0.0 0.0 vadd.vv v12, v12, v12
70+
# CHECK-NEXT: 1 0.0 0.0 0.0 <total>
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2+
# RUN: llvm-mca -mtriple=riscv64 -mcpu=sifive-x280 -timeline -iterations=1 < %s | FileCheck %s
3+
4+
# LLVM-MCA-BEGIN foo
5+
vsetvli zero, a0, e8, m1, tu, mu
6+
# LLVM-MCA-RISCV-LMUL M1
7+
vadd.vv v12, v12, v12
8+
# LLVM-MCA-END foo
9+
10+
# CHECK: [0] Code Region - foo
11+
12+
# CHECK: Iterations: 1
13+
# CHECK-NEXT: Instructions: 2
14+
# CHECK-NEXT: Total Cycles: 8
15+
# CHECK-NEXT: Total uOps: 2
16+
17+
# CHECK: Dispatch Width: 2
18+
# CHECK-NEXT: uOps Per Cycle: 0.25
19+
# CHECK-NEXT: IPC: 0.25
20+
# CHECK-NEXT: Block RThroughput: 2.0
21+
22+
# CHECK: Instruction Info:
23+
# CHECK-NEXT: [1]: #uOps
24+
# CHECK-NEXT: [2]: Latency
25+
# CHECK-NEXT: [3]: RThroughput
26+
# CHECK-NEXT: [4]: MayLoad
27+
# CHECK-NEXT: [5]: MayStore
28+
# CHECK-NEXT: [6]: HasSideEffects (U)
29+
30+
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
31+
# CHECK-NEXT: 1 3 1.00 U vsetvli zero, a0, e8, m1, tu, mu
32+
# CHECK-NEXT: 1 4 16.00 vadd.vv v12, v12, v12
33+
34+
# CHECK: Resources:
35+
# CHECK-NEXT: [0] - SiFive7FDiv
36+
# CHECK-NEXT: [1] - SiFive7IDiv
37+
# CHECK-NEXT: [2] - SiFive7PipeA
38+
# CHECK-NEXT: [3] - SiFive7PipeB
39+
# CHECK-NEXT: [4] - SiFive7PipeV
40+
# CHECK-NEXT: [5] - SiFive7VA
41+
# CHECK-NEXT: [6] - SiFive7VL
42+
# CHECK-NEXT: [7] - SiFive7VS
43+
44+
# CHECK: Resource pressure per iteration:
45+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7]
46+
# CHECK-NEXT: - - 1.00 - 2.00 2.00 - -
47+
48+
# CHECK: Resource pressure by instruction:
49+
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions:
50+
# CHECK-NEXT: - - 1.00 - - - - - vsetvli zero, a0, e8, m1, tu, mu
51+
# CHECK-NEXT: - - - - 2.00 2.00 - - vadd.vv v12, v12, v12
52+
53+
# CHECK: Timeline view:
54+
# CHECK-NEXT: Index 01234567
55+
56+
# CHECK: [0,0] DeeE . . vsetvli zero, a0, e8, m1, tu, mu
57+
# CHECK-NEXT: [0,1] . DeeeE vadd.vv v12, v12, v12
58+
59+
# CHECK: Average Wait times (based on the timeline view):
60+
# CHECK-NEXT: [0]: Executions
61+
# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
62+
# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
63+
# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
64+
65+
# CHECK: [0] [1] [2] [3]
66+
# CHECK-NEXT: 0. 1 0.0 0.0 0.0 vsetvli zero, a0, e8, m1, tu, mu
67+
# CHECK-NEXT: 1. 1 0.0 0.0 0.0 vadd.vv v12, v12, v12
68+
# CHECK-NEXT: 1 0.0 0.0 0.0 <total>

0 commit comments

Comments
 (0)