[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