Skip to content

Commit 5272ae6

Browse files
committed
[AMDGPU] Add IsChainFunction to the MachineFunctionInfo
This will represent functions with the amdgpu_cs_chain or amdgpu_cs_chain_preserve calling conventions. Differential Revision: https://reviews.llvm.org/D156410
1 parent 8ce23b8 commit 5272ae6

9 files changed

+21
-0
lines changed

llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ AMDGPUMachineFunction::AMDGPUMachineFunction(const Function &F,
2424
: IsEntryFunction(AMDGPU::isEntryFunctionCC(F.getCallingConv())),
2525
IsModuleEntryFunction(
2626
AMDGPU::isModuleEntryFunctionCC(F.getCallingConv())),
27+
IsChainFunction(AMDGPU::isChainCC(F.getCallingConv())),
2728
NoSignedZerosFPMath(false) {
2829

2930
// FIXME: Should initialize KernArgSize based on ExplicitKernelArgOffset,

llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ class AMDGPUMachineFunction : public MachineFunctionInfo {
5454
// Entry points called by other functions instead of directly by the hardware.
5555
bool IsModuleEntryFunction = false;
5656

57+
// Functions with the amdgpu_cs_chain or amdgpu_cs_chain_preserve CC.
58+
bool IsChainFunction = false;
59+
5760
bool NoSignedZerosFPMath = false;
5861

5962
// Function may be memory bound.
@@ -85,6 +88,8 @@ class AMDGPUMachineFunction : public MachineFunctionInfo {
8588

8689
bool isModuleEntryFunction() const { return IsModuleEntryFunction; }
8790

91+
bool isChainFunction() const { return IsChainFunction; }
92+
8893
bool hasNoSignedZerosFPMath() const {
8994
return NoSignedZerosFPMath;
9095
}

llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,7 @@ struct SIMachineFunctionInfo final : public yaml::MachineFunctionInfo {
256256
uint32_t GDSSize = 0;
257257
Align DynLDSAlign;
258258
bool IsEntryFunction = false;
259+
bool IsChainFunction = false;
259260
bool NoSignedZerosFPMath = false;
260261
bool MemoryBound = false;
261262
bool WaveLimiter = false;
@@ -304,6 +305,7 @@ template <> struct MappingTraits<SIMachineFunctionInfo> {
304305
YamlIO.mapOptional("gdsSize", MFI.GDSSize, 0u);
305306
YamlIO.mapOptional("dynLDSAlign", MFI.DynLDSAlign, Align());
306307
YamlIO.mapOptional("isEntryFunction", MFI.IsEntryFunction, false);
308+
YamlIO.mapOptional("isChainFunction", MFI.IsChainFunction, false);
307309
YamlIO.mapOptional("noSignedZerosFPMath", MFI.NoSignedZerosFPMath, false);
308310
YamlIO.mapOptional("memoryBound", MFI.MemoryBound, false);
309311
YamlIO.mapOptional("waveLimiter", MFI.WaveLimiter, false);

llvm/test/CodeGen/MIR/AMDGPU/long-branch-reg-all-sgpr-used.ll

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
; CHECK-NEXT: gdsSize: 0
1212
; CHECK-NEXT: dynLDSAlign: 1
1313
; CHECK-NEXT: isEntryFunction: true
14+
; CHECK-NEXT: isChainFunction: false
1415
; CHECK-NEXT: noSignedZerosFPMath: false
1516
; CHECK-NEXT: memoryBound: false
1617
; CHECK-NEXT: waveLimiter: false
@@ -275,6 +276,7 @@
275276
; CHECK-NEXT: gdsSize: 0
276277
; CHECK-NEXT: dynLDSAlign: 1
277278
; CHECK-NEXT: isEntryFunction: true
279+
; CHECK-NEXT: isChainFunction: false
278280
; CHECK-NEXT: noSignedZerosFPMath: false
279281
; CHECK-NEXT: memoryBound: false
280282
; CHECK-NEXT: waveLimiter: false

llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-after-pei.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
; AFTER-PEI-NEXT: gdsSize: 0
1111
; AFTER-PEI-NEXT: dynLDSAlign: 1
1212
; AFTER-PEI-NEXT: isEntryFunction: true
13+
; AFTER-PEI-NEXT: isChainFunction: false
1314
; AFTER-PEI-NEXT: noSignedZerosFPMath: false
1415
; AFTER-PEI-NEXT: memoryBound: false
1516
; AFTER-PEI-NEXT: waveLimiter: false

llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-long-branch-reg-debug.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
; CHECK-NEXT: gdsSize: 0
1212
; CHECK-NEXT: dynLDSAlign: 1
1313
; CHECK-NEXT: isEntryFunction: true
14+
; CHECK-NEXT: isChainFunction: false
1415
; CHECK-NEXT: noSignedZerosFPMath: false
1516
; CHECK-NEXT: memoryBound: false
1617
; CHECK-NEXT: waveLimiter: false

llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-long-branch-reg.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
; CHECK-NEXT: gdsSize: 0
1212
; CHECK-NEXT: dynLDSAlign: 1
1313
; CHECK-NEXT: isEntryFunction: true
14+
; CHECK-NEXT: isChainFunction: false
1415
; CHECK-NEXT: noSignedZerosFPMath: false
1516
; CHECK-NEXT: memoryBound: false
1617
; CHECK-NEXT: waveLimiter: false

llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-no-ir.mir

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
# FULL-NEXT: gdsSize: 256
1212
# FULL-NEXT: dynLDSAlign: 1
1313
# FULL-NEXT: isEntryFunction: true
14+
# FULL-NEXT: isChainFunction: false
1415
# FULL-NEXT: noSignedZerosFPMath: false
1516
# FULL-NEXT: memoryBound: true
1617
# FULL-NEXT: waveLimiter: true
@@ -115,6 +116,7 @@ body: |
115116
# FULL-NEXT: gdsSize: 0
116117
# FULL-NEXT: dynLDSAlign: 1
117118
# FULL-NEXT: isEntryFunction: false
119+
# FULL-NEXT: isChainFunction: false
118120
# FULL-NEXT: noSignedZerosFPMath: false
119121
# FULL-NEXT: memoryBound: false
120122
# FULL-NEXT: waveLimiter: false
@@ -188,6 +190,7 @@ body: |
188190
# FULL-NEXT: gdsSize: 0
189191
# FULL-NEXT: dynLDSAlign: 1
190192
# FULL-NEXT: isEntryFunction: false
193+
# FULL-NEXT: isChainFunction: false
191194
# FULL-NEXT: noSignedZerosFPMath: false
192195
# FULL-NEXT: memoryBound: false
193196
# FULL-NEXT: waveLimiter: false
@@ -262,6 +265,7 @@ body: |
262265
# FULL-NEXT: gdsSize: 0
263266
# FULL-NEXT: dynLDSAlign: 1
264267
# FULL-NEXT: isEntryFunction: true
268+
# FULL-NEXT: isChainFunction: false
265269
# FULL-NEXT: noSignedZerosFPMath: false
266270
# FULL-NEXT: memoryBound: false
267271
# FULL-NEXT: waveLimiter: false

llvm/test/CodeGen/MIR/AMDGPU/machine-function-info.ll

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
; CHECK-NEXT: gdsSize: 0
1515
; CHECK-NEXT: dynLDSAlign: 1
1616
; CHECK-NEXT: isEntryFunction: true
17+
; CHECK-NEXT: isChainFunction: false
1718
; CHECK-NEXT: noSignedZerosFPMath: false
1819
; CHECK-NEXT: memoryBound: false
1920
; CHECK-NEXT: waveLimiter: false
@@ -61,6 +62,7 @@ define amdgpu_kernel void @kernel(i32 %arg0, i64 %arg1, <16 x i32> %arg2) {
6162
; CHECK-NEXT: gdsSize: 512
6263
; CHECK-NEXT: dynLDSAlign: 1
6364
; CHECK-NEXT: isEntryFunction: true
65+
; CHECK-NEXT: isChainFunction: false
6466
; CHECK-NEXT: noSignedZerosFPMath: false
6567
; CHECK-NEXT: memoryBound: false
6668
; CHECK-NEXT: waveLimiter: false
@@ -119,6 +121,7 @@ define amdgpu_ps void @gds_size_shader(i32 %arg0, i32 inreg %arg1) #5 {
119121
; CHECK-NEXT: gdsSize: 0
120122
; CHECK-NEXT: dynLDSAlign: 1
121123
; CHECK-NEXT: isEntryFunction: false
124+
; CHECK-NEXT: isChainFunction: false
122125
; CHECK-NEXT: noSignedZerosFPMath: false
123126
; CHECK-NEXT: memoryBound: false
124127
; CHECK-NEXT: waveLimiter: false
@@ -169,6 +172,7 @@ define void @function() {
169172
; CHECK-NEXT: gdsSize: 0
170173
; CHECK-NEXT: dynLDSAlign: 1
171174
; CHECK-NEXT: isEntryFunction: false
175+
; CHECK-NEXT: isChainFunction: false
172176
; CHECK-NEXT: noSignedZerosFPMath: true
173177
; CHECK-NEXT: memoryBound: false
174178
; CHECK-NEXT: waveLimiter: false

0 commit comments

Comments
 (0)