1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=bonaire -verify-machineinstrs < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.write_register.i32(metadata, i32) #0 4*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.write_register.i64(metadata, i64) #0 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}test_write_m0: 7*9880d681SAndroid Build Coastguard Workerdefine void @test_write_m0(i32 %val) #0 { 8*9880d681SAndroid Build Coastguard Worker call void @llvm.write_register.i32(metadata !0, i32 0) 9*9880d681SAndroid Build Coastguard Worker call void @llvm.write_register.i32(metadata !0, i32 -1) 10*9880d681SAndroid Build Coastguard Worker call void @llvm.write_register.i32(metadata !0, i32 %val) 11*9880d681SAndroid Build Coastguard Worker ret void 12*9880d681SAndroid Build Coastguard Worker} 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}test_write_exec: 15*9880d681SAndroid Build Coastguard Worker; CHECK: s_mov_b64 exec, 0 16*9880d681SAndroid Build Coastguard Worker; CHECK: s_mov_b64 exec, -1 17*9880d681SAndroid Build Coastguard Worker; CHECK: s_mov_b64 exec, s{{\[[0-9]+:[0-9]+\]}} 18*9880d681SAndroid Build Coastguard Workerdefine void @test_write_exec(i64 %val) #0 { 19*9880d681SAndroid Build Coastguard Worker call void @llvm.write_register.i64(metadata !1, i64 0) 20*9880d681SAndroid Build Coastguard Worker call void @llvm.write_register.i64(metadata !1, i64 -1) 21*9880d681SAndroid Build Coastguard Worker call void @llvm.write_register.i64(metadata !1, i64 %val) 22*9880d681SAndroid Build Coastguard Worker ret void 23*9880d681SAndroid Build Coastguard Worker} 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}test_write_flat_scratch: 26*9880d681SAndroid Build Coastguard Worker; CHECK: s_mov_b64 flat_scratch, 0 27*9880d681SAndroid Build Coastguard Worker; CHECK: s_mov_b64 flat_scratch, -1 28*9880d681SAndroid Build Coastguard Worker; CHECK: s_mov_b64 flat_scratch, s{{\[[0-9]+:[0-9]+\]}} 29*9880d681SAndroid Build Coastguard Workerdefine void @test_write_flat_scratch(i64 %val) #0 { 30*9880d681SAndroid Build Coastguard Worker call void @llvm.write_register.i64(metadata !2, i64 0) 31*9880d681SAndroid Build Coastguard Worker call void @llvm.write_register.i64(metadata !2, i64 -1) 32*9880d681SAndroid Build Coastguard Worker call void @llvm.write_register.i64(metadata !2, i64 %val) 33*9880d681SAndroid Build Coastguard Worker ret void 34*9880d681SAndroid Build Coastguard Worker} 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}test_write_flat_scratch_lo: 37*9880d681SAndroid Build Coastguard Worker; CHECK: s_mov_b32 flat_scratch_lo, 0 38*9880d681SAndroid Build Coastguard Worker; CHECK: s_mov_b32 flat_scratch_lo, s{{[0-9]+}} 39*9880d681SAndroid Build Coastguard Workerdefine void @test_write_flat_scratch_lo(i32 %val) #0 { 40*9880d681SAndroid Build Coastguard Worker call void @llvm.write_register.i32(metadata !3, i32 0) 41*9880d681SAndroid Build Coastguard Worker call void @llvm.write_register.i32(metadata !3, i32 %val) 42*9880d681SAndroid Build Coastguard Worker ret void 43*9880d681SAndroid Build Coastguard Worker} 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}test_write_flat_scratch_hi: 46*9880d681SAndroid Build Coastguard Worker; CHECK: s_mov_b32 flat_scratch_hi, 0 47*9880d681SAndroid Build Coastguard Worker; CHECK: s_mov_b32 flat_scratch_hi, s{{[0-9]+}} 48*9880d681SAndroid Build Coastguard Workerdefine void @test_write_flat_scratch_hi(i32 %val) #0 { 49*9880d681SAndroid Build Coastguard Worker call void @llvm.write_register.i32(metadata !4, i32 0) 50*9880d681SAndroid Build Coastguard Worker call void @llvm.write_register.i32(metadata !4, i32 %val) 51*9880d681SAndroid Build Coastguard Worker ret void 52*9880d681SAndroid Build Coastguard Worker} 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}test_write_exec_lo: 55*9880d681SAndroid Build Coastguard Worker; CHECK: s_mov_b32 exec_lo, 0 56*9880d681SAndroid Build Coastguard Worker; CHECK: s_mov_b32 exec_lo, s{{[0-9]+}} 57*9880d681SAndroid Build Coastguard Workerdefine void @test_write_exec_lo(i32 %val) #0 { 58*9880d681SAndroid Build Coastguard Worker call void @llvm.write_register.i32(metadata !5, i32 0) 59*9880d681SAndroid Build Coastguard Worker call void @llvm.write_register.i32(metadata !5, i32 %val) 60*9880d681SAndroid Build Coastguard Worker ret void 61*9880d681SAndroid Build Coastguard Worker} 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}test_write_exec_hi: 64*9880d681SAndroid Build Coastguard Worker; CHECK: s_mov_b32 exec_hi, 0 65*9880d681SAndroid Build Coastguard Worker; CHECK: s_mov_b32 exec_hi, s{{[0-9]+}} 66*9880d681SAndroid Build Coastguard Workerdefine void @test_write_exec_hi(i32 %val) #0 { 67*9880d681SAndroid Build Coastguard Worker call void @llvm.write_register.i32(metadata !6, i32 0) 68*9880d681SAndroid Build Coastguard Worker call void @llvm.write_register.i32(metadata !6, i32 %val) 69*9880d681SAndroid Build Coastguard Worker ret void 70*9880d681SAndroid Build Coastguard Worker} 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind } 73*9880d681SAndroid Build Coastguard Worker 74*9880d681SAndroid Build Coastguard Worker!0 = !{!"m0"} 75*9880d681SAndroid Build Coastguard Worker!1 = !{!"exec"} 76*9880d681SAndroid Build Coastguard Worker!2 = !{!"flat_scratch"} 77*9880d681SAndroid Build Coastguard Worker!3 = !{!"flat_scratch_lo"} 78*9880d681SAndroid Build Coastguard Worker!4 = !{!"flat_scratch_hi"} 79*9880d681SAndroid Build Coastguard Worker!5 = !{!"exec_lo"} 80*9880d681SAndroid Build Coastguard Worker!6 = !{!"exec_hi"} 81