[PATCH] D148906: [AMDGPU] Remove function if FeatureWavefrontSize32 is not supported on current GPU

krishna chaitanya sankisa via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Apr 29 02:57:36 PDT 2023


skc7 updated this revision to Diff 518152.
skc7 retitled this revision from "[AMDGPU] Remove incompatible attributes of function in amdgpu-remove-incompatible-functions pass" to "[AMDGPU] Remove function if FeatureWavefrontSize32 is not supported on current GPU".
skc7 edited the summary of this revision.
skc7 added a comment.

Updated patch to delete the function if FeatureWavefrontSize32 is not supported by current GPU.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D148906/new/

https://reviews.llvm.org/D148906

Files:
  llvm/lib/Target/AMDGPU/AMDGPURemoveIncompatibleFunctions.cpp
  llvm/test/CodeGen/AMDGPU/remove-incompatible-wave32-feature.ll


Index: llvm/test/CodeGen/AMDGPU/remove-incompatible-wave32-feature.ll
===================================================================
--- /dev/null
+++ llvm/test/CodeGen/AMDGPU/remove-incompatible-wave32-feature.ll
@@ -0,0 +1,50 @@
+; RUN: llc -march=amdgcn -mcpu=gfx906 -mattr=+wavefrontsize64 -stop-after=amdgpu-remove-incompatible-functions\
+; RUN:   -pass-remarks=amdgpu-remove-incompatible-functions < %s 2>%t | FileCheck -check-prefixes=GFX906 %s
+; RUN: FileCheck --check-prefix=WARN-GFX906 %s < %t
+; RUN: llc -march=amdgcn -mcpu=gfx906 -mattr=+wavefrontsize64 -verify-machineinstrs < %s
+
+; RUN: llc -march=amdgcn -mcpu=gfx90a -mattr=+wavefrontsize64 -stop-after=amdgpu-remove-incompatible-functions\
+; RUN:   -pass-remarks=amdgpu-remove-incompatible-functions < %s 2>%t | FileCheck -check-prefixes=GFX90A %s
+; RUN: FileCheck --check-prefix=WARN-GFX90A %s < %t
+; RUN: llc -march=amdgcn -mcpu=gfx90a -mattr=+wavefrontsize64 -verify-machineinstrs < %s
+
+; RUN: llc -march=amdgcn -mcpu=gfx1011 -mattr=+wavefrontsize64 -stop-after=amdgpu-remove-incompatible-functions\
+; RUN:   -pass-remarks=amdgpu-remove-incompatible-functions < %s 2>%t | FileCheck -check-prefixes=GFX10 %s
+; RUN: llc -march=amdgcn -mcpu=gfx1011 -mattr=+wavefrontsize64 -verify-machineinstrs < %s
+
+; RUN: llc -march=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64 -stop-after=amdgpu-remove-incompatible-functions\
+; RUN:   -pass-remarks=amdgpu-remove-incompatible-functions < %s 2>%t | FileCheck -check-prefixes=GFX11 %s
+; RUN: llc -march=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64 -verify-machineinstrs < %s
+
+; WARN-GFX906: removing function 'needs_wavefrontsize32': +wavefrontsize32 is not supported on the current target
+; WARN-GFX906-NOT: not supported
+
+; WARN-GFX90A: removing function 'needs_wavefrontsize32': +wavefrontsize32 is not supported on the current target
+; WARN-GFX90A-NOT: not supported
+
+define void @needs_wavefrontsize32(ptr %out) #0 {
+; GFX906-NOT:   define void @needs_wavefrontsize32(
+; GFX90A-NOT:   define void @needs_wavefrontsize32(
+; GFX10:        define void @needs_wavefrontsize32(
+; GFX11:        define void @needs_wavefrontsize32(
+  %1 = tail call i32 @llvm.read_register.i32(metadata !0)
+  %2 = tail call i32 @llvm.ctpop.i32(i32 %1)
+  store i32 %2, ptr %out, align 4
+  ret void
+}
+
+define void @caller(ptr %out) {
+  ; GFX906: call void null(
+  ; GFX90A: call void null(
+  ; GFX10: call void @needs_wavefrontsize32(
+  ; GFX11: call void @needs_wavefrontsize32(
+  call void @needs_wavefrontsize32(ptr %out)
+  ret void
+}
+
+declare i32 @llvm.read_register.i32(metadata)
+declare i32 @llvm.ctpop.i32(i32)
+
+!0 = !{!"exec_lo"}
+
+attributes #0 = { "target-features"="+wavefrontsize32" }
Index: llvm/lib/Target/AMDGPU/AMDGPURemoveIncompatibleFunctions.cpp
===================================================================
--- llvm/lib/Target/AMDGPU/AMDGPURemoveIncompatibleFunctions.cpp
+++ llvm/lib/Target/AMDGPU/AMDGPURemoveIncompatibleFunctions.cpp
@@ -97,6 +97,7 @@
     AMDGPU::FeatureDot3Insts,  AMDGPU::FeatureDot4Insts,
     AMDGPU::FeatureDot5Insts,  AMDGPU::FeatureDot6Insts,
     AMDGPU::FeatureDot7Insts,  AMDGPU::FeatureDot8Insts,
+    AMDGPU::FeatureWavefrontSize32,
 };
 
 FeatureBitset expandImpliedFeatures(const FeatureBitset &Features) {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D148906.518152.patch
Type: text/x-patch
Size: 3302 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230429/7b68ef30/attachment.bin>


More information about the llvm-commits mailing list