llvm-project/llvm/test/CodeGen/AMDGPU/remove-incompatible-wave64-feature.ll
Stanislav Mekhanoshin a629119c75
[AMDGPU] Remove wave64 functions (#153690)
gfx1250 only supports wave32.
2025-08-14 15:54:33 -07:00

35 lines
1.4 KiB
LLVM

; RUN: llc -mtriple=amdgcn -mcpu=gfx1250 -mattr=+wavefrontsize32 -stop-after=amdgpu-remove-incompatible-functions\
; RUN: -pass-remarks=amdgpu-remove-incompatible-functions < %s 2>%t | FileCheck -check-prefixes=GFX1250 %s
; RUN: FileCheck --check-prefix=WARN-GFX1250 %s < %t
; RUN: llc -mtriple=amdgcn -mcpu=gfx1250 -mattr=+wavefrontsize32 < %s
; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -mattr=+wavefrontsize32,-wavefrontsize64 -stop-after=amdgpu-remove-incompatible-functions\
; RUN: -pass-remarks=amdgpu-remove-incompatible-functions < %s 2>%t | FileCheck -check-prefixes=GFX1200 %s
; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -mattr=+wavefrontsize32,-wavefrontsize64 < %s
; WARN-GFX1250: removing function 'needs_wavefrontsize64': +wavefrontsize64 is not supported on the current target
; WARN-GFX1250-NOT: not supported
define void @needs_wavefrontsize64(ptr %out) #0 {
; GFX1250-NOT: @needs_wavefrontsize64
; GFX1200: define void @needs_wavefrontsize64(
%1 = tail call i64 @llvm.read_register.i64(metadata !0)
%2 = tail call i64 @llvm.ctpop.i64(i64 %1)
store i64 %2, ptr %out, align 4
ret void
}
define void @caller(ptr %out) {
; GFX1250: call void null(
; GFX1200: call void @needs_wavefrontsize64(
call void @needs_wavefrontsize64(ptr %out)
ret void
}
declare i64 @llvm.read_register.i64(metadata)
declare i64 @llvm.ctpop.i64(i64)
!0 = !{!"exec"}
attributes #0 = { "target-features"="+wavefrontsize64" }