Skip to content

Commit 5de3118

Browse files
authored
[AMDGPU] Make the iterative schedulers selectable via amdgpu-sched-strategy (#135042)
Currently, the only way for users to try these schedulers is via `-misched=` . However, this overrides the default scheduler for all targets. This causes problems for various toolchains / drivers which spawn jobs for both x86 and AMDGPU -- e.g. hipcc. On the other hand, `amdgpu-sched-strategy` only changes the scheduler for AMDGPU target.
1 parent 01ee922 commit 5de3118

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1088,6 +1088,15 @@ GCNTargetMachine::createMachineScheduler(MachineSchedContext *C) const {
10881088
if (SchedStrategy == "max-memory-clause")
10891089
return createGCNMaxMemoryClauseMachineScheduler(C);
10901090

1091+
if (SchedStrategy == "iterative-ilp")
1092+
return createIterativeILPMachineScheduler(C);
1093+
1094+
if (SchedStrategy == "iterative-minreg")
1095+
return createMinRegScheduler(C);
1096+
1097+
if (SchedStrategy == "iterative-maxocc")
1098+
return createIterativeGCNMaxOccupancyMachineScheduler(C);
1099+
10911100
return createGCNMaxOccupancyMachineScheduler(C);
10921101
}
10931102

llvm/test/CodeGen/AMDGPU/schedule-regpressure-limit2.ll

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
; RUN: llc -mtriple=amdgcn -mcpu=tahiti -enable-amdgpu-aa=0 -misched=gcn-iterative-minreg -verify-machineinstrs < %s | FileCheck --check-prefix=SI-MINREG %s
22
; RUN: llc -mtriple=amdgcn -mcpu=tahiti -enable-amdgpu-aa=0 -misched=gcn-iterative-max-occupancy-experimental -verify-machineinstrs < %s | FileCheck --check-prefix=SI-MAXOCC %s
3+
; RUN: llc -mtriple=amdgcn -mcpu=tahiti -enable-amdgpu-aa=0 -amdgpu-sched-strategy=iterative-minreg -verify-machineinstrs < %s | FileCheck --check-prefix=SI-MINREG %s
4+
; RUN: llc -mtriple=amdgcn -mcpu=tahiti -enable-amdgpu-aa=0 -amdgpu-sched-strategy=iterative-maxocc -verify-machineinstrs < %s | FileCheck --check-prefix=SI-MAXOCC %s
35
; RUN: llc -mtriple=amdgcn -mcpu=fiji -enable-amdgpu-aa=0 -misched=gcn-iterative-minreg -verify-machineinstrs < %s | FileCheck --check-prefix=VI %s
46
; RUN: llc -mtriple=amdgcn -mcpu=fiji -enable-amdgpu-aa=0 -misched=gcn-iterative-max-occupancy-experimental -verify-machineinstrs < %s | FileCheck --check-prefix=VI %s
7+
; RUN: llc -mtriple=amdgcn -mcpu=fiji -enable-amdgpu-aa=0 -amdgpu-sched-strategy=iterative-minreg -verify-machineinstrs < %s | FileCheck --check-prefix=VI %s
8+
; RUN: llc -mtriple=amdgcn -mcpu=fiji -enable-amdgpu-aa=0 -amdgpu-sched-strategy=iterative-maxocc -verify-machineinstrs < %s | FileCheck --check-prefix=VI %s
59

610
; SI-MINREG: NumSgprs: {{[1-9]$}}
711
; SI-MINREG: NumVgprs: {{[1-9]$}}

llvm/test/CodeGen/AMDGPU/schedule-regpressure-limit3.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
; RUN: llc -mtriple=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck --check-prefix=MISCHED %s
22
; RUN: llc -mtriple=amdgcn -mcpu=tonga -misched=gcn-iterative-ilp -verify-machineinstrs < %s | FileCheck --check-prefix=GCN-ILP %s
3+
; RUN: llc -mtriple=amdgcn -mcpu=tonga -amdgpu-sched-strategy=iterative-ilp -verify-machineinstrs < %s | FileCheck --check-prefix=GCN-ILP %s
34

45
; Test the scheduler when only one wave is requested. The result should be high register usage and max ILP.
56

0 commit comments

Comments
 (0)