1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -verify-machineinstrs -asm-verbose < %s | FileCheck -check-prefix=SI %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mtriple=amdgcn-unknown-amdhsa -verify-machineinstrs -asm-verbose -mattr=-flat-for-global < %s | FileCheck -check-prefix=SI %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.amdgcn.mbcnt.lo(i32, i32) #0 5*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.amdgcn.mbcnt.hi(i32, i32) #0 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}foo: 8*9880d681SAndroid Build Coastguard Worker; SI: .section .AMDGPU.csdata 9*9880d681SAndroid Build Coastguard Worker; SI: ; Kernel info: 10*9880d681SAndroid Build Coastguard Worker; SI: ; NumSgprs: {{[0-9]+}} 11*9880d681SAndroid Build Coastguard Worker; SI: ; NumVgprs: {{[0-9]+}} 12*9880d681SAndroid Build Coastguard Workerdefine void @foo(i32 addrspace(1)* noalias %out, i32 addrspace(1)* %abase, i32 addrspace(1)* %bbase) nounwind { 13*9880d681SAndroid Build Coastguard Worker %mbcnt.lo = call i32 @llvm.amdgcn.mbcnt.lo(i32 -1, i32 0); 14*9880d681SAndroid Build Coastguard Worker %tid = call i32 @llvm.amdgcn.mbcnt.hi(i32 -1, i32 %mbcnt.lo) 15*9880d681SAndroid Build Coastguard Worker %aptr = getelementptr i32, i32 addrspace(1)* %abase, i32 %tid 16*9880d681SAndroid Build Coastguard Worker %bptr = getelementptr i32, i32 addrspace(1)* %bbase, i32 %tid 17*9880d681SAndroid Build Coastguard Worker %outptr = getelementptr i32, i32 addrspace(1)* %out, i32 %tid 18*9880d681SAndroid Build Coastguard Worker %a = load i32, i32 addrspace(1)* %aptr, align 4 19*9880d681SAndroid Build Coastguard Worker %b = load i32, i32 addrspace(1)* %bptr, align 4 20*9880d681SAndroid Build Coastguard Worker %result = add i32 %a, %b 21*9880d681SAndroid Build Coastguard Worker store i32 %result, i32 addrspace(1)* %outptr, align 4 22*9880d681SAndroid Build Coastguard Worker ret void 23*9880d681SAndroid Build Coastguard Worker} 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker; SI-LABEL: {{^}}one_vgpr_used: 26*9880d681SAndroid Build Coastguard Worker; SI: NumVgprs: 1 27*9880d681SAndroid Build Coastguard Workerdefine void @one_vgpr_used(i32 addrspace(1)* %out, i32 %x) nounwind { 28*9880d681SAndroid Build Coastguard Worker store i32 %x, i32 addrspace(1)* %out, align 4 29*9880d681SAndroid Build Coastguard Worker ret void 30*9880d681SAndroid Build Coastguard Worker} 31