diff options
| author | Diana Picus <Diana-Magda.Picus@amd.com> | 2023-07-27 11:10:02 +0200 |
|---|---|---|
| committer | Diana Picus <Diana-Magda.Picus@amd.com> | 2023-08-21 12:37:32 +0200 |
| commit | 5272ae667dd5c628689097687f4679a8be29bc4d (patch) | |
| tree | e07e114d4804975ba23475cd548265e9edd24f57 | |
| parent | 8ce23b8e5c91c530d25c13f97b6f4cbacfe34b3c (diff) | |
[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
9 files changed, 21 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.cpp b/llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.cpp index 44bbfe6f13d9..323462e60a29 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.cpp @@ -24,6 +24,7 @@ AMDGPUMachineFunction::AMDGPUMachineFunction(const Function &F, : IsEntryFunction(AMDGPU::isEntryFunctionCC(F.getCallingConv())), IsModuleEntryFunction( AMDGPU::isModuleEntryFunctionCC(F.getCallingConv())), + IsChainFunction(AMDGPU::isChainCC(F.getCallingConv())), NoSignedZerosFPMath(false) { // FIXME: Should initialize KernArgSize based on ExplicitKernelArgOffset, diff --git a/llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.h b/llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.h index 5780fa64a7e4..06d4a6c0d027 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.h +++ b/llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.h @@ -54,6 +54,9 @@ protected: // Entry points called by other functions instead of directly by the hardware. bool IsModuleEntryFunction = false; + // Functions with the amdgpu_cs_chain or amdgpu_cs_chain_preserve CC. + bool IsChainFunction = false; + bool NoSignedZerosFPMath = false; // Function may be memory bound. @@ -85,6 +88,8 @@ public: bool isModuleEntryFunction() const { return IsModuleEntryFunction; } + bool isChainFunction() const { return IsChainFunction; } + bool hasNoSignedZerosFPMath() const { return NoSignedZerosFPMath; } diff --git a/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.h b/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.h index 37572d30dff6..4aa9a2fc0bb3 100644 --- a/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.h +++ b/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.h @@ -256,6 +256,7 @@ struct SIMachineFunctionInfo final : public yaml::MachineFunctionInfo { uint32_t GDSSize = 0; Align DynLDSAlign; bool IsEntryFunction = false; + bool IsChainFunction = false; bool NoSignedZerosFPMath = false; bool MemoryBound = false; bool WaveLimiter = false; @@ -304,6 +305,7 @@ template <> struct MappingTraits<SIMachineFunctionInfo> { YamlIO.mapOptional("gdsSize", MFI.GDSSize, 0u); YamlIO.mapOptional("dynLDSAlign", MFI.DynLDSAlign, Align()); YamlIO.mapOptional("isEntryFunction", MFI.IsEntryFunction, false); + YamlIO.mapOptional("isChainFunction", MFI.IsChainFunction, false); YamlIO.mapOptional("noSignedZerosFPMath", MFI.NoSignedZerosFPMath, false); YamlIO.mapOptional("memoryBound", MFI.MemoryBound, false); YamlIO.mapOptional("waveLimiter", MFI.WaveLimiter, false); diff --git a/llvm/test/CodeGen/MIR/AMDGPU/long-branch-reg-all-sgpr-used.ll b/llvm/test/CodeGen/MIR/AMDGPU/long-branch-reg-all-sgpr-used.ll index 5c0eea2d89f1..e13f76cf84a7 100644 --- a/llvm/test/CodeGen/MIR/AMDGPU/long-branch-reg-all-sgpr-used.ll +++ b/llvm/test/CodeGen/MIR/AMDGPU/long-branch-reg-all-sgpr-used.ll @@ -11,6 +11,7 @@ ; CHECK-NEXT: gdsSize: 0 ; CHECK-NEXT: dynLDSAlign: 1 ; CHECK-NEXT: isEntryFunction: true +; CHECK-NEXT: isChainFunction: false ; CHECK-NEXT: noSignedZerosFPMath: false ; CHECK-NEXT: memoryBound: false ; CHECK-NEXT: waveLimiter: false @@ -275,6 +276,7 @@ ; CHECK-NEXT: gdsSize: 0 ; CHECK-NEXT: dynLDSAlign: 1 ; CHECK-NEXT: isEntryFunction: true +; CHECK-NEXT: isChainFunction: false ; CHECK-NEXT: noSignedZerosFPMath: false ; CHECK-NEXT: memoryBound: false ; CHECK-NEXT: waveLimiter: false diff --git a/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-after-pei.ll b/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-after-pei.ll index 2848e29eae1c..f2144b8f6fc4 100644 --- a/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-after-pei.ll +++ b/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-after-pei.ll @@ -10,6 +10,7 @@ ; AFTER-PEI-NEXT: gdsSize: 0 ; AFTER-PEI-NEXT: dynLDSAlign: 1 ; AFTER-PEI-NEXT: isEntryFunction: true +; AFTER-PEI-NEXT: isChainFunction: false ; AFTER-PEI-NEXT: noSignedZerosFPMath: false ; AFTER-PEI-NEXT: memoryBound: false ; AFTER-PEI-NEXT: waveLimiter: false diff --git a/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-long-branch-reg-debug.ll b/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-long-branch-reg-debug.ll index 30ce9927768c..3046480b3c0d 100644 --- a/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-long-branch-reg-debug.ll +++ b/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-long-branch-reg-debug.ll @@ -11,6 +11,7 @@ ; CHECK-NEXT: gdsSize: 0 ; CHECK-NEXT: dynLDSAlign: 1 ; CHECK-NEXT: isEntryFunction: true +; CHECK-NEXT: isChainFunction: false ; CHECK-NEXT: noSignedZerosFPMath: false ; CHECK-NEXT: memoryBound: false ; CHECK-NEXT: waveLimiter: false diff --git a/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-long-branch-reg.ll b/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-long-branch-reg.ll index b1b405b8af2e..8922a233b1d8 100644 --- a/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-long-branch-reg.ll +++ b/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-long-branch-reg.ll @@ -11,6 +11,7 @@ ; CHECK-NEXT: gdsSize: 0 ; CHECK-NEXT: dynLDSAlign: 1 ; CHECK-NEXT: isEntryFunction: true +; CHECK-NEXT: isChainFunction: false ; CHECK-NEXT: noSignedZerosFPMath: false ; CHECK-NEXT: memoryBound: false ; CHECK-NEXT: waveLimiter: false diff --git a/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-no-ir.mir b/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-no-ir.mir index e3a593a0281c..4a3319043ede 100644 --- a/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-no-ir.mir +++ b/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info-no-ir.mir @@ -11,6 +11,7 @@ # FULL-NEXT: gdsSize: 256 # FULL-NEXT: dynLDSAlign: 1 # FULL-NEXT: isEntryFunction: true +# FULL-NEXT: isChainFunction: false # FULL-NEXT: noSignedZerosFPMath: false # FULL-NEXT: memoryBound: true # FULL-NEXT: waveLimiter: true @@ -115,6 +116,7 @@ body: | # FULL-NEXT: gdsSize: 0 # FULL-NEXT: dynLDSAlign: 1 # FULL-NEXT: isEntryFunction: false +# FULL-NEXT: isChainFunction: false # FULL-NEXT: noSignedZerosFPMath: false # FULL-NEXT: memoryBound: false # FULL-NEXT: waveLimiter: false @@ -188,6 +190,7 @@ body: | # FULL-NEXT: gdsSize: 0 # FULL-NEXT: dynLDSAlign: 1 # FULL-NEXT: isEntryFunction: false +# FULL-NEXT: isChainFunction: false # FULL-NEXT: noSignedZerosFPMath: false # FULL-NEXT: memoryBound: false # FULL-NEXT: waveLimiter: false @@ -262,6 +265,7 @@ body: | # FULL-NEXT: gdsSize: 0 # FULL-NEXT: dynLDSAlign: 1 # FULL-NEXT: isEntryFunction: true +# FULL-NEXT: isChainFunction: false # FULL-NEXT: noSignedZerosFPMath: false # FULL-NEXT: memoryBound: false # FULL-NEXT: waveLimiter: false diff --git a/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info.ll b/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info.ll index 1e102ab744f8..8326d95e0e7f 100644 --- a/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info.ll +++ b/llvm/test/CodeGen/MIR/AMDGPU/machine-function-info.ll @@ -14,6 +14,7 @@ ; CHECK-NEXT: gdsSize: 0 ; CHECK-NEXT: dynLDSAlign: 1 ; CHECK-NEXT: isEntryFunction: true +; CHECK-NEXT: isChainFunction: false ; CHECK-NEXT: noSignedZerosFPMath: false ; CHECK-NEXT: memoryBound: false ; CHECK-NEXT: waveLimiter: false @@ -61,6 +62,7 @@ define amdgpu_kernel void @kernel(i32 %arg0, i64 %arg1, <16 x i32> %arg2) { ; CHECK-NEXT: gdsSize: 512 ; CHECK-NEXT: dynLDSAlign: 1 ; CHECK-NEXT: isEntryFunction: true +; CHECK-NEXT: isChainFunction: false ; CHECK-NEXT: noSignedZerosFPMath: false ; CHECK-NEXT: memoryBound: false ; CHECK-NEXT: waveLimiter: false @@ -119,6 +121,7 @@ define amdgpu_ps void @gds_size_shader(i32 %arg0, i32 inreg %arg1) #5 { ; CHECK-NEXT: gdsSize: 0 ; CHECK-NEXT: dynLDSAlign: 1 ; CHECK-NEXT: isEntryFunction: false +; CHECK-NEXT: isChainFunction: false ; CHECK-NEXT: noSignedZerosFPMath: false ; CHECK-NEXT: memoryBound: false ; CHECK-NEXT: waveLimiter: false @@ -169,6 +172,7 @@ define void @function() { ; CHECK-NEXT: gdsSize: 0 ; CHECK-NEXT: dynLDSAlign: 1 ; CHECK-NEXT: isEntryFunction: false +; CHECK-NEXT: isChainFunction: false ; CHECK-NEXT: noSignedZerosFPMath: true ; CHECK-NEXT: memoryBound: false ; CHECK-NEXT: waveLimiter: false |
