1; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s 2 3; GCN-LABEL: {{^}}lower_control_flow_unreachable_terminator: 4; GCN: v_cmp_eq_i32 5; GCN: s_and_saveexec_b64 6; GCN: s_xor_b64 7; GCN: s_branch BB0_1 8 9; GCN: s_or_b64 exec, exec 10; GCN: s_endpgm 11 12; GCN: ds_write_b32 13; GCN: s_waitcnt 14define void @lower_control_flow_unreachable_terminator() #0 { 15bb: 16 %tmp15 = tail call i32 @llvm.amdgcn.workitem.id.y() 17 %tmp63 = icmp eq i32 %tmp15, 32 18 br i1 %tmp63, label %bb64, label %bb68 19 20bb64: 21 store volatile i32 0, i32 addrspace(3)* undef, align 4 22 unreachable 23 24bb68: 25 ret void 26} 27 28; GCN-LABEL: {{^}}lower_control_flow_unreachable_terminator_swap_block_order: 29; GCN: v_cmp_eq_i32 30; GCN: s_and_saveexec_b64 31; GCN: s_xor_b64 32; GCN: s_endpgm 33 34; GCN: s_or_b64 exec, exec 35; GCN: ds_write_b32 36; GCN: s_waitcnt 37define void @lower_control_flow_unreachable_terminator_swap_block_order() #0 { 38bb: 39 %tmp15 = tail call i32 @llvm.amdgcn.workitem.id.y() 40 %tmp63 = icmp eq i32 %tmp15, 32 41 br i1 %tmp63, label %bb68, label %bb64 42 43bb68: 44 ret void 45 46bb64: 47 store volatile i32 0, i32 addrspace(3)* undef, align 4 48 unreachable 49} 50 51; Function Attrs: nounwind readnone 52declare i32 @llvm.amdgcn.workitem.id.y() #1 53 54attributes #0 = { nounwind } 55attributes #1 = { nounwind readnone } 56attributes #2 = { nounwind } 57