1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=SI -mattr=-promote-alloca -verify-machineinstrs < %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=tonga -mattr=-promote-alloca -verify-machineinstrs < %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker; Test that CopyToReg instructions don't have non-register operands prior 5*9880d681SAndroid Build Coastguard Worker; to being emitted. 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker; Make sure this doesn't crash 8*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: {{^}}copy_to_reg_frameindex: 9*9880d681SAndroid Build Coastguard Workerdefine void @copy_to_reg_frameindex(i32 addrspace(1)* %out, i32 %a, i32 %b, i32 %c) { 10*9880d681SAndroid Build Coastguard Workerentry: 11*9880d681SAndroid Build Coastguard Worker %alloca = alloca [16 x i32] 12*9880d681SAndroid Build Coastguard Worker br label %loop 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerloop: 15*9880d681SAndroid Build Coastguard Worker %inc = phi i32 [0, %entry], [%inc.i, %loop] 16*9880d681SAndroid Build Coastguard Worker %ptr = getelementptr [16 x i32], [16 x i32]* %alloca, i32 0, i32 %inc 17*9880d681SAndroid Build Coastguard Worker store i32 %inc, i32* %ptr 18*9880d681SAndroid Build Coastguard Worker %inc.i = add i32 %inc, 1 19*9880d681SAndroid Build Coastguard Worker %cnd = icmp uge i32 %inc.i, 16 20*9880d681SAndroid Build Coastguard Worker br i1 %cnd, label %done, label %loop 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Workerdone: 23*9880d681SAndroid Build Coastguard Worker %tmp0 = getelementptr [16 x i32], [16 x i32]* %alloca, i32 0, i32 0 24*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32* %tmp0 25*9880d681SAndroid Build Coastguard Worker store i32 %tmp1, i32 addrspace(1)* %out 26*9880d681SAndroid Build Coastguard Worker ret void 27*9880d681SAndroid Build Coastguard Worker} 28