1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=amdgcn -mcpu=verde -verify-machineinstrs | FileCheck --check-prefix=GCN %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=amdgcn -mcpu=tonga -verify-machineinstrs | FileCheck --check-prefix=GCN %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}icmp_2_users: 5*9880d681SAndroid Build Coastguard Worker; GCN: s_cmp_lt_i32 s{{[0-9]+}}, 1 6*9880d681SAndroid Build Coastguard Worker; GCN: s_cbranch_scc1 [[LABEL:BB[0-9_A-Z]+]] 7*9880d681SAndroid Build Coastguard Worker; GCN: [[LABEL]]: 8*9880d681SAndroid Build Coastguard Worker; GCN-NEXT: s_endpgm 9*9880d681SAndroid Build Coastguard Workerdefine void @icmp_2_users(i32 addrspace(1)* %out, i32 %cond) { 10*9880d681SAndroid Build Coastguard Workermain_body: 11*9880d681SAndroid Build Coastguard Worker %0 = icmp sgt i32 %cond, 0 12*9880d681SAndroid Build Coastguard Worker %1 = sext i1 %0 to i32 13*9880d681SAndroid Build Coastguard Worker br i1 %0, label %IF, label %ENDIF 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard WorkerIF: 16*9880d681SAndroid Build Coastguard Worker store i32 %1, i32 addrspace(1)* %out 17*9880d681SAndroid Build Coastguard Worker br label %ENDIF 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard WorkerENDIF: ; preds = %IF, %main_body 20*9880d681SAndroid Build Coastguard Worker ret void 21*9880d681SAndroid Build Coastguard Worker} 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker; GCN-LABEL: {{^}}fix_sgpr_live_ranges_crash: 24*9880d681SAndroid Build Coastguard Worker; GCN: s_cbranch_scc1 [[BB0:[A-Z0-9_]+]] 25*9880d681SAndroid Build Coastguard Worker; GCN: {{^}}[[LOOP:[A-Z0-9_]+]]: 26*9880d681SAndroid Build Coastguard Worker; GCN: s_cbranch_scc1 [[LOOP]] 27*9880d681SAndroid Build Coastguard Worker; GCN: {{^}}[[BB0]]: 28*9880d681SAndroid Build Coastguard Workerdefine void @fix_sgpr_live_ranges_crash(i32 %arg, i32 %arg1) { 29*9880d681SAndroid Build Coastguard Workerbb: 30*9880d681SAndroid Build Coastguard Worker %cnd = trunc i32 %arg to i1 31*9880d681SAndroid Build Coastguard Worker br i1 %cnd, label %bb2, label %bb5 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workerbb2: ; preds = %bb 34*9880d681SAndroid Build Coastguard Worker %tmp = mul i32 10, %arg1 35*9880d681SAndroid Build Coastguard Worker br label %bb3 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Workerbb3: ; preds = %bb3, %bb2 38*9880d681SAndroid Build Coastguard Worker %val = load volatile i32, i32 addrspace(2)* undef 39*9880d681SAndroid Build Coastguard Worker %tmp4 = icmp eq i32 %val, %arg1 40*9880d681SAndroid Build Coastguard Worker br i1 %tmp4, label %bb5, label %bb3 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Workerbb5: ; preds = %bb3, %bb 43*9880d681SAndroid Build Coastguard Worker %tmp6 = tail call i32 @llvm.amdgcn.workitem.id.y() #1 44*9880d681SAndroid Build Coastguard Worker %tmp10 = icmp ult i32 %tmp6, %arg 45*9880d681SAndroid Build Coastguard Worker br i1 %tmp10, label %bb11, label %bb12 46*9880d681SAndroid Build Coastguard Worker 47*9880d681SAndroid Build Coastguard Workerbb11: ; preds = %bb11, %bb5 48*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb11, label %bb12 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Workerbb12: ; preds = %bb11, %bb5 51*9880d681SAndroid Build Coastguard Worker ret void 52*9880d681SAndroid Build Coastguard Worker} 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 55*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.amdgcn.workitem.id.y() #1 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind readnone } 58