| ; 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" } |