; Function Attrs: nounwind
define void @__OpenCL_k02g_kernel(i32 addrspace(1)* noalias %g_output, %2 addrspace(2)* %g_header, %3 addrspace(1)* noalias %g_dag, i64 %start_nonce, i64 %target, i32 %isolate, i32 %dagsize, i32 %dm, i32 %dv, i32 %dmask, i32 addrspace(2)* noalias %d_header, i32 %d_ExtraNonce, i32 %DcrPerItem) #
0 {
entry:
%g_output.addr = alloca i32 addrspace(1)*, align 8
%g_header.addr = alloca %2 addrspace(2)*, align 8
%g_dag.addr = alloca %3 addrspace(1)*, align 8
%start_nonce.addr = alloca i64, align 8
%target.addr = alloca i64, align 8
%isolate.addr = alloca i32, align 4
%dagsize.addr = alloca i32, align 4
%dm.addr = alloca i32, align 4
%dv.addr = alloca i32, align 4
%dmask.addr = alloca i32, align 4
%d_header.addr = alloca i32 addrspace(2)*, align 8
%d_ExtraNonce.addr = alloca i32, align 4
%DcrPerItem.addr = alloca i32, align 4
%loc_arr = alloca [576 x
i64] addrspace(3)*, align 8
%state = alloca [25 x
i64], align 8
%gid = alloca i32, align 4
%lar = alloca i64 addrspace(3)*, align 8
%dpi = alloca i32, align 4
%curstep = alloca i32, align 4
%share = alloca %0 addrspace(3)*, align 8
%morebit = alloca i32, align 4
%thread_id = alloca i32, align 4
%hash_id = alloca i32, align 4
%mix = alloca <4 x
i32>, align 16
%share0 = alloca i32 addrspace(3)*, align 8
%init0 = alloca i32, align 4
%update_share = alloca i32, align 4
%ml = alloca i32, align 4
%aml = alloca i32, align 4
%res = alloca i32, align 4
%tmp319 = alloca <8 x
i8>, align 8
%slot = alloca i32, align 4
store i32 addrspace(1)* %g_output, i32 addrspace(1)** %g_output.addr, align 8
store %2 addrspace(2)* %g_header, %2 addrspace(2)** %g_header.addr, align 8
store %3 addrspace(1)* %g_dag, %3 addrspace(1)** %g_dag.addr, align 8
store i64 %start_nonce, i64* %start_nonce.addr, align 8
store i64 %target, i64* %target.addr, align 8
store i32 %isolate, i32* %isolate.addr, align 4
store i32 %dagsize, i32* %dagsize.addr, align 4
store i32 %dm, i32* %dm.addr, align 4
store i32 %dv, i32* %dv.addr, align 4
store i32 %dmask, i32* %dmask.addr, align 4
store i32 addrspace(2)* %d_header, i32 addrspace(2)** %d_header.addr, align 8
store i32 %d_ExtraNonce, i32* %d_ExtraNonce.addr, align 4
store i32 %DcrPerItem, i32* %DcrPerItem.addr, align 4
%tmp = load i32 addrspace(1)** %g_output.addr, align 8
%arrayidx = getelementptr i32 addrspace(1)* %tmp, i64 0
%tmp1 = load volatile i32 addrspace(1)* %arrayidx, align 4
%tmp2 = and i32 %tmp1, 15
%tobool = icmp ne
i32 %tmp2, 0
br i1 %tobool, label %if.then, label %if.end
return: ; preds = %if.end341, %for.exit, %if.then
ret void
if.end: ; preds = %entry
%conv = trunc i64 %call to i32
store i32 %conv, i32* %gid, align 4
%tmp3 = load [576 x
i64] addrspace(3)** %loc_arr, align 8
%ptr = getelementptr inbounds [576 x
i64] addrspace(3)* %tmp3, i32 0, i32 0
%tmp5 = mul i64 9, %call4
%tmp6 = getelementptr i64 addrspace(3)* %ptr, i64 %tmp5
store i64 addrspace(3)* %tmp6, i64 addrspace(3)** %lar, align 8
%tmp7 = load i32* %gid, align 4
%tmp8 = udiv i32 %tmp7, 64
store i32 %tmp8, i32* %n, align 4
%tmp9 = load i32* %n, align 4
%tmp10 = urem i32 %tmp9, 3
%cmp = icmp eq
i32 %tmp10, 0
br i1 %cmp, label %if.then12, label %if.end11
if.then: ; preds = %entry
br label %return
if.end11: ; preds = %if.end
%tmp46 = load [576 x
i64] addrspace(3)** %loc_arr, align 8
%ptr47 = getelementptr inbounds [576 x
i64] addrspace(3)* %tmp46, i32 0, i32 0
%conv48 = bitcast i64 addrspace(3)* %ptr47 to %0 addrspace(3)*
store %0 addrspace(3)* %conv48, %0 addrspace(3)** %share, align 8
br label %for.cond50
if.then12: ; preds = %if.end
%tmp13 = load i32* %DcrPerItem.addr, align 4
%tmp14 = add i32 %tmp13, 16
%tmp15 = udiv i32 %tmp14, 16
store i32 %tmp15, i32* %dpi, align 4
%tmp16 = load i32* %gid, align 4
%tmp17 = mul i32 16, %tmp16
%conv18 = zext i32 %tmp17 to i64
%tmp20 = udiv i64 %conv18, %call19
%conv21 = trunc i64 %tmp20 to i32
store i32 %conv21, i32* %curstep, align 4
%tmp22 = load i32* %curstep, align 4
%tmp23 = load i32* %DcrPerItem.addr, align 4
%tmp24 = and i32 %tmp23, 15
%cmp25 = icmp ult
i32 %tmp22, %tmp24
br i1 %cmp25, label %if.then27, label %if.end26
if.end26: ; preds = %if.then27, %if.then12
br label %for.cond
if.then27: ; preds = %if.then12
%tmp28 = load i32* %dpi, align 4
%tmp29 = add i32 %tmp28, 1
store i32 %tmp29, i32* %dpi, align 4
br label %if.end26
for.cond: ; preds = %for.inc, %if.end26
%tmp30 = load i32* %i, align 4
%tmp31 = load i32* %dpi, align 4
%cmp32 = icmp ult
i32 %tmp30, %tmp31
br i1 %cmp32, label %for.body, label %for.exit
for.exit: ; preds = %for.cond
br label %return
for.body: ; preds = %for.cond
%tmp33 = load i32 addrspace(1)** %g_output.addr, align 8
%tmp34 = load i32 addrspace(2)** %d_header.addr, align 8
%tmp35 = load i32* %gid, align 4
%conv36 = zext i32 %tmp35 to i64
%tmp37 = load i32* %i, align 4
%conv38 = zext i32 %tmp37 to i64
%tmp40 = mul i64 %conv38, %call39
%tmp41 = add i64 %conv36, %tmp40
%conv42 = trunc i64 %tmp41 to i32
%tmp43 = load i64 addrspace(3)** %lar, align 8
call void @lbc_search(i32 addrspace(1)* noalias %tmp33, i32 addrspace(2)* %tmp34, i32 %conv42, i64 addrspace(3)* %tmp43) #
0
br label %for.inc
for.inc: ; preds = %for.body
%tmp44 = load i32* %i, align 4
%tmp45 = add i32 %tmp44, 1
store i32 %tmp45, i32* %i, align 4
br label %for.cond
for.cond50: ; preds = %for.inc55, %if.end11
%tmp52 = load i32* %i49, align 4
%cmp53 = icmp ne
i32 %tmp52, 4
br i1 %cmp53, label %for.body54, label %for.exit51
for.exit51: ; preds = %for.cond50
%ptr68 = getelementptr inbounds [25 x
i64]* %state, i32 0, i32 0
%arrayidx69 = getelementptr i64* %ptr68, i64 4
%tmp70 = load i64* %start_nonce.addr, align 8
%tmp71 = load i32* %gid, align 4
%conv72 = zext i32 %tmp71 to i64
%tmp73 = add i64 %tmp70, %conv72
store i64 %tmp73, i64* %arrayidx69, align 8
br label %for.cond75
for.body54: ; preds = %for.cond50
%ptr56 = getelementptr inbounds [25 x
i64]* %state, i32 0, i32 0
%tmp57 = load i32* %i49, align 4
%conv58 = zext i32 %tmp57 to i64
%arrayidx59 = getelementptr i64* %ptr56, i64 %conv58
%tmp60 = load %2 addrspace(2)** %g_header.addr, align 8
%structele = getelementptr inbounds %2 addrspace(2)* %tmp60, i32 0, i32 0
%ptr61 = getelementptr inbounds [4 x
i64] addrspace(2)* %structele, i32 0, i32 0
%tmp62 = load i32* %i49, align 4
%conv63 = zext i32 %tmp62 to i64
%arrayidx64 = getelementptr i64 addrspace(2)* %ptr61, i64 %conv63
%tmp65 = load i64 addrspace(2)* %arrayidx64, align 8
store i64 %tmp65, i64* %arrayidx59, align 8
br label %for.inc55
for.inc55: ; preds = %for.body54
%tmp66 = load i32* %i49, align 4
%tmp67 = add i32 %tmp66, 1
br label %for.cond50
for.cond75: ; preds = %for.inc80, %for.exit51
%tmp77 = load i32* %i74, align 4
%cmp78 = icmp ne
i32 %tmp77, 25
br i1 %cmp78, label %for.body79, label %for.exit76
for.exit76: ; preds = %for.cond75
%ptr87 = getelementptr inbounds [25 x
i64]* %state, i32 0, i32 0
%arrayidx88 = getelementptr i64* %ptr87, i64 5
store i64 1, i64* %arrayidx88, align 8
%ptr89 = getelementptr inbounds [25 x
i64]* %state, i32 0, i32 0
%arrayidx90 = getelementptr i64* %ptr89, i64 8
store i64 -9223372036854775808, i64* %arrayidx90, align 8
%ptr91 = getelementptr inbounds [25 x
i64]* %state, i32 0, i32 0
%conv92 = bitcast i64* %ptr91 to <2 x
i32>*
%tmp93 = load i32* %isolate.addr, align 4
%tmp94 = load i32* %dm.addr, align 4
%tmp95 = sub i32 32, %tmp94
%tmp96 = and i32 %tmp95, 63
%tmp97 = zext i32 %tmp96 to i64
%tmp98 = shl i64 1, %tmp97
%conv99 = trunc i64 %tmp98 to i32
store i32 %conv99, i32* %morebit, align 4
%tmp100 = load i32* %gid, align 4
%tmp101 = and i32 %tmp100, 7
store i32 %tmp101, i32* %thread_id, align 4
%tmp102 = load i32* %gid, align 4
%tmp103 = urem i32 %tmp102, 64
%tmp104 = lshr i32 %tmp103, 3
store i32 %tmp104, i32* %hash_id, align 4
br label %for.cond106
for.body79: ; preds = %for.cond75
%ptr81 = getelementptr inbounds [25 x
i64]* %state, i32 0, i32 0
%tmp82 = load i32* %i74, align 4
%conv83 = zext i32 %tmp82 to i64
%arrayidx84 = getelementptr i64* %ptr81, i64 %conv83
store i64 0, i64* %arrayidx84, align 8
br label %for.inc80
for.inc80: ; preds = %for.body79
%tmp85 = load i32* %i74, align 4
%tmp86 = add i32 %tmp85, 1
br label %for.cond75
for.cond106: ; preds = %for.inc111, %for.exit76
%cmp109 = icmp slt
i32 %tmp108, 8
br i1 %cmp109, label %for.body110, label %for.exit107
for.exit107: ; preds = %for.cond106
br label %for.cond295
for.body110: ; preds = %for.cond106
%tmp113 = load i32* %thread_id, align 4
%cmp114 = icmp eq
i32 %tmp112, %tmp113
br i1 %cmp114, label %if.then116, label %if.end115
for.inc111: ; preds = %if.end264
%tmp293 = add nsw i32 %tmp292, 1
br label %for.cond106
if.end115: ; preds = %for.exit119, %for.body110
%tmp141 = load %0 addrspace(3)** %share, align 8
%tmp142 = load i32* %hash_id, align 4
%conv143 = zext i32 %tmp142 to i64
%arrayidx144 = getelementptr %0 addrspace(3)* %tmp141, i64 %conv143
%structele145 = getelementptr inbounds %0 addrspace(3)* %arrayidx144, i32 0, i32 0
%ptr146 = getelementptr inbounds [4 x
<4 x
i32>] addrspace(3)* %structele145, i32 0, i32 0
%tmp147 = load i32* %thread_id, align 4
%tmp148 = and i32 %tmp147, 3
%conv149 = zext i32 %tmp148 to i64
%arrayidx150 = getelementptr <4 x
i32> addrspace(3)* %ptr146, i64 %conv149
%tmp151 = load <4 x
i32> addrspace(3)* %arrayidx150, align 16
store <4 x
i32> %tmp151, <4 x
i32>* %mix, align 16
%tmp152 = load %0 addrspace(3)** %share, align 8
%tmp153 = load i32* %hash_id, align 4
%conv154 = zext i32 %tmp153 to i64
%arrayidx155 = getelementptr %0 addrspace(3)* %tmp152, i64 %conv154
%structele156 = getelementptr inbounds %0 addrspace(3)* %arrayidx155, i32 0, i32 0
%tmp157 = bitcast [4 x
<4 x
i32>] addrspace(3)* %structele156 to [16 x
i32] addrspace(3)*
%ptr158 = getelementptr inbounds [16 x
i32] addrspace(3)* %tmp157, i32 0, i32 0
store i32 addrspace(3)* %ptr158, i32 addrspace(3)** %share0, align 8
%tmp159 = load i32* %thread_id, align 4
%cmp160 = icmp eq
i32 %tmp159, 0
br i1 %cmp160, label %if.then162, label %if.end161
if.then116: ; preds = %for.body110
br label %for.cond118
for.cond118: ; preds = %for.inc123, %if.then116
%cmp121 = icmp ne
i32 %tmp120, 8
br i1 %cmp121, label %for.body122, label %for.exit119
for.exit119: ; preds = %for.cond118
br label %if.end115
for.body122: ; preds = %for.cond118
%tmp124 = load %0 addrspace(3)** %share, align 8
%tmp125 = load i32* %hash_id, align 4
%conv126 = zext i32 %tmp125 to i64
%arrayidx127 = getelementptr %0 addrspace(3)* %tmp124, i64 %conv126
%structele128 = getelementptr inbounds %0 addrspace(3)* %arrayidx127, i32 0, i32 0
%tmp129 = bitcast [4 x
<4 x
i32>] addrspace(3)* %structele128 to [8 x
i64] addrspace(3)*
%ptr130 = getelementptr inbounds [8 x
i64] addrspace(3)* %tmp129, i32 0, i32 0
%conv132 = zext i32 %tmp131 to i64
%arrayidx133 = getelementptr i64 addrspace(3)* %ptr130, i64 %conv132
%ptr134 = getelementptr inbounds [25 x
i64]* %state, i32 0, i32 0
%conv136 = zext i32 %tmp135 to i64
%arrayidx137 = getelementptr i64* %ptr134, i64 %conv136
%tmp138 = load i64* %arrayidx137, align 8
store i64 %tmp138, i64 addrspace(3)* %arrayidx133, align 8
br label %for.inc123
for.inc123: ; preds = %for.body122
%tmp140 = add i32 %tmp139, 1
br label %for.cond118
if.end161: ; preds = %if.then162, %if.end115
%tmp166 = load i32 addrspace(3)** %share0, align 8
%tmp167 = load i32 addrspace(3)* %tmp166, align 4
store i32 %tmp167, i32* %init0, align 4
br label %for.cond168
if.then162: ; preds = %if.end115
%tmp163 = load i32 addrspace(3)** %share0, align 8
%tmp164 = load <4 x
i32>* %mix, align 16
%tmp165 = extractelement <4 x
i32> %tmp164, i32 0
store i32 %tmp165, i32 addrspace(3)* %tmp163, align 4
br label %if.end161
for.cond168: ; preds = %for.inc173, %if.end161
%tmp170 = load i32* %a, align 4
%cmp171 = icmp ult
i32 %tmp170, 64
br i1 %cmp171, label %for.body172, label %for.exit169
for.exit169: ; preds = %for.cond168
%tmp248 = load %0 addrspace(3)** %share, align 8
%tmp249 = load i32* %hash_id, align 4
%conv250 = zext i32 %tmp249 to i64
%arrayidx251 = getelementptr %0 addrspace(3)* %tmp248, i64 %conv250
%structele252 = getelementptr inbounds %0 addrspace(3)* %arrayidx251, i32 0, i32 0
%tmp253 = bitcast [4 x
<4 x
i32>] addrspace(3)* %structele252 to [16 x
i32] addrspace(3)*
%ptr254 = getelementptr inbounds [16 x
i32] addrspace(3)* %tmp253, i32 0, i32 0
%tmp255 = load i32* %thread_id, align 4
%conv256 = zext i32 %tmp255 to i64
%arrayidx257 = getelementptr i32 addrspace(3)* %ptr254, i64 %conv256
%tmp258 = load <4 x
i32>* %mix, align 16
store i32 %call259, i32 addrspace(3)* %arrayidx257, align 4
%tmp261 = load i32* %thread_id, align 4
%cmp262 = icmp eq
i32 %tmp260, %tmp261
br i1 %cmp262, label %if.then265, label %if.end264
for.body172: ; preds = %for.cond168
%tmp174 = load i32* %thread_id, align 4
%tmp175 = load i32* %a, align 4
%tmp176 = lshr i32 %tmp175, 2
%tmp177 = and i32 %tmp176, 7
%cmp178 = icmp eq
i32 %tmp174, %tmp177
%cmp.ext = zext i1 %cmp178 to i32
%cmp179 = icmp ne
i32 %cmp.ext, 0
%cmp.ext180 = zext i1 %cmp179 to i32
store i32 %cmp.ext180, i32* %update_share, align 4
br label %for.cond182
for.inc173: ; preds = %for.exit183
%tmp246 = load i32* %a, align 4
%tmp247 = add i32 %tmp246, 4
store i32 %tmp247, i32* %a, align 4
br label %for.cond168
for.cond182: ; preds = %for.inc188, %for.body172
%cmp185 = icmp ne
i32 %tmp184, 4
br i1 %cmp185, label %for.body187, label %for.exit183
for.exit183: ; preds = %for.cond182
br label %for.inc173
for.body187: ; preds = %for.cond182
%tmp189 = load i32* %update_share, align 4
%tobool190 = icmp ne
i32 %tmp189, 0
br i1 %tobool190, label %if.then192, label %if.end191
for.inc188: ; preds = %if.end191
%tmp245 = add i32 %tmp244, 1
br label %for.cond182
if.end191: ; preds = %if.end220, %for.body187
%tmp231 = load <4 x
i32>* %mix, align 16
%tmp232 = load %3 addrspace(1)** %g_dag.addr, align 8
%tmp233 = load i32 addrspace(3)** %share0, align 8
%tmp234 = load i32 addrspace(3)* %tmp233, align 4
%conv235 = zext i32 %tmp234 to i64
%arrayidx236 = getelementptr %3 addrspace(1)* %tmp232, i64 %conv235
%structele237 = getelementptr inbounds %3 addrspace(1)* %arrayidx236, i32 0, i32 0
%ptr238 = getelementptr inbounds [8 x
<4 x
i32>] addrspace(1)* %structele237, i32 0, i32 0
%tmp239 = load i32* %thread_id, align 4
%conv240 = zext i32 %tmp239 to i64
%arrayidx241 = getelementptr <4 x
i32> addrspace(1)* %ptr238, i64 %conv240
%tmp242 = load <4 x
i32> addrspace(1)* %arrayidx241, align 16
%call243 = call <4 x
i32> @fnv4(<4 x
i32> %tmp231, <4 x
i32> %tmp242) #
0
store <4 x
i32> %call243, <4 x
i32>* %mix, align 16
br label %for.inc188
if.then192: ; preds = %for.body187
%tmp193 = load i32* %init0, align 4
%tmp194 = load i32* %a, align 4
%tmp196 = add i32 %tmp194, %tmp195
%tmp197 = xor i32 %tmp193, %tmp196
%conv198 = bitcast <4 x
i32>* %mix to i32*
%conv200 = zext i32 %tmp199 to i64
%arrayidx201 = getelementptr i32* %conv198, i64 %conv200
%tmp202 = load i32* %arrayidx201, align 4
store i32 %call203, i32* %v, align 4
%tmp204 = load i32* %v, align 4
%tmp205 = load i32* %dv.addr, align 4
store i32 %call206, i32* %ml, align 4
%tmp207 = load i32* %ml, align 4
%tmp208 = load i32* %v, align 4
%tmp209 = load i32* %dmask.addr, align 4
%tmp210 = and i32 %tmp208, %tmp209
%tmp211 = add i32 %tmp207, %tmp210
store i32 %tmp211, i32* %aml, align 4
%tmp212 = load i32* %aml, align 4
%tmp213 = load i32* %dm.addr, align 4
%tmp214 = and i32 %tmp213, 31
%tmp215 = lshr i32 %tmp212, %tmp214
store i32 %tmp215, i32* %res, align 4
%tmp216 = load i32* %aml, align 4
%tmp217 = load i32* %ml, align 4
%cmp218 = icmp ult
i32 %tmp216, %tmp217
br i1 %cmp218, label %if.then221, label %if.end220
if.end220: ; preds = %if.then221, %if.then192
%tmp225 = load i32 addrspace(3)** %share0, align 8
%tmp226 = load i32* %v, align 4
%tmp227 = load i32* %dagsize.addr, align 4
%tmp228 = load i32* %res, align 4
%tmp229 = mul i32 %tmp227, %tmp228
%tmp230 = sub i32 %tmp226, %tmp229
store i32 %tmp230, i32 addrspace(3)* %tmp225, align 4
br label %if.end191
if.then221: ; preds = %if.then192
%tmp222 = load i32* %res, align 4
%tmp223 = load i32* %morebit, align 4
%tmp224 = or i32 %tmp222, %tmp223
store i32 %tmp224, i32* %res, align 4
br label %if.end220
if.end264: ; preds = %for.exit268, %for.exit169
br label %for.inc111
if.then265: ; preds = %for.exit169
br label %for.cond267
for.cond267: ; preds = %for.inc273, %if.then265
%cmp270 = icmp ne
i32 %tmp269, 4
br i1 %cmp270, label %for.body272, label %for.exit268
for.exit268: ; preds = %for.cond267
br label %if.end264
for.body272: ; preds = %for.cond267
%ptr274 = getelementptr inbounds [25 x
i64]* %state, i32 0, i32 0
%tmp275 = getelementptr i64* %ptr274, i64 8
%conv277 = zext i32 %tmp276 to i64
%arrayidx278 = getelementptr i64* %tmp275, i64 %conv277
%tmp279 = load %0 addrspace(3)** %share, align 8
%tmp280 = load i32* %hash_id, align 4
%conv281 = zext i32 %tmp280 to i64
%arrayidx282 = getelementptr %0 addrspace(3)* %tmp279, i64 %conv281
%structele283 = getelementptr inbounds %0 addrspace(3)* %arrayidx282, i32 0, i32 0
%tmp284 = bitcast [4 x
<4 x
i32>] addrspace(3)* %structele283 to [8 x
i64] addrspace(3)*
%ptr285 = getelementptr inbounds [8 x
i64] addrspace(3)* %tmp284, i32 0, i32 0
%conv287 = zext i32 %tmp286 to i64
%arrayidx288 = getelementptr i64 addrspace(3)* %ptr285, i64 %conv287
%tmp289 = load i64 addrspace(3)* %arrayidx288, align 8
store i64 %tmp289, i64* %arrayidx278, align 8
br label %for.inc273
for.inc273: ; preds = %for.body272
%tmp291 = add i32 %tmp290, 1
br label %for.cond267
for.cond295: ; preds = %for.inc301, %for.exit107
%cmp298 = icmp ne
i32 %tmp297, 25
br i1 %cmp298, label %for.body300, label %for.exit296
for.exit296: ; preds = %for.cond295
%ptr308 = getelementptr inbounds [25 x
i64]* %state, i32 0, i32 0
%arrayidx309 = getelementptr i64* %ptr308, i64 12
store i64 1, i64* %arrayidx309, align 8
%ptr310 = getelementptr inbounds [25 x
i64]* %state, i32 0, i32 0
%arrayidx311 = getelementptr i64* %ptr310, i64 16
store i64 -9223372036854775808, i64* %arrayidx311, align 8
%ptr312 = getelementptr inbounds [25 x
i64]* %state, i32 0, i32 0
%conv313 = bitcast i64* %ptr312 to <2 x
i32>*
%tmp314 = load i32* %isolate.addr, align 4
%ptr315 = getelementptr inbounds [25 x
i64]* %state, i32 0, i32 0
%arrayidx316 = getelementptr i64* %ptr315, i64 0
%tmp317 = load i64* %arrayidx316, align 8
%conv318 = bitcast i64 %tmp317 to <8 x
i8>
store <8 x
i8> %conv318, <8 x
i8>* %tmp319, align 8
%tmp320 = load <8 x
i8>* %tmp319, align 8
%tmp321 = extractelement <8 x
i8> %tmp320, i32 7
%tmp322 = insertelement <8 x
i8> undef, i8 %tmp321, i32 0
%tmp323 = extractelement <8 x
i8> %tmp320, i32 6
%tmp324 = insertelement <8 x
i8> %tmp322, i8 %tmp323, i32 1
%tmp325 = extractelement <8 x
i8> %tmp320, i32 5
%tmp326 = insertelement <8 x
i8> %tmp324, i8 %tmp325, i32 2
%tmp327 = extractelement <8 x
i8> %tmp320, i32 4
%tmp328 = insertelement <8 x
i8> %tmp326, i8 %tmp327, i32 3
%tmp329 = extractelement <8 x
i8> %tmp320, i32 3
%tmp330 = insertelement <8 x
i8> %tmp328, i8 %tmp329, i32 4
%tmp331 = extractelement <8 x
i8> %tmp320, i32 2
%tmp332 = insertelement <8 x
i8> %tmp330, i8 %tmp331, i32 5
%tmp333 = extractelement <8 x
i8> %tmp320, i32 1
%tmp334 = insertelement <8 x
i8> %tmp332, i8 %tmp333, i32 6
%tmp335 = extractelement <8 x
i8> %tmp320, i32 0
%tmp336 = insertelement <8 x
i8> %tmp334, i8 %tmp335, i32 7
%conv337 = bitcast <8 x
i8> %tmp336 to i64
%tmp338 = load i64* %target.addr, align 8
%cmp339 = icmp ult
i64 %conv337, %tmp338
br i1 %cmp339, label %if.then342, label %if.end341
for.body300: ; preds = %for.cond295
%ptr302 = getelementptr inbounds [25 x
i64]* %state, i32 0, i32 0
%conv304 = zext i32 %tmp303 to i64
%arrayidx305 = getelementptr i64* %ptr302, i64 %conv304
store i64 0, i64* %arrayidx305, align 8
br label %for.inc301
for.inc301: ; preds = %for.body300
%tmp307 = add i32 %tmp306, 1
br label %for.cond295
if.end341: ; preds = %if.then342, %for.exit296
br label %return
if.then342: ; preds = %for.exit296
%tmp343 = load i32 addrspace(1)** %g_output.addr, align 8
%tmp344 = getelementptr i32 addrspace(1)* %tmp343, i64 0
store i32 %call346, i32* %slot, align 4
%tmp347 = load i32 addrspace(1)** %g_output.addr, align 8
%tmp348 = load i32* %slot, align 4
%tmp349 = mul i32 9, %tmp348
%tmp350 = add i32 1, %tmp349
%conv351 = zext i32 %tmp350 to i64
%arrayidx352 = getelementptr i32 addrspace(1)* %tmp347, i64 %conv351
%tmp353 = load i32* %gid, align 4
store volatile i32 %tmp353, i32 addrspace(1)* %arrayidx352, align 4
br label %if.end341
}