================
@@ -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

Reply via email to