1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=bonaire -verify-machineinstrs -enable-misched -enable-aa-sched-mi < %s | FileCheck -check-prefix=FUNC -check-prefix=CI %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.SI.tbuffer.store.i32(<16 x i8>, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) 4*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.SI.tbuffer.store.v4i32(<16 x i8>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) 5*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.amdgcn.s.barrier() #1 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker@stored_lds_ptr = addrspace(3) global i32 addrspace(3)* undef, align 4 9*9880d681SAndroid Build Coastguard Worker@stored_constant_ptr = addrspace(3) global i32 addrspace(2)* undef, align 8 10*9880d681SAndroid Build Coastguard Worker@stored_global_ptr = addrspace(3) global i32 addrspace(1)* undef, align 8 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: @reorder_local_load_global_store_local_load 13*9880d681SAndroid Build Coastguard Worker; CI: ds_read2_b32 {{v\[[0-9]+:[0-9]+\]}}, {{v[0-9]+}} offset0:1 offset1:3 14*9880d681SAndroid Build Coastguard Worker; CI: buffer_store_dword 15*9880d681SAndroid Build Coastguard Workerdefine void @reorder_local_load_global_store_local_load(i32 addrspace(1)* %out, i32 addrspace(1)* %gptr) #0 { 16*9880d681SAndroid Build Coastguard Worker %ptr0 = load i32 addrspace(3)*, i32 addrspace(3)* addrspace(3)* @stored_lds_ptr, align 4 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker %ptr1 = getelementptr inbounds i32, i32 addrspace(3)* %ptr0, i32 1 19*9880d681SAndroid Build Coastguard Worker %ptr2 = getelementptr inbounds i32, i32 addrspace(3)* %ptr0, i32 3 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32 addrspace(3)* %ptr1, align 4 22*9880d681SAndroid Build Coastguard Worker store i32 99, i32 addrspace(1)* %gptr, align 4 23*9880d681SAndroid Build Coastguard Worker %tmp2 = load i32, i32 addrspace(3)* %ptr2, align 4 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker %add = add nsw i32 %tmp1, %tmp2 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker store i32 %add, i32 addrspace(1)* %out, align 4 28*9880d681SAndroid Build Coastguard Worker ret void 29*9880d681SAndroid Build Coastguard Worker} 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: @no_reorder_local_load_volatile_global_store_local_load 32*9880d681SAndroid Build Coastguard Worker; CI: ds_read_b32 {{v[0-9]+}}, {{v[0-9]+}} offset:4 33*9880d681SAndroid Build Coastguard Worker; CI: buffer_store_dword 34*9880d681SAndroid Build Coastguard Worker; CI: ds_read_b32 {{v[0-9]+}}, {{v[0-9]+}} offset:12 35*9880d681SAndroid Build Coastguard Workerdefine void @no_reorder_local_load_volatile_global_store_local_load(i32 addrspace(1)* %out, i32 addrspace(1)* %gptr) #0 { 36*9880d681SAndroid Build Coastguard Worker %ptr0 = load i32 addrspace(3)*, i32 addrspace(3)* addrspace(3)* @stored_lds_ptr, align 4 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Worker %ptr1 = getelementptr inbounds i32, i32 addrspace(3)* %ptr0, i32 1 39*9880d681SAndroid Build Coastguard Worker %ptr2 = getelementptr inbounds i32, i32 addrspace(3)* %ptr0, i32 3 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32 addrspace(3)* %ptr1, align 4 42*9880d681SAndroid Build Coastguard Worker store volatile i32 99, i32 addrspace(1)* %gptr, align 4 43*9880d681SAndroid Build Coastguard Worker %tmp2 = load i32, i32 addrspace(3)* %ptr2, align 4 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker %add = add nsw i32 %tmp1, %tmp2 46*9880d681SAndroid Build Coastguard Worker 47*9880d681SAndroid Build Coastguard Worker store i32 %add, i32 addrspace(1)* %out, align 4 48*9880d681SAndroid Build Coastguard Worker ret void 49*9880d681SAndroid Build Coastguard Worker} 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: @no_reorder_barrier_local_load_global_store_local_load 52*9880d681SAndroid Build Coastguard Worker; CI: ds_read_b32 {{v[0-9]+}}, {{v[0-9]+}} offset:4 53*9880d681SAndroid Build Coastguard Worker; CI: ds_read_b32 {{v[0-9]+}}, {{v[0-9]+}} offset:12 54*9880d681SAndroid Build Coastguard Worker; CI: buffer_store_dword 55*9880d681SAndroid Build Coastguard Workerdefine void @no_reorder_barrier_local_load_global_store_local_load(i32 addrspace(1)* %out, i32 addrspace(1)* %gptr) #0 { 56*9880d681SAndroid Build Coastguard Worker %ptr0 = load i32 addrspace(3)*, i32 addrspace(3)* addrspace(3)* @stored_lds_ptr, align 4 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Worker %ptr1 = getelementptr inbounds i32, i32 addrspace(3)* %ptr0, i32 1 59*9880d681SAndroid Build Coastguard Worker %ptr2 = getelementptr inbounds i32, i32 addrspace(3)* %ptr0, i32 3 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32 addrspace(3)* %ptr1, align 4 62*9880d681SAndroid Build Coastguard Worker store i32 99, i32 addrspace(1)* %gptr, align 4 63*9880d681SAndroid Build Coastguard Worker call void @llvm.amdgcn.s.barrier() #1 64*9880d681SAndroid Build Coastguard Worker %tmp2 = load i32, i32 addrspace(3)* %ptr2, align 4 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Worker %add = add nsw i32 %tmp1, %tmp2 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Worker store i32 %add, i32 addrspace(1)* %out, align 4 69*9880d681SAndroid Build Coastguard Worker ret void 70*9880d681SAndroid Build Coastguard Worker} 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: @reorder_constant_load_global_store_constant_load 73*9880d681SAndroid Build Coastguard Worker; CI-DAG: buffer_store_dword 74*9880d681SAndroid Build Coastguard Worker; CI-DAG: v_readfirstlane_b32 s[[PTR_LO:[0-9]+]], v{{[0-9]+}} 75*9880d681SAndroid Build Coastguard Worker; CI: v_readfirstlane_b32 s[[PTR_HI:[0-9]+]], v{{[0-9]+}} 76*9880d681SAndroid Build Coastguard Worker; CI-DAG: s_load_dword s{{[0-9]+}}, s{{\[}}[[PTR_LO]]:[[PTR_HI]]{{\]}}, 0x1 77*9880d681SAndroid Build Coastguard Worker; CI-DAG: s_load_dword s{{[0-9]+}}, s{{\[}}[[PTR_LO]]:[[PTR_HI]]{{\]}}, 0x3 78*9880d681SAndroid Build Coastguard Worker; CI: buffer_store_dword 79*9880d681SAndroid Build Coastguard Workerdefine void @reorder_constant_load_global_store_constant_load(i32 addrspace(1)* %out, i32 addrspace(1)* %gptr) #0 { 80*9880d681SAndroid Build Coastguard Worker %ptr0 = load i32 addrspace(2)*, i32 addrspace(2)* addrspace(3)* @stored_constant_ptr, align 8 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Worker %ptr1 = getelementptr inbounds i32, i32 addrspace(2)* %ptr0, i64 1 83*9880d681SAndroid Build Coastguard Worker %ptr2 = getelementptr inbounds i32, i32 addrspace(2)* %ptr0, i64 3 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32 addrspace(2)* %ptr1, align 4 86*9880d681SAndroid Build Coastguard Worker store i32 99, i32 addrspace(1)* %gptr, align 4 87*9880d681SAndroid Build Coastguard Worker %tmp2 = load i32, i32 addrspace(2)* %ptr2, align 4 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Worker %add = add nsw i32 %tmp1, %tmp2 90*9880d681SAndroid Build Coastguard Worker 91*9880d681SAndroid Build Coastguard Worker store i32 %add, i32 addrspace(1)* %out, align 4 92*9880d681SAndroid Build Coastguard Worker ret void 93*9880d681SAndroid Build Coastguard Worker} 94*9880d681SAndroid Build Coastguard Worker 95*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: @reorder_constant_load_local_store_constant_load 96*9880d681SAndroid Build Coastguard Worker; CI: v_readfirstlane_b32 s[[PTR_LO:[0-9]+]], v{{[0-9]+}} 97*9880d681SAndroid Build Coastguard Worker; CI: v_readfirstlane_b32 s[[PTR_HI:[0-9]+]], v{{[0-9]+}} 98*9880d681SAndroid Build Coastguard Worker; CI-DAG: s_load_dword s{{[0-9]+}}, s{{\[}}[[PTR_LO]]:[[PTR_HI]]{{\]}}, 0x1 99*9880d681SAndroid Build Coastguard Worker; CI-DAG: s_load_dword s{{[0-9]+}}, s{{\[}}[[PTR_LO]]:[[PTR_HI]]{{\]}}, 0x3 100*9880d681SAndroid Build Coastguard Worker; CI: ds_write_b32 101*9880d681SAndroid Build Coastguard Worker; CI: buffer_store_dword 102*9880d681SAndroid Build Coastguard Workerdefine void @reorder_constant_load_local_store_constant_load(i32 addrspace(1)* %out, i32 addrspace(3)* %lptr) #0 { 103*9880d681SAndroid Build Coastguard Worker %ptr0 = load i32 addrspace(2)*, i32 addrspace(2)* addrspace(3)* @stored_constant_ptr, align 8 104*9880d681SAndroid Build Coastguard Worker 105*9880d681SAndroid Build Coastguard Worker %ptr1 = getelementptr inbounds i32, i32 addrspace(2)* %ptr0, i64 1 106*9880d681SAndroid Build Coastguard Worker %ptr2 = getelementptr inbounds i32, i32 addrspace(2)* %ptr0, i64 3 107*9880d681SAndroid Build Coastguard Worker 108*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32 addrspace(2)* %ptr1, align 4 109*9880d681SAndroid Build Coastguard Worker store i32 99, i32 addrspace(3)* %lptr, align 4 110*9880d681SAndroid Build Coastguard Worker %tmp2 = load i32, i32 addrspace(2)* %ptr2, align 4 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Worker %add = add nsw i32 %tmp1, %tmp2 113*9880d681SAndroid Build Coastguard Worker 114*9880d681SAndroid Build Coastguard Worker store i32 %add, i32 addrspace(1)* %out, align 4 115*9880d681SAndroid Build Coastguard Worker ret void 116*9880d681SAndroid Build Coastguard Worker} 117*9880d681SAndroid Build Coastguard Worker 118*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: @reorder_smrd_load_local_store_smrd_load 119*9880d681SAndroid Build Coastguard Worker; CI: s_load_dword 120*9880d681SAndroid Build Coastguard Worker; CI: s_load_dword 121*9880d681SAndroid Build Coastguard Worker; CI: s_load_dword 122*9880d681SAndroid Build Coastguard Worker; CI: ds_write_b32 123*9880d681SAndroid Build Coastguard Worker; CI: buffer_store_dword 124*9880d681SAndroid Build Coastguard Workerdefine void @reorder_smrd_load_local_store_smrd_load(i32 addrspace(1)* %out, i32 addrspace(3)* noalias %lptr, i32 addrspace(2)* %ptr0) #0 { 125*9880d681SAndroid Build Coastguard Worker %ptr1 = getelementptr inbounds i32, i32 addrspace(2)* %ptr0, i64 1 126*9880d681SAndroid Build Coastguard Worker %ptr2 = getelementptr inbounds i32, i32 addrspace(2)* %ptr0, i64 2 127*9880d681SAndroid Build Coastguard Worker 128*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32 addrspace(2)* %ptr1, align 4 129*9880d681SAndroid Build Coastguard Worker store i32 99, i32 addrspace(3)* %lptr, align 4 130*9880d681SAndroid Build Coastguard Worker %tmp2 = load i32, i32 addrspace(2)* %ptr2, align 4 131*9880d681SAndroid Build Coastguard Worker 132*9880d681SAndroid Build Coastguard Worker %add = add nsw i32 %tmp1, %tmp2 133*9880d681SAndroid Build Coastguard Worker 134*9880d681SAndroid Build Coastguard Worker store i32 %add, i32 addrspace(1)* %out, align 4 135*9880d681SAndroid Build Coastguard Worker ret void 136*9880d681SAndroid Build Coastguard Worker} 137*9880d681SAndroid Build Coastguard Worker 138*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: @reorder_global_load_local_store_global_load 139*9880d681SAndroid Build Coastguard Worker; CI: buffer_load_dword 140*9880d681SAndroid Build Coastguard Worker; CI: buffer_load_dword 141*9880d681SAndroid Build Coastguard Worker; CI: ds_write_b32 142*9880d681SAndroid Build Coastguard Worker; CI: buffer_store_dword 143*9880d681SAndroid Build Coastguard Workerdefine void @reorder_global_load_local_store_global_load(i32 addrspace(1)* %out, i32 addrspace(3)* %lptr, i32 addrspace(1)* %ptr0) #0 { 144*9880d681SAndroid Build Coastguard Worker %ptr1 = getelementptr inbounds i32, i32 addrspace(1)* %ptr0, i64 1 145*9880d681SAndroid Build Coastguard Worker %ptr2 = getelementptr inbounds i32, i32 addrspace(1)* %ptr0, i64 3 146*9880d681SAndroid Build Coastguard Worker 147*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32 addrspace(1)* %ptr1, align 4 148*9880d681SAndroid Build Coastguard Worker store i32 99, i32 addrspace(3)* %lptr, align 4 149*9880d681SAndroid Build Coastguard Worker %tmp2 = load i32, i32 addrspace(1)* %ptr2, align 4 150*9880d681SAndroid Build Coastguard Worker 151*9880d681SAndroid Build Coastguard Worker %add = add nsw i32 %tmp1, %tmp2 152*9880d681SAndroid Build Coastguard Worker 153*9880d681SAndroid Build Coastguard Worker store i32 %add, i32 addrspace(1)* %out, align 4 154*9880d681SAndroid Build Coastguard Worker ret void 155*9880d681SAndroid Build Coastguard Worker} 156*9880d681SAndroid Build Coastguard Worker 157*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: @reorder_local_offsets 158*9880d681SAndroid Build Coastguard Worker; CI: ds_read2_b32 {{v\[[0-9]+:[0-9]+\]}}, {{v[0-9]+}} offset0:100 offset1:102 159*9880d681SAndroid Build Coastguard Worker; CI: ds_write_b32 {{v[0-9]+}}, {{v[0-9]+}} offset:400 160*9880d681SAndroid Build Coastguard Worker; CI: ds_write_b32 {{v[0-9]+}}, {{v[0-9]+}} offset:408 161*9880d681SAndroid Build Coastguard Worker; CI: buffer_store_dword 162*9880d681SAndroid Build Coastguard Worker; CI: s_endpgm 163*9880d681SAndroid Build Coastguard Workerdefine void @reorder_local_offsets(i32 addrspace(1)* nocapture %out, i32 addrspace(1)* noalias nocapture readnone %gptr, i32 addrspace(3)* noalias nocapture %ptr0) #0 { 164*9880d681SAndroid Build Coastguard Worker %ptr1 = getelementptr inbounds i32, i32 addrspace(3)* %ptr0, i32 3 165*9880d681SAndroid Build Coastguard Worker %ptr2 = getelementptr inbounds i32, i32 addrspace(3)* %ptr0, i32 100 166*9880d681SAndroid Build Coastguard Worker %ptr3 = getelementptr inbounds i32, i32 addrspace(3)* %ptr0, i32 102 167*9880d681SAndroid Build Coastguard Worker 168*9880d681SAndroid Build Coastguard Worker store i32 123, i32 addrspace(3)* %ptr1, align 4 169*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32 addrspace(3)* %ptr2, align 4 170*9880d681SAndroid Build Coastguard Worker %tmp2 = load i32, i32 addrspace(3)* %ptr3, align 4 171*9880d681SAndroid Build Coastguard Worker store i32 123, i32 addrspace(3)* %ptr2, align 4 172*9880d681SAndroid Build Coastguard Worker %tmp3 = load i32, i32 addrspace(3)* %ptr1, align 4 173*9880d681SAndroid Build Coastguard Worker store i32 789, i32 addrspace(3)* %ptr3, align 4 174*9880d681SAndroid Build Coastguard Worker 175*9880d681SAndroid Build Coastguard Worker %add.0 = add nsw i32 %tmp2, %tmp1 176*9880d681SAndroid Build Coastguard Worker %add.1 = add nsw i32 %add.0, %tmp3 177*9880d681SAndroid Build Coastguard Worker store i32 %add.1, i32 addrspace(1)* %out, align 4 178*9880d681SAndroid Build Coastguard Worker ret void 179*9880d681SAndroid Build Coastguard Worker} 180*9880d681SAndroid Build Coastguard Worker 181*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: @reorder_global_offsets 182*9880d681SAndroid Build Coastguard Worker; CI: buffer_load_dword {{v[0-9]+}}, off, {{s\[[0-9]+:[0-9]+\]}}, 0 offset:400 183*9880d681SAndroid Build Coastguard Worker; CI: buffer_store_dword {{v[0-9]+}}, off, {{s\[[0-9]+:[0-9]+\]}}, 0 offset:12 184*9880d681SAndroid Build Coastguard Worker; CI: buffer_load_dword {{v[0-9]+}}, off, {{s\[[0-9]+:[0-9]+\]}}, 0 offset:408 185*9880d681SAndroid Build Coastguard Worker; CI: buffer_load_dword {{v[0-9]+}}, off, {{s\[[0-9]+:[0-9]+\]}}, 0 offset:12 186*9880d681SAndroid Build Coastguard Worker; CI: buffer_store_dword {{v[0-9]+}}, off, {{s\[[0-9]+:[0-9]+\]}}, 0 offset:400 187*9880d681SAndroid Build Coastguard Worker; CI: buffer_store_dword {{v[0-9]+}}, off, {{s\[[0-9]+:[0-9]+\]}}, 0 offset:408 188*9880d681SAndroid Build Coastguard Worker; CI: s_endpgm 189*9880d681SAndroid Build Coastguard Workerdefine void @reorder_global_offsets(i32 addrspace(1)* nocapture %out, i32 addrspace(1)* noalias nocapture readnone %gptr, i32 addrspace(1)* noalias nocapture %ptr0) #0 { 190*9880d681SAndroid Build Coastguard Worker %ptr1 = getelementptr inbounds i32, i32 addrspace(1)* %ptr0, i32 3 191*9880d681SAndroid Build Coastguard Worker %ptr2 = getelementptr inbounds i32, i32 addrspace(1)* %ptr0, i32 100 192*9880d681SAndroid Build Coastguard Worker %ptr3 = getelementptr inbounds i32, i32 addrspace(1)* %ptr0, i32 102 193*9880d681SAndroid Build Coastguard Worker 194*9880d681SAndroid Build Coastguard Worker store i32 123, i32 addrspace(1)* %ptr1, align 4 195*9880d681SAndroid Build Coastguard Worker %tmp1 = load i32, i32 addrspace(1)* %ptr2, align 4 196*9880d681SAndroid Build Coastguard Worker %tmp2 = load i32, i32 addrspace(1)* %ptr3, align 4 197*9880d681SAndroid Build Coastguard Worker store i32 123, i32 addrspace(1)* %ptr2, align 4 198*9880d681SAndroid Build Coastguard Worker %tmp3 = load i32, i32 addrspace(1)* %ptr1, align 4 199*9880d681SAndroid Build Coastguard Worker store i32 789, i32 addrspace(1)* %ptr3, align 4 200*9880d681SAndroid Build Coastguard Worker 201*9880d681SAndroid Build Coastguard Worker %add.0 = add nsw i32 %tmp2, %tmp1 202*9880d681SAndroid Build Coastguard Worker %add.1 = add nsw i32 %add.0, %tmp3 203*9880d681SAndroid Build Coastguard Worker store i32 %add.1, i32 addrspace(1)* %out, align 4 204*9880d681SAndroid Build Coastguard Worker ret void 205*9880d681SAndroid Build Coastguard Worker} 206*9880d681SAndroid Build Coastguard Worker 207*9880d681SAndroid Build Coastguard Worker; XFUNC-LABEL: @reorder_local_load_tbuffer_store_local_load 208*9880d681SAndroid Build Coastguard Worker; XCI: ds_read_b32 {{v[0-9]+}}, {{v[0-9]+}}, 0x4 209*9880d681SAndroid Build Coastguard Worker; XCI: TBUFFER_STORE_FORMAT 210*9880d681SAndroid Build Coastguard Worker; XCI: ds_read_b32 {{v[0-9]+}}, {{v[0-9]+}}, 0x8 211*9880d681SAndroid Build Coastguard Worker; define amdgpu_vs void @reorder_local_load_tbuffer_store_local_load(i32 addrspace(1)* %out, i32 %a1, i32 %vaddr) #0 { 212*9880d681SAndroid Build Coastguard Worker; %ptr0 = load i32 addrspace(3)*, i32 addrspace(3)* addrspace(3)* @stored_lds_ptr, align 4 213*9880d681SAndroid Build Coastguard Worker 214*9880d681SAndroid Build Coastguard Worker; %ptr1 = getelementptr inbounds i32, i32 addrspace(3)* %ptr0, i32 1 215*9880d681SAndroid Build Coastguard Worker; %ptr2 = getelementptr inbounds i32, i32 addrspace(3)* %ptr0, i32 2 216*9880d681SAndroid Build Coastguard Worker 217*9880d681SAndroid Build Coastguard Worker; %tmp1 = load i32, i32 addrspace(3)* %ptr1, align 4 218*9880d681SAndroid Build Coastguard Worker 219*9880d681SAndroid Build Coastguard Worker; %vdata = insertelement <4 x i32> undef, i32 %a1, i32 0 220*9880d681SAndroid Build Coastguard Worker; call void @llvm.SI.tbuffer.store.v4i32(<16 x i8> undef, <4 x i32> %vdata, 221*9880d681SAndroid Build Coastguard Worker; i32 4, i32 %vaddr, i32 0, i32 32, i32 14, i32 4, i32 1, i32 0, i32 1, 222*9880d681SAndroid Build Coastguard Worker; i32 1, i32 0) 223*9880d681SAndroid Build Coastguard Worker 224*9880d681SAndroid Build Coastguard Worker; %tmp2 = load i32, i32 addrspace(3)* %ptr2, align 4 225*9880d681SAndroid Build Coastguard Worker 226*9880d681SAndroid Build Coastguard Worker; %add = add nsw i32 %tmp1, %tmp2 227*9880d681SAndroid Build Coastguard Worker 228*9880d681SAndroid Build Coastguard Worker; store i32 %add, i32 addrspace(1)* %out, align 4 229*9880d681SAndroid Build Coastguard Worker; ret void 230*9880d681SAndroid Build Coastguard Worker; } 231*9880d681SAndroid Build Coastguard Worker 232*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind } 233*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind convergent } 234