blob: ffa3554ff2212510039cdb79274d8033077522f0 [file] [edit]
; RUN: llc -global-isel=0 -mtriple=amdgpu12.50-amd-amdhsa < %s | FileCheck %s
; RUN: llc -global-isel=1 -mtriple=amdgpu12.50-amd-amdhsa < %s | FileCheck %s
; src_flat_scratch_base{,_lo,_hi} are isConstant register aliases, so writes to
; them are dead and get silently eliminated rather than lowered to a copy.
declare void @llvm.write_register.i32(metadata, i32) #0
declare void @llvm.write_register.i64(metadata, i64) #0
; CHECK-LABEL: {{^}}test_write_src_flat_scratch_base:{{.*$}}
; CHECK-NOT: src_flat_scratch_base
; CHECK: s_endpgm
define amdgpu_kernel void @test_write_src_flat_scratch_base(i64 %val) #0 {
call void @llvm.write_register.i64(metadata !0, i64 %val)
ret void
}
; CHECK-LABEL: {{^}}test_write_src_flat_scratch_base_lo:{{.*$}}
; CHECK-NOT: src_flat_scratch_base
; CHECK: s_endpgm
define amdgpu_kernel void @test_write_src_flat_scratch_base_lo(i32 %val) #0 {
call void @llvm.write_register.i32(metadata !1, i32 %val)
ret void
}
; CHECK-LABEL: {{^}}test_write_src_flat_scratch_base_hi:{{.*$}}
; CHECK-NOT: src_flat_scratch_base
; CHECK: s_endpgm
define amdgpu_kernel void @test_write_src_flat_scratch_base_hi(i32 %val) #0 {
call void @llvm.write_register.i32(metadata !2, i32 %val)
ret void
}
attributes #0 = { nounwind }
!0 = !{!"src_flat_scratch_base"}
!1 = !{!"src_flat_scratch_base_lo"}
!2 = !{!"src_flat_scratch_base_hi"}