Skip to content

Commit cae650e

Browse files
[RISCV] Rework IDiv and FDiv pipes on SiFive7 (#73970)
Set BufferSize=0 and remove Super pipes for these resources.
1 parent 4d4c30a commit cae650e

File tree

2 files changed

+67
-2
lines changed

2 files changed

+67
-2
lines changed

llvm/lib/Target/RISCV/RISCVSchedSiFive7.td

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,12 +213,12 @@ let SchedModel = SiFive7Model in {
213213
let BufferSize = 0 in {
214214
def SiFive7PipeA : ProcResource<1>;
215215
def SiFive7PipeB : ProcResource<1>;
216+
def SiFive7IDiv : ProcResource<1>; // Int Division
217+
def SiFive7FDiv : ProcResource<1>; // FP Division/Sqrt
216218
def SiFive7PipeV : ProcResource<1>;
217219
}
218220

219221
let BufferSize = 1 in {
220-
def SiFive7IDiv : ProcResource<1> { let Super = SiFive7PipeB; } // Int Division
221-
def SiFive7FDiv : ProcResource<1> { let Super = SiFive7PipeB; } // FP Division/Sqrt
222222
def SiFive7VA : ProcResource<1> { let Super = SiFive7PipeV; } // Arithmetic sequencer
223223
def SiFive7VL : ProcResource<1> { let Super = SiFive7PipeV; } // Load sequencer
224224
def SiFive7VS : ProcResource<1> { let Super = SiFive7PipeV; } // Store sequencer
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2+
# RUN: llvm-mca -mtriple=riscv64 -mcpu=sifive-u74 -timeline -iterations=1 < %s \
3+
# RUN: | FileCheck %s
4+
5+
div a0, a1, a2
6+
fdiv.s f1, f2, f3
7+
8+
# CHECK: Iterations: 1
9+
# CHECK-NEXT: Instructions: 2
10+
# CHECK-NEXT: Total Cycles: 67
11+
# CHECK-NEXT: Total uOps: 2
12+
13+
# CHECK: Dispatch Width: 2
14+
# CHECK-NEXT: uOps Per Cycle: 0.03
15+
# CHECK-NEXT: IPC: 0.03
16+
# CHECK-NEXT: Block RThroughput: 65.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 66 65.00 div a0, a1, a2
28+
# CHECK-NEXT: 1 27 26.00 fdiv.s ft1, ft2, ft3
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: 26.00 65.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: - 65.00 - 1.00 - - - - div a0, a1, a2
47+
# CHECK-NEXT: 26.00 - - 1.00 - - - - fdiv.s ft1, ft2, ft3
48+
49+
# CHECK: Timeline view:
50+
# CHECK-NEXT: 0123456789 0123456789 0123456789
51+
# CHECK-NEXT: Index 0123456789 0123456789 0123456789 0123456
52+
53+
# CHECK: [0,0] DeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeE div a0, a1, a2
54+
# CHECK-NEXT: [0,1] . . . . . . . . DeeeeeeeeeeeeeeeeeeeeeeeeeeE fdiv.s ft1, ft2, ft3
55+
56+
# CHECK: Average Wait times (based on the timeline view):
57+
# CHECK-NEXT: [0]: Executions
58+
# CHECK-NEXT: [1]: Average time spent waiting in a scheduler's queue
59+
# CHECK-NEXT: [2]: Average time spent waiting in a scheduler's queue while ready
60+
# CHECK-NEXT: [3]: Average time elapsed from WB until retire stage
61+
62+
# CHECK: [0] [1] [2] [3]
63+
# CHECK-NEXT: 0. 1 0.0 0.0 0.0 div a0, a1, a2
64+
# CHECK-NEXT: 1. 1 0.0 0.0 0.0 fdiv.s ft1, ft2, ft3
65+
# CHECK-NEXT: 1 0.0 0.0 0.0 <total>

0 commit comments

Comments
 (0)