Skip to content

Commit a1d8331

Browse files
authored
[AArch64] Change IssueWidth to 5 in AArch64SchedNeoverseN2.td (#145717)
It has been observed that the issue width for neoverse-n2 CPUs is set too high, and does not properly reflect the dispatch constraints. I tested various values of IssueWidth (10, 8, 6, 5, 4) with runs of various workloads on a neoverse-n2 machine and I got the highest overall geomean score with an issue width of 5. If this patch were to cause any major regression post-commit, it could be easily reverted, but it is likely to show an overall improvement. Related Neoverse-V2 PR: #142565
1 parent 18a0675 commit a1d8331

File tree

4 files changed

+2023
-2019
lines changed

4 files changed

+2023
-2019
lines changed

llvm/lib/Target/AArch64/AArch64SchedNeoverseN2.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
//===----------------------------------------------------------------------===//
1212

1313
def NeoverseN2Model : SchedMachineModel {
14-
let IssueWidth = 10; // Micro-ops dispatched at a time.
14+
let IssueWidth = 5; // Micro-ops dispatched at a time.
1515
let MicroOpBufferSize = 160; // Entries in micro-op re-order buffer.
1616
let LoadLatency = 4; // Optimistic load latency.
1717
let MispredictPenalty = 10; // Extra cycles for mispredicted branch.

llvm/test/CodeGen/AArch64/machine-combiner.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -262,8 +262,8 @@ define half @reassociate_adds_half(half %x0, half %x1, half %x2, half %x3) {
262262
; CHECK-UNSAFE-LABEL: reassociate_adds_half:
263263
; CHECK-UNSAFE: // %bb.0:
264264
; CHECK-UNSAFE-NEXT: fdiv h0, h0, h1
265-
; CHECK-UNSAFE-NEXT: fadd h2, h3, h2
266-
; CHECK-UNSAFE-NEXT: fadd h0, h2, h0
265+
; CHECK-UNSAFE-NEXT: fadd h1, h3, h2
266+
; CHECK-UNSAFE-NEXT: fadd h0, h1, h0
267267
; CHECK-UNSAFE-NEXT: ret
268268
%t0 = fdiv half %x0, %x1
269269
%t1 = fadd half %x2, %t0
@@ -284,8 +284,8 @@ define half @reassociate_muls_half(half %x0, half %x1, half %x2, half %x3) {
284284
; CHECK-UNSAFE-LABEL: reassociate_muls_half:
285285
; CHECK-UNSAFE: // %bb.0:
286286
; CHECK-UNSAFE-NEXT: fdiv h0, h0, h1
287-
; CHECK-UNSAFE-NEXT: fmul h2, h3, h2
288-
; CHECK-UNSAFE-NEXT: fmul h0, h2, h0
287+
; CHECK-UNSAFE-NEXT: fmul h1, h3, h2
288+
; CHECK-UNSAFE-NEXT: fmul h0, h1, h0
289289
; CHECK-UNSAFE-NEXT: ret
290290
%t0 = fdiv half %x0, %x1
291291
%t1 = fmul half %x2, %t0

llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-sve-instructions.s

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5066,19 +5066,19 @@ zip2 z31.s, z31.s, z31.s
50665066
# CHECK-NEXT: 2 2 1.00 movs p0.b, p0/z, p0.b
50675067
# CHECK-NEXT: 2 2 1.00 movs p15.b, p15.b
50685068
# CHECK-NEXT: 2 2 1.00 movs p15.b, p15/z, p15.b
5069-
# CHECK-NEXT: 1 1 0.10 U mrs x3, ID_AA64ZFR0_EL1
5070-
# CHECK-NEXT: 1 1 0.10 U mrs x3, ZCR_EL1
5071-
# CHECK-NEXT: 1 1 0.10 U mrs x3, ZCR_EL12
5072-
# CHECK-NEXT: 1 1 0.10 U mrs x3, ZCR_EL2
5073-
# CHECK-NEXT: 1 1 0.10 U mrs x3, ZCR_EL3
5069+
# CHECK-NEXT: 1 1 0.20 U mrs x3, ID_AA64ZFR0_EL1
5070+
# CHECK-NEXT: 1 1 0.20 U mrs x3, ZCR_EL1
5071+
# CHECK-NEXT: 1 1 0.20 U mrs x3, ZCR_EL12
5072+
# CHECK-NEXT: 1 1 0.20 U mrs x3, ZCR_EL2
5073+
# CHECK-NEXT: 1 1 0.20 U mrs x3, ZCR_EL3
50745074
# CHECK-NEXT: 1 4 1.00 msb z0.b, p7/m, z1.b, z31.b
50755075
# CHECK-NEXT: 2 5 2.00 msb z0.d, p7/m, z1.d, z31.d
50765076
# CHECK-NEXT: 1 4 1.00 msb z0.h, p7/m, z1.h, z31.h
50775077
# CHECK-NEXT: 1 4 1.00 msb z0.s, p7/m, z1.s, z31.s
5078-
# CHECK-NEXT: 1 1 0.10 U msr ZCR_EL1, x3
5079-
# CHECK-NEXT: 1 1 0.10 U msr ZCR_EL12, x3
5080-
# CHECK-NEXT: 1 1 0.10 U msr ZCR_EL2, x3
5081-
# CHECK-NEXT: 1 1 0.10 U msr ZCR_EL3, x3
5078+
# CHECK-NEXT: 1 1 0.20 U msr ZCR_EL1, x3
5079+
# CHECK-NEXT: 1 1 0.20 U msr ZCR_EL12, x3
5080+
# CHECK-NEXT: 1 1 0.20 U msr ZCR_EL2, x3
5081+
# CHECK-NEXT: 1 1 0.20 U msr ZCR_EL3, x3
50825082
# CHECK-NEXT: 1 4 1.00 mul z0.b, p7/m, z0.b, z31.b
50835083
# CHECK-NEXT: 1 4 1.00 mul z0.b, z1.b, z2.b
50845084
# CHECK-NEXT: 2 5 2.00 mul z0.d, p7/m, z0.d, z31.d

0 commit comments

Comments
 (0)