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