================
@@ -135,6 +137,141 @@ AMDGPU::IsaVersion AMDGPU::getIsaVersion(StringRef GPU) {
}
}
+static bool isGFX10Plus(AMDGPU::IsaVersion Version) {
+ return Version.Major >= 10;
+}
+
+static bool hasGFX103Insts(AMDGPU::IsaVersion Version) {
+ return Version.Major > 10 || (Version.Major == 10 && Version.Minor >= 3);
+}
+
+static bool
+hasArchitectedFlatScratch(const AMDGPU::ObjectLinkingTargetInfo &Target) {
+ AMDGPU::IsaVersion Version = Target.getVersion();
+ return Version.Major >= 11 || (Version.Major == 9 && Version.Minor >= 4);
+}
+
+static bool isGFX1250(const AMDGPU::ObjectLinkingTargetInfo &Target) {
+ AMDGPU::GPUKind Kind = Target.getKind();
+ return Kind == AMDGPU::GK_GFX1250 || Kind == AMDGPU::GK_GFX1251 ||
+ Kind == AMDGPU::GK_GFX12_5_GENERIC;
+}
+
+static bool supportsWGP(const AMDGPU::ObjectLinkingTargetInfo &Target) {
+ return !isGFX1250(Target) && Target.isGFX10Plus();
+}
+
+static unsigned getAddressableLocalMemorySize(AMDGPU::GPUKind Kind,
+ AMDGPU::IsaVersion Version) {
+ if (Kind == AMDGPU::GK_GFX1250 || Kind == AMDGPU::GK_GFX1251 ||
+ Kind == AMDGPU::GK_GFX12_5_GENERIC)
+ return 327680;
+ if (Kind == AMDGPU::GK_GFX950)
+ return 163840;
+ if (Version.Major >= 7)
+ return 65536;
+ return 32768;
+}
+
+static unsigned
+getMaxWavesPerEU(const AMDGPU::ObjectLinkingTargetInfo &Target) {
+ if (Target.hasAccVGPRs())
+ return 8;
+ AMDGPU::IsaVersion Version = Target.getVersion();
+ if (!isGFX10Plus(Version))
+ return 10;
+ return hasGFX103Insts(Version) ? 16 : 20;
+}
+
+AMDGPU::ObjectLinkingTargetInfo
+AMDGPU::ObjectLinkingTargetInfo::get(GPUKind Kind, bool XnackOnOrAny) {
+ return ObjectLinkingTargetInfo(Kind, XnackOnOrAny);
+}
+
+unsigned AMDGPU::ObjectLinkingTargetInfo::getVGPREncodingGranule(
+ unsigned WaveSize) const {
+ if (hasAccVGPRs())
+ return 8;
+
+ bool IsWave32 = WaveSize == 32;
+ if (isGFX1250(*this)) {
----------------
arsenm wrote:
There's a feature bit in the target table for this
https://github.com/llvm/llvm-project/pull/206787
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits