4674 lines · plain
1; This is an excerpt from the SYCL end-to-end test suite, cleaned out from2; unrelevant details, that reproduced cases of invalid SPIR-V generation due3; to wrong types, deduced from the input LLVM IR. Namely, this test case covers4; cases of type mismatch when null pointer constant is used in different5; contexts and so with different pointee types, and intertwined6; load/store/function call LLVM IR input with bitcasts inserted between7; instruction uses.8 9; The only pass criterion is that spirv-val considers output valid.10 11; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64v1.5-unknown-unknown %s -o - -filetype=obj | spirv-val --target-env spv1.5 %}12 13%"nd_item" = type { i8 }14%struct.AssertHappened = type { i32, [257 x i8], [257 x i8], [129 x i8], i32, i64, i64, i64, i64, i64, i64 }15%"range" = type { %"detail::array" }16%"detail::array" = type { [1 x i64] }17%class.anon = type { %"accessor", %"accessor", %"accessor", %"accessor", %"accessor", %"accessor", %"accessor", %"accessor", %"accessor", %"accessor", %"accessor", %"accessor", %"accessor" }18%"accessor" = type { %"detail::AccessorImplDevice", %union.anon }19%"detail::AccessorImplDevice" = type { %"range", %"range", %"range" }20%union.anon = type { ptr addrspace(1) }21%class.anon.6 = type { ptr addrspace(4), ptr addrspace(4), ptr addrspace(4), ptr addrspace(4) }22%"group" = type { %"range", %"range", %"range", %"range" }23%"item" = type { %"detail::AccessorImplDevice" }24%"item.22" = type { %"sd_ItemBase.23" }25%"sd_ItemBase.23" = type { %"range", %"range" }26%"tangle_group" = type { %"ss_sub_group_mask" }27%"ss_sub_group_mask" = type { i64, i64 }28%class.anon.8 = type { %"accessor", %"accessor", [8 x i8], %"accessor", %"accessor", %"accessor", %"accessor", %"accessor", %"accessor", %"accessor", %"accessor", %"accessor", %"accessor", %"accessor" }29%"vec.16" = type { %"struct.std::array.20" }30%"struct.std::array.20" = type { [4 x i32] }31%class.anon.15 = type { ptr addrspace(4), ptr addrspace(4), ptr addrspace(4) }32%class.anon.7 = type { ptr addrspace(4), ptr addrspace(4) }33 34@.str = private unnamed_addr addrspace(1) constant [21 x i8] c"bits_num <= max_bits\00", align 135@.str.1 = private unnamed_addr addrspace(1) constant [17 x i8] c"subgroupmask.hpp\00", align 136@__PRETTY_FUNCTION1 = private unnamed_addr addrspace(1) constant [32 x i8] c"subgroup_mask(BitsType, size_t)\00", align 137@.str.2 = private unnamed_addr addrspace(1) constant [15 x i8] c"bn <= max_bits\00", align 138@__PRETTY_FUNCTION2 = private unnamed_addr addrspace(1) constant [52 x i8] c"BitsType subgroup_mask::valuable_bits(size_t) const\00", align 139@__spirv_BuiltInSubgroupMaxSize = external dso_local addrspace(1) constant i32, align 440@__spirv_BuiltInSubgroupLocalInvocationId = external dso_local addrspace(1) constant i32, align 441@_ZSt6ignore = linkonce_odr dso_local addrspace(1) constant %"nd_item" undef, align 142@__spirv_BuiltInNumWorkgroups = external dso_local addrspace(1) constant <3 x i64>, align 3243@__spirv_BuiltInGlobalOffset = external dso_local addrspace(1) constant <3 x i64>, align 3244@__spirv_BuiltInGlobalInvocationId = external dso_local addrspace(1) constant <3 x i64>, align 3245@__spirv_BuiltInGlobalSize = external dso_local addrspace(1) constant <3 x i64>, align 3246@__spirv_BuiltInLocalInvocationId = external dso_local addrspace(1) constant <3 x i64>, align 3247@SPIR_AssertHappenedMem = linkonce_odr dso_local addrspace(1) global %struct.AssertHappened zeroinitializer48@__spirv_BuiltInWorkgroupId = external dso_local addrspace(1) constant <3 x i64>, align 3249@__spirv_BuiltInWorkgroupSize = external dso_local addrspace(1) constant <3 x i64>, align 3250 51 52define weak_odr dso_local spir_kernel void @TestKernel(ptr addrspace(1) %_arg_TmpAcc, ptr byval(%"range") %_arg_TmpAcc1, ptr byval(%"range") %_arg_TmpAcc2, ptr byval(%"range") %_arg_TmpAcc3, ptr addrspace(1) align 1 %_arg_BarrierAcc, ptr byval(%"range") %_arg_BarrierAcc4, ptr byval(%"range") %_arg_BarrierAcc5, ptr byval(%"range") %_arg_BarrierAcc6, ptr addrspace(1) align 1 %_arg_BroadcastAcc, ptr byval(%"range") %_arg_BroadcastAcc7, ptr byval(%"range") %_arg_BroadcastAcc8, ptr byval(%"range") %_arg_BroadcastAcc9, ptr addrspace(1) align 1 %_arg_AnyAcc, ptr byval(%"range") %_arg_AnyAcc10, ptr byval(%"range") %_arg_AnyAcc11, ptr byval(%"range") %_arg_AnyAcc12, ptr addrspace(1) align 1 %_arg_AllAcc, ptr byval(%"range") %_arg_AllAcc13, ptr byval(%"range") %_arg_AllAcc14, ptr byval(%"range") %_arg_AllAcc15, ptr addrspace(1) align 1 %_arg_NoneAcc, ptr byval(%"range") %_arg_NoneAcc16, ptr byval(%"range") %_arg_NoneAcc17, ptr byval(%"range") %_arg_NoneAcc18, ptr addrspace(1) align 1 %_arg_ReduceAcc, ptr byval(%"range") %_arg_ReduceAcc19, ptr byval(%"range") %_arg_ReduceAcc20, ptr byval(%"range") %_arg_ReduceAcc21, ptr addrspace(1) align 1 %_arg_ExScanAcc, ptr byval(%"range") %_arg_ExScanAcc22, ptr byval(%"range") %_arg_ExScanAcc23, ptr byval(%"range") %_arg_ExScanAcc24, ptr addrspace(1) align 1 %_arg_IncScanAcc, ptr byval(%"range") %_arg_IncScanAcc25, ptr byval(%"range") %_arg_IncScanAcc26, ptr byval(%"range") %_arg_IncScanAcc27, ptr addrspace(1) align 1 %_arg_ShiftLeftAcc, ptr byval(%"range") %_arg_ShiftLeftAcc28, ptr byval(%"range") %_arg_ShiftLeftAcc29, ptr byval(%"range") %_arg_ShiftLeftAcc30, ptr addrspace(1) align 1 %_arg_ShiftRightAcc, ptr byval(%"range") %_arg_ShiftRightAcc31, ptr byval(%"range") %_arg_ShiftRightAcc32, ptr byval(%"range") %_arg_ShiftRightAcc33, ptr addrspace(1) align 1 %_arg_SelectAcc, ptr byval(%"range") %_arg_SelectAcc34, ptr byval(%"range") %_arg_SelectAcc35, ptr byval(%"range") %_arg_SelectAcc36, ptr addrspace(1) align 1 %_arg_PermuteXorAcc, ptr byval(%"range") %_arg_PermuteXorAcc37, ptr byval(%"range") %_arg_PermuteXorAcc38, ptr byval(%"range") %_arg_PermuteXorAcc39) {53entry:54 %_arg_TmpAcc.addr = alloca ptr addrspace(1)55 %_arg_BarrierAcc.addr = alloca ptr addrspace(1)56 %_arg_BroadcastAcc.addr = alloca ptr addrspace(1)57 %_arg_AnyAcc.addr = alloca ptr addrspace(1)58 %_arg_AllAcc.addr = alloca ptr addrspace(1)59 %_arg_NoneAcc.addr = alloca ptr addrspace(1)60 %_arg_ReduceAcc.addr = alloca ptr addrspace(1)61 %_arg_ExScanAcc.addr = alloca ptr addrspace(1)62 %_arg_IncScanAcc.addr = alloca ptr addrspace(1)63 %_arg_ShiftLeftAcc.addr = alloca ptr addrspace(1)64 %_arg_ShiftRightAcc.addr = alloca ptr addrspace(1)65 %_arg_SelectAcc.addr = alloca ptr addrspace(1)66 %_arg_PermuteXorAcc.addr = alloca ptr addrspace(1)67 %Kernel = alloca %class.anon68 %agg.tmp = alloca %"range"69 %agg.tmp41 = alloca %"range"70 %agg.tmp42 = alloca %"range"71 %agg.tmp44 = alloca %"range"72 %agg.tmp45 = alloca %"range"73 %agg.tmp46 = alloca %"range"74 %agg.tmp48 = alloca %"range"75 %agg.tmp49 = alloca %"range"76 %agg.tmp50 = alloca %"range"77 %agg.tmp52 = alloca %"range"78 %agg.tmp53 = alloca %"range"79 %agg.tmp54 = alloca %"range"80 %agg.tmp56 = alloca %"range"81 %agg.tmp57 = alloca %"range"82 %agg.tmp58 = alloca %"range"83 %agg.tmp60 = alloca %"range"84 %agg.tmp61 = alloca %"range"85 %agg.tmp62 = alloca %"range"86 %agg.tmp64 = alloca %"range"87 %agg.tmp65 = alloca %"range"88 %agg.tmp66 = alloca %"range"89 %agg.tmp68 = alloca %"range"90 %agg.tmp69 = alloca %"range"91 %agg.tmp70 = alloca %"range"92 %agg.tmp72 = alloca %"range"93 %agg.tmp73 = alloca %"range"94 %agg.tmp74 = alloca %"range"95 %agg.tmp76 = alloca %"range"96 %agg.tmp77 = alloca %"range"97 %agg.tmp78 = alloca %"range"98 %agg.tmp80 = alloca %"range"99 %agg.tmp81 = alloca %"range"100 %agg.tmp82 = alloca %"range"101 %agg.tmp84 = alloca %"range"102 %agg.tmp85 = alloca %"range"103 %agg.tmp86 = alloca %"range"104 %agg.tmp88 = alloca %"range"105 %agg.tmp89 = alloca %"range"106 %agg.tmp90 = alloca %"range"107 %agg.tmp91 = alloca %"nd_item", align 1108 %Kernel.ascast = addrspacecast ptr %Kernel to ptr addrspace(4)109 %agg.tmp91.ascast = addrspacecast ptr %agg.tmp91 to ptr addrspace(4)110 store ptr addrspace(1) %_arg_TmpAcc, ptr %_arg_TmpAcc.addr111 store ptr addrspace(1) %_arg_BarrierAcc, ptr %_arg_BarrierAcc.addr112 store ptr addrspace(1) %_arg_BroadcastAcc, ptr %_arg_BroadcastAcc.addr113 store ptr addrspace(1) %_arg_AnyAcc, ptr %_arg_AnyAcc.addr114 store ptr addrspace(1) %_arg_AllAcc, ptr %_arg_AllAcc.addr115 store ptr addrspace(1) %_arg_NoneAcc, ptr %_arg_NoneAcc.addr116 store ptr addrspace(1) %_arg_ReduceAcc, ptr %_arg_ReduceAcc.addr117 store ptr addrspace(1) %_arg_ExScanAcc, ptr %_arg_ExScanAcc.addr118 store ptr addrspace(1) %_arg_IncScanAcc, ptr %_arg_IncScanAcc.addr119 store ptr addrspace(1) %_arg_ShiftLeftAcc, ptr %_arg_ShiftLeftAcc.addr120 store ptr addrspace(1) %_arg_ShiftRightAcc, ptr %_arg_ShiftRightAcc.addr121 store ptr addrspace(1) %_arg_SelectAcc, ptr %_arg_SelectAcc.addr122 store ptr addrspace(1) %_arg_PermuteXorAcc, ptr %_arg_PermuteXorAcc.addr123 %TmpAcc1 = bitcast ptr addrspace(4) %Kernel.ascast to ptr addrspace(4)124 call spir_func void @Foo1(ptr addrspace(4) %TmpAcc1) 125 %BarrierAcc = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 1126 call spir_func void @Foo2(ptr addrspace(4) %BarrierAcc) 127 %BroadcastAcc = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 2128 call spir_func void @Foo2(ptr addrspace(4) %BroadcastAcc) 129 %AnyAcc = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 3130 call spir_func void @Foo2(ptr addrspace(4) %AnyAcc) 131 %AllAcc = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 4132 call spir_func void @Foo2(ptr addrspace(4) %AllAcc) 133 %NoneAcc = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 5134 call spir_func void @Foo2(ptr addrspace(4) %NoneAcc) 135 %ReduceAcc = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 6136 call spir_func void @Foo2(ptr addrspace(4) %ReduceAcc) 137 %ExScanAcc = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 7138 call spir_func void @Foo2(ptr addrspace(4) %ExScanAcc) 139 %IncScanAcc = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 8140 call spir_func void @Foo2(ptr addrspace(4) %IncScanAcc) 141 %ShiftLeftAcc = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 9142 call spir_func void @Foo2(ptr addrspace(4) %ShiftLeftAcc) 143 %ShiftRightAcc = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 10144 call spir_func void @Foo2(ptr addrspace(4) %ShiftRightAcc) 145 %SelectAcc = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 11146 call spir_func void @Foo2(ptr addrspace(4) %SelectAcc) 147 %PermuteXorAcc = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 12148 call spir_func void @Foo2(ptr addrspace(4) %PermuteXorAcc) 149 %TmpAcc402 = bitcast ptr addrspace(4) %Kernel.ascast to ptr addrspace(4)150 %0 = load ptr addrspace(1), ptr %_arg_TmpAcc.addr151 call spir_func void @Foo3(ptr addrspace(4) %TmpAcc402, ptr addrspace(1) %0, ptr byval(%"range") %agg.tmp, ptr byval(%"range") %agg.tmp41, ptr byval(%"range") %agg.tmp42) 152 %BarrierAcc43 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 1153 %1 = load ptr addrspace(1), ptr %_arg_BarrierAcc.addr154 call spir_func void @Foo4(ptr addrspace(4) %BarrierAcc43, ptr addrspace(1) %1, ptr byval(%"range") %agg.tmp44, ptr byval(%"range") %agg.tmp45, ptr byval(%"range") %agg.tmp46) 155 %BroadcastAcc47 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 2156 %2 = load ptr addrspace(1), ptr %_arg_BroadcastAcc.addr157 call spir_func void @Foo4(ptr addrspace(4) %BroadcastAcc47, ptr addrspace(1) %2, ptr byval(%"range") %agg.tmp48, ptr byval(%"range") %agg.tmp49, ptr byval(%"range") %agg.tmp50) 158 %AnyAcc51 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 3159 %3 = load ptr addrspace(1), ptr %_arg_AnyAcc.addr160 call spir_func void @Foo4(ptr addrspace(4) %AnyAcc51, ptr addrspace(1) %3, ptr byval(%"range") %agg.tmp52, ptr byval(%"range") %agg.tmp53, ptr byval(%"range") %agg.tmp54) 161 %AllAcc55 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 4162 %4 = load ptr addrspace(1), ptr %_arg_AllAcc.addr163 call spir_func void @Foo4(ptr addrspace(4) %AllAcc55, ptr addrspace(1) %4, ptr byval(%"range") %agg.tmp56, ptr byval(%"range") %agg.tmp57, ptr byval(%"range") %agg.tmp58) 164 %NoneAcc59 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 5165 %5 = load ptr addrspace(1), ptr %_arg_NoneAcc.addr166 call spir_func void @Foo4(ptr addrspace(4) %NoneAcc59, ptr addrspace(1) %5, ptr byval(%"range") %agg.tmp60, ptr byval(%"range") %agg.tmp61, ptr byval(%"range") %agg.tmp62) 167 %ReduceAcc63 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 6168 %6 = load ptr addrspace(1), ptr %_arg_ReduceAcc.addr169 call spir_func void @Foo4(ptr addrspace(4) %ReduceAcc63, ptr addrspace(1) %6, ptr byval(%"range") %agg.tmp64, ptr byval(%"range") %agg.tmp65, ptr byval(%"range") %agg.tmp66) 170 %ExScanAcc67 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 7171 %7 = load ptr addrspace(1), ptr %_arg_ExScanAcc.addr172 call spir_func void @Foo4(ptr addrspace(4) %ExScanAcc67, ptr addrspace(1) %7, ptr byval(%"range") %agg.tmp68, ptr byval(%"range") %agg.tmp69, ptr byval(%"range") %agg.tmp70) 173 %IncScanAcc71 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 8174 %8 = load ptr addrspace(1), ptr %_arg_IncScanAcc.addr175 call spir_func void @Foo4(ptr addrspace(4) %IncScanAcc71, ptr addrspace(1) %8, ptr byval(%"range") %agg.tmp72, ptr byval(%"range") %agg.tmp73, ptr byval(%"range") %agg.tmp74) 176 %ShiftLeftAcc75 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 9177 %9 = load ptr addrspace(1), ptr %_arg_ShiftLeftAcc.addr178 call spir_func void @Foo4(ptr addrspace(4) %ShiftLeftAcc75, ptr addrspace(1) %9, ptr byval(%"range") %agg.tmp76, ptr byval(%"range") %agg.tmp77, ptr byval(%"range") %agg.tmp78) 179 %ShiftRightAcc79 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 10180 %10 = load ptr addrspace(1), ptr %_arg_ShiftRightAcc.addr181 call spir_func void @Foo4(ptr addrspace(4) %ShiftRightAcc79, ptr addrspace(1) %10, ptr byval(%"range") %agg.tmp80, ptr byval(%"range") %agg.tmp81, ptr byval(%"range") %agg.tmp82) 182 %SelectAcc83 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 11183 %11 = load ptr addrspace(1), ptr %_arg_SelectAcc.addr184 call spir_func void @Foo4(ptr addrspace(4) %SelectAcc83, ptr addrspace(1) %11, ptr byval(%"range") %agg.tmp84, ptr byval(%"range") %agg.tmp85, ptr byval(%"range") %agg.tmp86) 185 %PermuteXorAcc87 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %Kernel.ascast, i32 0, i32 12186 %12 = load ptr addrspace(1), ptr %_arg_PermuteXorAcc.addr187 call spir_func void @Foo4(ptr addrspace(4) %PermuteXorAcc87, ptr addrspace(1) %12, ptr byval(%"range") %agg.tmp88, ptr byval(%"range") %agg.tmp89, ptr byval(%"range") %agg.tmp90) 188 %call = call spir_func ptr addrspace(4) @Foo5() 189 call spir_func void @Foo6(ptr addrspace(4) dead_on_unwind writable sret(%"nd_item") align 1 %agg.tmp91.ascast, ptr addrspace(4) %call) 190 call spir_func void @Foo22(ptr addrspace(4) %Kernel.ascast, ptr byval(%"nd_item") align 1 %agg.tmp91) 191 ret void192}193 194define internal spir_func void @Foo1(ptr addrspace(4) %this) {195entry:196 %this.addr = alloca ptr addrspace(4)197 %agg.tmp = alloca %"range"198 %agg.tmp2 = alloca %"range"199 %agg.tmp3 = alloca %"range"200 %agg.tmp.ascast = addrspacecast ptr %agg.tmp to ptr addrspace(4)201 %agg.tmp2.ascast = addrspacecast ptr %agg.tmp2 to ptr addrspace(4)202 %agg.tmp3.ascast = addrspacecast ptr %agg.tmp3 to ptr addrspace(4)203 store ptr addrspace(4) %this, ptr %this.addr204 %this1 = load ptr addrspace(4), ptr %this.addr205 %impl1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)206 call void @llvm.memset.p0.i64(ptr %agg.tmp, i8 0, i64 8, i1 false)207 call spir_func void @Foo11(ptr addrspace(4) %agg.tmp.ascast) 208 call spir_func void @Foo12(ptr addrspace(4) dead_on_unwind writable sret(%"range") %agg.tmp2.ascast) 209 call spir_func void @Foo12(ptr addrspace(4) dead_on_unwind writable sret(%"range") %agg.tmp3.ascast) 210 call spir_func void @Foo10(ptr addrspace(4) %impl1, ptr byval(%"range") %agg.tmp, ptr byval(%"range") %agg.tmp2, ptr byval(%"range") %agg.tmp3) 211 ret void212}213 214 215define internal spir_func void @Foo2(ptr addrspace(4) %this) {216entry:217 %this.addr = alloca ptr addrspace(4)218 %agg.tmp = alloca %"range"219 %agg.tmp2 = alloca %"range"220 %agg.tmp3 = alloca %"range"221 %agg.tmp.ascast = addrspacecast ptr %agg.tmp to ptr addrspace(4)222 %agg.tmp2.ascast = addrspacecast ptr %agg.tmp2 to ptr addrspace(4)223 %agg.tmp3.ascast = addrspacecast ptr %agg.tmp3 to ptr addrspace(4)224 store ptr addrspace(4) %this, ptr %this.addr225 %this1 = load ptr addrspace(4), ptr %this.addr226 %impl1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)227 call void @llvm.memset.p0.i64(ptr %agg.tmp, i8 0, i64 8, i1 false)228 call spir_func void @Foo11(ptr addrspace(4) %agg.tmp.ascast) 229 call spir_func void @Foo12(ptr addrspace(4) dead_on_unwind writable sret(%"range") %agg.tmp2.ascast) 230 call spir_func void @Foo12(ptr addrspace(4) dead_on_unwind writable sret(%"range") %agg.tmp3.ascast) 231 call spir_func void @Foo10(ptr addrspace(4) %impl1, ptr byval(%"range") %agg.tmp, ptr byval(%"range") %agg.tmp2, ptr byval(%"range") %agg.tmp3) 232 ret void233}234 235 236 237 238define internal spir_func void @Foo3(ptr addrspace(4) %this, ptr addrspace(1) %Ptr, ptr byval(%"range") %AccessRange, ptr byval(%"range") %MemRange, ptr byval(%"range") %Offset) {239entry:240 %this.addr = alloca ptr addrspace(4)241 %Ptr.addr = alloca ptr addrspace(1)242 %ref.tmp = alloca %class.anon.6243 %ref.tmp.ascast = addrspacecast ptr %ref.tmp to ptr addrspace(4)244 store ptr addrspace(4) %this, ptr %this.addr245 store ptr addrspace(1) %Ptr, ptr %Ptr.addr246 %AccessRange.ascast = addrspacecast ptr %AccessRange to ptr addrspace(4)247 %MemRange.ascast = addrspacecast ptr %MemRange to ptr addrspace(4)248 %Offset.ascast = addrspacecast ptr %Offset to ptr addrspace(4)249 %this1 = load ptr addrspace(4), ptr %this.addr250 %0 = load ptr addrspace(1), ptr %Ptr.addr251 %1 = getelementptr inbounds nuw %"accessor", ptr addrspace(4) %this1, i32 0, i32 1252 store ptr addrspace(1) %0, ptr addrspace(4) %1253 %2 = bitcast ptr %ref.tmp to ptr254 store ptr addrspace(4) %this1, ptr %2255 %Offset2 = getelementptr inbounds %class.anon.6, ptr %ref.tmp, i32 0, i32 1256 store ptr addrspace(4) %Offset.ascast, ptr %Offset2257 %AccessRange3 = getelementptr inbounds %class.anon.6, ptr %ref.tmp, i32 0, i32 2258 store ptr addrspace(4) %AccessRange.ascast, ptr %AccessRange3259 %MemRange4 = getelementptr inbounds %class.anon.6, ptr %ref.tmp, i32 0, i32 3260 store ptr addrspace(4) %MemRange.ascast, ptr %MemRange4261 call spir_func void @Foo13(ptr addrspace(4) %ref.tmp.ascast) 262 %call = call spir_func i64 @Foo21(ptr addrspace(4) %this1) 263 %3 = getelementptr inbounds nuw %"accessor", ptr addrspace(4) %this1, i32 0, i32 1264 %4 = load ptr addrspace(1), ptr addrspace(4) %3265 %add.ptr = getelementptr inbounds nuw i64, ptr addrspace(1) %4, i64 %call266 store ptr addrspace(1) %add.ptr, ptr addrspace(4) %3267 ret void268}269 270 271define internal spir_func void @Foo4(ptr addrspace(4) %this, ptr addrspace(1) %Ptr, ptr byval(%"range") %AccessRange, ptr byval(%"range") %MemRange, ptr byval(%"range") %Offset) {272entry:273 %this.addr = alloca ptr addrspace(4)274 %Ptr.addr = alloca ptr addrspace(1)275 %ref.tmp = alloca %class.anon.6276 %ref.tmp.ascast = addrspacecast ptr %ref.tmp to ptr addrspace(4)277 store ptr addrspace(4) %this, ptr %this.addr278 store ptr addrspace(1) %Ptr, ptr %Ptr.addr279 %AccessRange.ascast = addrspacecast ptr %AccessRange to ptr addrspace(4)280 %MemRange.ascast = addrspacecast ptr %MemRange to ptr addrspace(4)281 %Offset.ascast = addrspacecast ptr %Offset to ptr addrspace(4)282 %this1 = load ptr addrspace(4), ptr %this.addr283 %0 = load ptr addrspace(1), ptr %Ptr.addr284 %1 = getelementptr inbounds nuw %"accessor", ptr addrspace(4) %this1, i32 0, i32 1285 store ptr addrspace(1) %0, ptr addrspace(4) %1286 %2 = bitcast ptr %ref.tmp to ptr287 store ptr addrspace(4) %this1, ptr %2288 %Offset2 = getelementptr inbounds %class.anon.6, ptr %ref.tmp, i32 0, i32 1289 store ptr addrspace(4) %Offset.ascast, ptr %Offset2290 %AccessRange3 = getelementptr inbounds %class.anon.6, ptr %ref.tmp, i32 0, i32 2291 store ptr addrspace(4) %AccessRange.ascast, ptr %AccessRange3292 %MemRange4 = getelementptr inbounds %class.anon.6, ptr %ref.tmp, i32 0, i32 3293 store ptr addrspace(4) %MemRange.ascast, ptr %MemRange4294 call spir_func void @Foo30(ptr addrspace(4) %ref.tmp.ascast) 295 %call = call spir_func i64 @Foo32(ptr addrspace(4) %this1) 296 %3 = getelementptr inbounds nuw %"accessor", ptr addrspace(4) %this1, i32 0, i32 1297 %4 = load ptr addrspace(1), ptr addrspace(4) %3298 %add.ptr = getelementptr inbounds nuw i8, ptr addrspace(1) %4, i64 %call299 store ptr addrspace(1) %add.ptr, ptr addrspace(4) %3300 ret void301}302 303 304define internal spir_func ptr addrspace(4) @Foo5() {305entry:306 %retval = alloca ptr addrspace(4)307 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)308 ret ptr addrspace(4) null309}310 311 312define internal spir_func void @Foo6(ptr addrspace(4) dead_on_unwind noalias writable sret(%"nd_item") align 1 %agg.result, ptr addrspace(4) %0) {313entry:314 %.addr = alloca ptr addrspace(4)315 %GlobalSize = alloca %"range"316 %LocalSize = alloca %"range"317 %GroupRange = alloca %"range"318 %GroupId = alloca %"range"319 %GlobalId = alloca %"range"320 %LocalId = alloca %"range"321 %GlobalOffset = alloca %"range"322 %Group = alloca %"group"323 %GlobalItem = alloca %"item"324 %LocalItem = alloca %"item.22"325 %cleanup.dest.slot = alloca i32, align 4326 %GlobalSize.ascast = addrspacecast ptr %GlobalSize to ptr addrspace(4)327 %LocalSize.ascast = addrspacecast ptr %LocalSize to ptr addrspace(4)328 %GroupRange.ascast = addrspacecast ptr %GroupRange to ptr addrspace(4)329 %GroupId.ascast = addrspacecast ptr %GroupId to ptr addrspace(4)330 %GlobalId.ascast = addrspacecast ptr %GlobalId to ptr addrspace(4)331 %LocalId.ascast = addrspacecast ptr %LocalId to ptr addrspace(4)332 %GlobalOffset.ascast = addrspacecast ptr %GlobalOffset to ptr addrspace(4)333 %Group.ascast = addrspacecast ptr %Group to ptr addrspace(4)334 %GlobalItem.ascast = addrspacecast ptr %GlobalItem to ptr addrspace(4)335 %LocalItem.ascast = addrspacecast ptr %LocalItem to ptr addrspace(4)336 store ptr addrspace(4) %0, ptr %.addr337 call spir_func void @Foo7(ptr addrspace(4) dead_on_unwind writable sret(%"range") %GlobalSize.ascast) 338 call spir_func void @Init1(ptr addrspace(4) dead_on_unwind writable sret(%"range") %LocalSize.ascast) 339 call spir_func void @Init2(ptr addrspace(4) dead_on_unwind writable sret(%"range") %GroupRange.ascast) 340 call spir_func void @Init3(ptr addrspace(4) dead_on_unwind writable sret(%"range") %GroupId.ascast) 341 call spir_func void @Init6(ptr addrspace(4) dead_on_unwind writable sret(%"range") %GlobalId.ascast) 342 call spir_func void @Init4(ptr addrspace(4) dead_on_unwind writable sret(%"range") %LocalId.ascast) 343 call spir_func void @Init5(ptr addrspace(4) dead_on_unwind writable sret(%"range") %GlobalOffset.ascast) 344 call spir_func void @Foo23(ptr addrspace(4) dead_on_unwind writable sret(%"group") %Group.ascast, ptr addrspace(4) %GlobalSize.ascast, ptr addrspace(4) %LocalSize.ascast, ptr addrspace(4) %GroupRange.ascast, ptr addrspace(4) %GroupId.ascast) 345 call spir_func void @Foo24(ptr addrspace(4) dead_on_unwind writable sret(%"item") %GlobalItem.ascast, ptr addrspace(4) %GlobalSize.ascast, ptr addrspace(4) %GlobalId.ascast, ptr addrspace(4) %GlobalOffset.ascast) 346 call spir_func void @Foo25(ptr addrspace(4) dead_on_unwind writable sret(%"item.22") %LocalItem.ascast, ptr addrspace(4) %LocalSize.ascast, ptr addrspace(4) %LocalId.ascast) 347 call spir_func void @Foo26(ptr addrspace(4) dead_on_unwind writable sret(%"nd_item") align 1 %agg.result, ptr addrspace(4) %GlobalItem.ascast, ptr addrspace(4) %LocalItem.ascast, ptr addrspace(4) %Group.ascast) 348 ret void349}350 351 352define internal spir_func void @Foo22(ptr addrspace(4) %this, ptr byval(%"nd_item") align 1 %item) {353entry:354 %this.addr.i76 = alloca ptr addrspace(4)355 %WI.addr.i = alloca i64356 %TangleLeader.addr.i = alloca i64357 %TangleSize.addr.i = alloca i64358 %agg.tmp.i = alloca %"range"359 %agg.tmp2.i = alloca %"tangle_group"360 %Visible.i = alloca i64361 %Other.i = alloca i64362 %agg.tmp5.i = alloca %"range"363 %agg.tmp8.i = alloca %"range"364 %OriginalLID.i = alloca i32, align 4365 %LID.i = alloca i32, align 4366 %BroadcastResult.i = alloca i32, align 4367 %agg.tmp12.i = alloca %"tangle_group"368 %agg.tmp15.i = alloca %"range"369 %AnyResult.i = alloca i8, align 1370 %agg.tmp18.i = alloca %"tangle_group"371 %agg.tmp24.i = alloca %"range"372 %AllResult.i = alloca i8, align 1373 %agg.tmp27.i = alloca %"tangle_group"374 %agg.tmp35.i = alloca %"range"375 %NoneResult.i = alloca i8, align 1376 %agg.tmp38.i = alloca %"tangle_group"377 %agg.tmp46.i = alloca %"range"378 %ReduceResult.i = alloca i32, align 4379 %agg.tmp49.i = alloca %"tangle_group"380 %agg.tmp50.i = alloca %"nd_item", align 1381 %agg.tmp54.i = alloca %"range"382 %ExScanResult.i = alloca i32, align 4383 %agg.tmp57.i = alloca %"tangle_group"384 %agg.tmp58.i = alloca %"nd_item", align 1385 %agg.tmp61.i = alloca %"range"386 %IncScanResult.i = alloca i32, align 4387 %agg.tmp64.i = alloca %"tangle_group"388 %agg.tmp65.i = alloca %"nd_item", align 1389 %agg.tmp69.i = alloca %"range"390 %ShiftLeftResult.i = alloca i32, align 4391 %agg.tmp72.i = alloca %"tangle_group"392 %agg.tmp79.i = alloca %"range"393 %ShiftRightResult.i = alloca i32, align 4394 %agg.tmp82.i = alloca %"tangle_group"395 %agg.tmp88.i = alloca %"range"396 %SelectResult.i = alloca i32, align 4397 %agg.tmp91.i = alloca %"tangle_group"398 %agg.tmp92.i = alloca %"range"399 %ref.tmp.i = alloca %"range"400 %ref.tmp93.i = alloca %"range"401 %ref.tmp94.i = alloca i32, align 4402 %agg.tmp100.i = alloca %"range"403 %PermuteXorResult.i = alloca i32, align 4404 %agg.tmp103.i = alloca %"tangle_group"405 %agg.tmp106.i = alloca %"range"406 %agg.tmp18.ascast.ascast75 = alloca %"nd_item"407 %agg.tmp17.ascast.ascast74 = alloca %"tangle_group"408 %retval.i66 = alloca i64409 %this.addr.i67 = alloca ptr addrspace(4)410 %Result.i68 = alloca i64411 %retval.i58 = alloca i64412 %this.addr.i59 = alloca ptr addrspace(4)413 %Result.i60 = alloca i64414 %retval.i50 = alloca i64415 %this.addr.i51 = alloca ptr addrspace(4)416 %Result.i52 = alloca i64417 %retval.i42 = alloca i64418 %this.addr.i43 = alloca ptr addrspace(4)419 %Result.i44 = alloca i64420 %retval.i = alloca i64421 %this.addr.i = alloca ptr addrspace(4)422 %Result.i = alloca i64423 %this.addr = alloca ptr addrspace(4)424 %WI = alloca %"range"425 %SG = alloca %"nd_item", align 1426 %BranchBody = alloca %class.anon.8427 %ref.tmp = alloca %"range"428 %ref.tmp15 = alloca i32, align 4429 %Tangle = alloca %"tangle_group"430 %agg.tmp = alloca %"nd_item", align 1431 %TangleLeader = alloca i64432 %TangleSize = alloca i64433 %IsMember = alloca %"nd_item", align 1434 %agg.tmp17 = alloca %"tangle_group"435 %agg.tmp18 = alloca %"nd_item", align 1436 %ref.tmp19 = alloca %"range"437 %ref.tmp20 = alloca i32, align 4438 %Tangle24 = alloca %"tangle_group"439 %agg.tmp25 = alloca %"nd_item", align 1440 %TangleLeader26 = alloca i64441 %TangleSize27 = alloca i64442 %IsMember28 = alloca %"nd_item", align 1443 %agg.tmp30 = alloca %"tangle_group"444 %agg.tmp31 = alloca %"nd_item", align 1445 %Tangle33 = alloca %"tangle_group"446 %agg.tmp34 = alloca %"nd_item", align 1447 %TangleLeader35 = alloca i64448 %TangleSize36 = alloca i64449 %IsMember37 = alloca %"nd_item", align 1450 %agg.tmp39 = alloca %"tangle_group"451 %agg.tmp40 = alloca %"nd_item", align 1452 %WI.ascast = addrspacecast ptr %WI to ptr addrspace(4)453 %SG.ascast = addrspacecast ptr %SG to ptr addrspace(4)454 %BranchBody.ascast = addrspacecast ptr %BranchBody to ptr addrspace(4)455 %ref.tmp.ascast = addrspacecast ptr %ref.tmp to ptr addrspace(4)456 %ref.tmp15.ascast = addrspacecast ptr %ref.tmp15 to ptr addrspace(4)457 %Tangle.ascast = addrspacecast ptr %Tangle to ptr addrspace(4)458 %IsMember.ascast = addrspacecast ptr %IsMember to ptr addrspace(4)459 %ref.tmp19.ascast = addrspacecast ptr %ref.tmp19 to ptr addrspace(4)460 %ref.tmp20.ascast = addrspacecast ptr %ref.tmp20 to ptr addrspace(4)461 %Tangle24.ascast = addrspacecast ptr %Tangle24 to ptr addrspace(4)462 %IsMember28.ascast = addrspacecast ptr %IsMember28 to ptr addrspace(4)463 %Tangle33.ascast = addrspacecast ptr %Tangle33 to ptr addrspace(4)464 %IsMember37.ascast = addrspacecast ptr %IsMember37 to ptr addrspace(4)465 store ptr addrspace(4) %this, ptr %this.addr466 %item.ascast = addrspacecast ptr %item to ptr addrspace(4)467 %this1 = load ptr addrspace(4), ptr %this.addr468 call spir_func void @Foo40(ptr addrspace(4) dead_on_unwind writable sret(%"range") %WI.ascast, ptr addrspace(4) align 1 %item.ascast) 469 call spir_func void @Foo41(ptr addrspace(4) dead_on_unwind writable sret(%"nd_item") align 1 %SG.ascast, ptr addrspace(4) align 1 %item.ascast) 470 %TmpAcc1 = bitcast ptr %BranchBody to ptr471 %TmpAcc22 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)472 %BarrierAcc = getelementptr inbounds %class.anon.8, ptr %BranchBody, i32 0, i32 1473 %BarrierAcc3 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %this1, i32 0, i32 1474 %0 = getelementptr inbounds i8, ptr addrspace(4) %BranchBody.ascast, i64 64475 %BroadcastAcc = getelementptr inbounds %class.anon.8, ptr %BranchBody, i32 0, i32 3476 %BroadcastAcc4 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %this1, i32 0, i32 2477 %AnyAcc = getelementptr inbounds %class.anon.8, ptr %BranchBody, i32 0, i32 4478 %AnyAcc5 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %this1, i32 0, i32 3479 %AllAcc = getelementptr inbounds %class.anon.8, ptr %BranchBody, i32 0, i32 5480 %AllAcc6 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %this1, i32 0, i32 4481 %NoneAcc = getelementptr inbounds %class.anon.8, ptr %BranchBody, i32 0, i32 6482 %NoneAcc7 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %this1, i32 0, i32 5483 %ReduceAcc = getelementptr inbounds %class.anon.8, ptr %BranchBody, i32 0, i32 7484 %ReduceAcc8 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %this1, i32 0, i32 6485 %ExScanAcc = getelementptr inbounds %class.anon.8, ptr %BranchBody, i32 0, i32 8486 %ExScanAcc9 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %this1, i32 0, i32 7487 %IncScanAcc = getelementptr inbounds %class.anon.8, ptr %BranchBody, i32 0, i32 9488 %IncScanAcc10 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %this1, i32 0, i32 8489 %ShiftLeftAcc = getelementptr inbounds %class.anon.8, ptr %BranchBody, i32 0, i32 10490 %ShiftLeftAcc11 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %this1, i32 0, i32 9491 %ShiftRightAcc = getelementptr inbounds %class.anon.8, ptr %BranchBody, i32 0, i32 11492 %ShiftRightAcc12 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %this1, i32 0, i32 10493 %SelectAcc = getelementptr inbounds %class.anon.8, ptr %BranchBody, i32 0, i32 12494 %SelectAcc13 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %this1, i32 0, i32 11495 %PermuteXorAcc = getelementptr inbounds %class.anon.8, ptr %BranchBody, i32 0, i32 13496 %PermuteXorAcc14 = getelementptr inbounds nuw %class.anon, ptr addrspace(4) %this1, i32 0, i32 12497 store i32 4, ptr %ref.tmp15, align 4498 call spir_func void @Foo42(ptr addrspace(4) dead_on_unwind writable sret(%"range") %ref.tmp.ascast, ptr addrspace(4) %WI.ascast, ptr addrspace(4) align 4 %ref.tmp15.ascast) 499 %retval.ascast.i69 = addrspacecast ptr %retval.i66 to ptr addrspace(4)500 store ptr addrspace(4) %ref.tmp.ascast, ptr %this.addr.i67501 %this1.i72 = load ptr addrspace(4), ptr %this.addr.i67502 %1 = load i64, ptr addrspace(4) %this1.i72503 store i64 %1, ptr %Result.i68504 %2 = load i64, ptr %Result.i68505 %tobool = icmp ne i64 %2, 0506 br i1 %tobool, label %if.then, label %if.else507 508if.else: ; preds = %entry509 store i32 24, ptr %ref.tmp20, align 4510 call spir_func void @Foo42(ptr addrspace(4) dead_on_unwind writable sret(%"range") %ref.tmp19.ascast, ptr addrspace(4) %WI.ascast, ptr addrspace(4) align 4 %ref.tmp20.ascast) 511 %retval.ascast.i53 = addrspacecast ptr %retval.i50 to ptr addrspace(4)512 store ptr addrspace(4) %ref.tmp19.ascast, ptr %this.addr.i51513 %this1.i56 = load ptr addrspace(4), ptr %this.addr.i51514 %3 = load i64, ptr addrspace(4) %this1.i56515 store i64 %3, ptr %Result.i52516 %4 = load i64, ptr %Result.i52517 %tobool22 = icmp ne i64 %4, 0518 br i1 %tobool22, label %if.then23, label %if.else32519 520if.else32: ; preds = %if.else521 call spir_func void @Foo43(ptr addrspace(4) dead_on_unwind writable sret(%"tangle_group") %Tangle33.ascast, ptr byval(%"nd_item") align 1 %agg.tmp34) 522 store i64 24, ptr %TangleLeader35523 store i64 8, ptr %TangleSize36524 %retval.ascast.i = addrspacecast ptr %retval.i to ptr addrspace(4)525 store ptr addrspace(4) %WI.ascast, ptr %this.addr.i526 %this1.i = load ptr addrspace(4), ptr %this.addr.i527 %5 = load i64, ptr addrspace(4) %this1.i528 store i64 %5, ptr %Result.i529 %6 = load i64, ptr %Result.i530 %7 = load i64, ptr %TangleLeader35531 %8 = load i64, ptr %TangleSize36532 call spir_func void @Foo69(ptr addrspace(4) %BranchBody.ascast, i64 %6, ptr byval(%"tangle_group") %agg.tmp39, i64 %7, i64 %8, ptr byval(%"nd_item") align 1 %agg.tmp40) 533 br label %if.end41534 535if.then23: ; preds = %if.else536 call spir_func void @Foo43(ptr addrspace(4) dead_on_unwind writable sret(%"tangle_group") %Tangle24.ascast, ptr byval(%"nd_item") align 1 %agg.tmp25) 537 store i64 4, ptr %TangleLeader26538 store i64 20, ptr %TangleSize27539 %retval.ascast.i45 = addrspacecast ptr %retval.i42 to ptr addrspace(4)540 store ptr addrspace(4) %WI.ascast, ptr %this.addr.i43541 %this1.i48 = load ptr addrspace(4), ptr %this.addr.i43542 %9 = load i64, ptr addrspace(4) %this1.i48543 store i64 %9, ptr %Result.i44544 %10 = load i64, ptr %Result.i44545 %11 = load i64, ptr %TangleLeader26546 %12 = load i64, ptr %TangleSize27547 call spir_func void @Foo68(ptr addrspace(4) %BranchBody.ascast, i64 %10, ptr byval(%"tangle_group") %agg.tmp30, i64 %11, i64 %12, ptr byval(%"nd_item") align 1 %agg.tmp31) 548 br label %if.end41549 550if.then: ; preds = %entry551 call spir_func void @Foo43(ptr addrspace(4) dead_on_unwind writable sret(%"tangle_group") %Tangle.ascast, ptr byval(%"nd_item") align 1 %agg.tmp) 552 store i64 0, ptr %TangleLeader553 store i64 4, ptr %TangleSize554 %retval.ascast.i61 = addrspacecast ptr %retval.i58 to ptr addrspace(4)555 store ptr addrspace(4) %WI.ascast, ptr %this.addr.i59556 %this1.i64 = load ptr addrspace(4), ptr %this.addr.i59557 %13 = load i64, ptr addrspace(4) %this1.i64558 store i64 %13, ptr %Result.i60559 %14 = load i64, ptr %Result.i60560 %15 = load i64, ptr %TangleLeader561 %16 = load i64, ptr %TangleSize562 %TangleSize.addr.ascast.i = addrspacecast ptr %TangleSize.addr.i to ptr addrspace(4)563 %agg.tmp.ascast.i = addrspacecast ptr %agg.tmp.i to ptr addrspace(4)564 %agg.tmp5.ascast.i = addrspacecast ptr %agg.tmp5.i to ptr addrspace(4)565 %agg.tmp8.ascast.i = addrspacecast ptr %agg.tmp8.i to ptr addrspace(4)566 %agg.tmp15.ascast.i = addrspacecast ptr %agg.tmp15.i to ptr addrspace(4)567 %agg.tmp24.ascast.i = addrspacecast ptr %agg.tmp24.i to ptr addrspace(4)568 %agg.tmp35.ascast.i = addrspacecast ptr %agg.tmp35.i to ptr addrspace(4)569 %agg.tmp46.ascast.i = addrspacecast ptr %agg.tmp46.i to ptr addrspace(4)570 %agg.tmp50.ascast.i = addrspacecast ptr %agg.tmp50.i to ptr addrspace(4)571 %agg.tmp54.ascast.i = addrspacecast ptr %agg.tmp54.i to ptr addrspace(4)572 %agg.tmp58.ascast.i = addrspacecast ptr %agg.tmp58.i to ptr addrspace(4)573 %agg.tmp61.ascast.i = addrspacecast ptr %agg.tmp61.i to ptr addrspace(4)574 %agg.tmp65.ascast.i = addrspacecast ptr %agg.tmp65.i to ptr addrspace(4)575 %agg.tmp69.ascast.i = addrspacecast ptr %agg.tmp69.i to ptr addrspace(4)576 %agg.tmp79.ascast.i = addrspacecast ptr %agg.tmp79.i to ptr addrspace(4)577 %agg.tmp88.ascast.i = addrspacecast ptr %agg.tmp88.i to ptr addrspace(4)578 %agg.tmp92.ascast.i = addrspacecast ptr %agg.tmp92.i to ptr addrspace(4)579 %ref.tmp.ascast.i = addrspacecast ptr %ref.tmp.i to ptr addrspace(4)580 %ref.tmp93.ascast.i = addrspacecast ptr %ref.tmp93.i to ptr addrspace(4)581 %ref.tmp94.ascast.i = addrspacecast ptr %ref.tmp94.i to ptr addrspace(4)582 %agg.tmp100.ascast.i = addrspacecast ptr %agg.tmp100.i to ptr addrspace(4)583 %agg.tmp106.ascast.i = addrspacecast ptr %agg.tmp106.i to ptr addrspace(4)584 store ptr addrspace(4) %BranchBody.ascast, ptr %this.addr.i76585 store i64 %14, ptr %WI.addr.i586 %Tangle.ascast.i = addrspacecast ptr %agg.tmp17.ascast.ascast74 to ptr addrspace(4)587 store i64 %15, ptr %TangleLeader.addr.i588 store i64 %16, ptr %TangleSize.addr.i589 %IsMember.ascast.i = addrspacecast ptr %agg.tmp18.ascast.ascast75 to ptr addrspace(4)590 %this1.i78 = load ptr addrspace(4), ptr %this.addr.i76591 %17 = load i64, ptr %WI.addr.i592 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp.ascast.i, i64 %17) 593 %call.i = call spir_func ptr addrspace(4) @Foo70(ptr addrspace(4) %this1.i78, ptr byval(%"range") %agg.tmp.i) 594 store i64 1, ptr addrspace(4) %call.i595 call spir_func void @Foo75(ptr byval(%"tangle_group") %agg.tmp2.i, i32 1) 596 store i64 0, ptr %Visible.i597 store i64 0, ptr %Other.i598 br label %for.cond.i599 600for.cond.i: ; preds = %if.end.i, %if.then601 %18 = load i64, ptr %Other.i602 %cmp.i79 = icmp ult i64 %18, 32603 br i1 %cmp.i79, label %for.body.i, label %for.cond.cleanup.i604 605for.cond.cleanup.i: ; preds = %for.cond.i606 %19 = load i64, ptr %Visible.i607 %20 = load i64, ptr %TangleSize.addr.i608 %cmp7.i = icmp eq i64 %19, %20609 %BarrierAcc.i = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1.i78, i32 0, i32 1610 %21 = load i64, ptr %WI.addr.i611 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp8.ascast.i, i64 %21) 612 %call9.i = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %BarrierAcc.i, ptr byval(%"range") %agg.tmp8.i) 613 %storedv.i = zext i1 %cmp7.i to i8614 store i8 %storedv.i, ptr addrspace(4) %call9.i, align 1615 %22 = getelementptr inbounds i8, ptr addrspace(4) %this1.i78, i64 64616 %call10.i = call spir_func i32 @Foo76(ptr addrspace(4) align 1 %22) 617 store i32 %call10.i, ptr %OriginalLID.i, align 4618 %call11.i = call spir_func i32 @Foo90(ptr addrspace(4) %Tangle.ascast.i) 619 store i32 %call11.i, ptr %LID.i, align 4620 %23 = load i32, ptr %OriginalLID.i, align 4621 %call13.i = call spir_func i32 @Foo91(ptr byval(%"tangle_group") %agg.tmp12.i, i32 %23, i32 0) 622 store i32 %call13.i, ptr %BroadcastResult.i, align 4623 %24 = load i32, ptr %BroadcastResult.i, align 4624 %conv.i = zext i32 %24 to i64625 %25 = load i64, ptr %TangleLeader.addr.i626 %cmp14.i = icmp eq i64 %conv.i, %25627 %BroadcastAcc.i = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1.i78, i32 0, i32 3628 %26 = load i64, ptr %WI.addr.i629 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp15.ascast.i, i64 %26) 630 %call16.i = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %BroadcastAcc.i, ptr byval(%"range") %agg.tmp15.i) 631 %storedv17.i = zext i1 %cmp14.i to i8632 store i8 %storedv17.i, ptr addrspace(4) %call16.i, align 1633 %27 = load i32, ptr %LID.i, align 4634 %cmp19.i = icmp eq i32 %27, 0635 %call20.i = call spir_func zeroext i1 @Foo92(ptr byval(%"tangle_group") %agg.tmp18.i, i1 zeroext %cmp19.i) 636 %storedv21.i = zext i1 %call20.i to i8637 store i8 %storedv21.i, ptr %AnyResult.i, align 1638 %28 = load i8, ptr %AnyResult.i, align 1 639 %loadedv.i = trunc i8 %28 to i1640 %conv22.i = zext i1 %loadedv.i to i32641 %AnyAcc.i = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1.i78, i32 0, i32 4642 %29 = load i64, ptr %WI.addr.i643 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp24.ascast.i, i64 %29) 644 %call25.i = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %AnyAcc.i, ptr byval(%"range") %agg.tmp24.i) 645 %storedv26.i = zext i1 %loadedv.i to i8646 store i8 %storedv26.i, ptr addrspace(4) %call25.i, align 1647 %30 = load i32, ptr %LID.i, align 4648 %conv28.i = zext i32 %30 to i64649 %31 = load i64, ptr %TangleSize.addr.i650 %cmp29.i = icmp ult i64 %conv28.i, %31651 %call30.i = call spir_func zeroext i1 @Foo67(ptr byval(%"tangle_group") %agg.tmp27.i, i1 zeroext %cmp29.i) 652 %storedv31.i = zext i1 %call30.i to i8653 store i8 %storedv31.i, ptr %AllResult.i, align 1654 %32 = load i8, ptr %AllResult.i, align 1 655 %loadedv32.i = trunc i8 %32 to i1656 %conv33.i = zext i1 %loadedv32.i to i32657 %AllAcc.i = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1.i78, i32 0, i32 5658 %33 = load i64, ptr %WI.addr.i659 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp35.ascast.i, i64 %33) 660 %call36.i = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %AllAcc.i, ptr byval(%"range") %agg.tmp35.i) 661 %storedv37.i = zext i1 %loadedv32.i to i8662 store i8 %storedv37.i, ptr addrspace(4) %call36.i, align 1663 %34 = load i32, ptr %LID.i, align 4664 %conv39.i = zext i32 %34 to i64665 %35 = load i64, ptr %TangleSize.addr.i666 %cmp40.i = icmp uge i64 %conv39.i, %35667 %call41.i = call spir_func zeroext i1 @Foo65(ptr byval(%"tangle_group") %agg.tmp38.i, i1 zeroext %cmp40.i) 668 %storedv42.i = zext i1 %call41.i to i8669 store i8 %storedv42.i, ptr %NoneResult.i, align 1670 %36 = load i8, ptr %NoneResult.i, align 1 671 %loadedv43.i = trunc i8 %36 to i1672 %conv44.i = zext i1 %loadedv43.i to i32673 %NoneAcc.i = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1.i78, i32 0, i32 6674 %37 = load i64, ptr %WI.addr.i675 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp46.ascast.i, i64 %37) 676 %call47.i = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %NoneAcc.i, ptr byval(%"range") %agg.tmp46.i) 677 %storedv48.i = zext i1 %loadedv43.i to i8678 store i8 %storedv48.i, ptr addrspace(4) %call47.i, align 1679 %call51.i = call spir_func i32 @Foo64(ptr byval(%"tangle_group") %agg.tmp49.i, i32 1, ptr byval(%"nd_item") align 1 %agg.tmp50.i) 680 store i32 %call51.i, ptr %ReduceResult.i, align 4681 %38 = load i32, ptr %ReduceResult.i, align 4682 %conv52.i = zext i32 %38 to i64683 %39 = load i64, ptr %TangleSize.addr.i684 %cmp53.i = icmp eq i64 %conv52.i, %39685 %ReduceAcc.i = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1.i78, i32 0, i32 7686 %40 = load i64, ptr %WI.addr.i687 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp54.ascast.i, i64 %40) 688 %call55.i = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %ReduceAcc.i, ptr byval(%"range") %agg.tmp54.i) 689 %storedv56.i = zext i1 %cmp53.i to i8690 store i8 %storedv56.i, ptr addrspace(4) %call55.i, align 1691 %call59.i = call spir_func i32 @Foo63(ptr byval(%"tangle_group") %agg.tmp57.i, i32 1, ptr byval(%"nd_item") align 1 %agg.tmp58.i) 692 store i32 %call59.i, ptr %ExScanResult.i, align 4693 %41 = load i32, ptr %ExScanResult.i, align 4694 %42 = load i32, ptr %LID.i, align 4695 %cmp60.i = icmp eq i32 %41, %42696 %ExScanAcc.i = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1.i78, i32 0, i32 8697 %43 = load i64, ptr %WI.addr.i698 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp61.ascast.i, i64 %43) 699 %call62.i = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %ExScanAcc.i, ptr byval(%"range") %agg.tmp61.i) 700 %storedv63.i = zext i1 %cmp60.i to i8701 store i8 %storedv63.i, ptr addrspace(4) %call62.i, align 1702 %call66.i = call spir_func i32 @Foo62(ptr byval(%"tangle_group") %agg.tmp64.i, i32 1, ptr byval(%"nd_item") align 1 %agg.tmp65.i) 703 store i32 %call66.i, ptr %IncScanResult.i, align 4704 %44 = load i32, ptr %IncScanResult.i, align 4705 %45 = load i32, ptr %LID.i, align 4706 %add67.i = add i32 %45, 1707 %cmp68.i = icmp eq i32 %44, %add67.i708 %IncScanAcc.i = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1.i78, i32 0, i32 9709 %46 = load i64, ptr %WI.addr.i710 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp69.ascast.i, i64 %46) 711 %call70.i = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %IncScanAcc.i, ptr byval(%"range") %agg.tmp69.i) 712 %storedv71.i = zext i1 %cmp68.i to i8713 store i8 %storedv71.i, ptr addrspace(4) %call70.i, align 1714 %47 = load i32, ptr %LID.i, align 4715 %call73.i = call spir_func i32 @Foo73(ptr byval(%"tangle_group") %agg.tmp72.i, i32 %47, i32 2) 716 store i32 %call73.i, ptr %ShiftLeftResult.i, align 4717 %48 = load i32, ptr %LID.i, align 4718 %add74.i = add i32 %48, 2719 %conv75.i = zext i32 %add74.i to i64720 %49 = load i64, ptr %TangleSize.addr.i721 %cmp76.i = icmp uge i64 %conv75.i, %49722 br i1 %cmp76.i, label %lor.end.i, label %lor.rhs.i723 724lor.rhs.i: ; preds = %for.cond.cleanup.i725 %50 = load i32, ptr %ShiftLeftResult.i, align 4726 %51 = load i32, ptr %LID.i, align 4727 %add77.i = add i32 %51, 2728 %cmp78.i = icmp eq i32 %50, %add77.i729 br label %lor.end.i730 731lor.end.i: ; preds = %lor.rhs.i, %for.cond.cleanup.i732 %52 = phi i1 [ true, %for.cond.cleanup.i ], [ %cmp78.i, %lor.rhs.i ]733 %ShiftLeftAcc.i = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1.i78, i32 0, i32 10734 %53 = load i64, ptr %WI.addr.i735 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp79.ascast.i, i64 %53) 736 %call80.i = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %ShiftLeftAcc.i, ptr byval(%"range") %agg.tmp79.i) 737 %storedv81.i = zext i1 %52 to i8738 store i8 %storedv81.i, ptr addrspace(4) %call80.i, align 1739 %54 = load i32, ptr %LID.i, align 4740 %call83.i = call spir_func i32 @Foo53(ptr byval(%"tangle_group") %agg.tmp82.i, i32 %54, i32 2) 741 store i32 %call83.i, ptr %ShiftRightResult.i, align 4742 %55 = load i32, ptr %LID.i, align 4743 %cmp84.i = icmp ult i32 %55, 2744 br i1 %cmp84.i, label %l1.exit, label %lor.rhs85.i745 746lor.rhs85.i: ; preds = %lor.end.i747 %56 = load i32, ptr %ShiftRightResult.i, align 4748 %57 = load i32, ptr %LID.i, align 4749 %sub.i = sub i32 %57, 2750 %cmp86.i = icmp eq i32 %56, %sub.i751 br label %l1.exit752 753l1.exit: ; preds = %lor.rhs85.i, %lor.end.i754 %58 = phi i1 [ true, %lor.end.i ], [ %cmp86.i, %lor.rhs85.i ]755 %ShiftRightAcc.i = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1.i78, i32 0, i32 11756 %59 = load i64, ptr %WI.addr.i757 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp88.ascast.i, i64 %59) 758 %call89.i = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %ShiftRightAcc.i, ptr byval(%"range") %agg.tmp88.i) 759 %storedv90.i = zext i1 %58 to i8760 store i8 %storedv90.i, ptr addrspace(4) %call89.i, align 1761 %60 = load i32, ptr %LID.i, align 4762 call spir_func void @Foo51(ptr addrspace(4) dead_on_unwind writable sret(%"range") %ref.tmp93.ascast.i, ptr addrspace(4) %Tangle.ascast.i) 763 store i32 2, ptr %ref.tmp94.i, align 4764 call spir_func void @Foo55(ptr addrspace(4) dead_on_unwind writable sret(%"range") %ref.tmp.ascast.i, ptr addrspace(4) %ref.tmp93.ascast.i, ptr addrspace(4) align 4 %ref.tmp94.ascast.i) 765 call spir_func void @Foo56(ptr addrspace(4) dead_on_unwind writable sret(%"range") %agg.tmp92.ascast.i, ptr addrspace(4) %ref.tmp.ascast.i, ptr addrspace(4) %TangleSize.addr.ascast.i) 766 %call95.i = call spir_func i32 @Foo57(ptr byval(%"tangle_group") %agg.tmp91.i, i32 %60, ptr byval(%"range") %agg.tmp92.i) 767 store i32 %call95.i, ptr %SelectResult.i, align 4768 %61 = load i32, ptr %SelectResult.i, align 4769 %conv96.i = zext i32 %61 to i64770 %62 = load i32, ptr %LID.i, align 4771 %add97.i = add i32 %62, 2772 %conv98.i = zext i32 %add97.i to i64773 %63 = load i64, ptr %TangleSize.addr.i774 %rem.i = urem i64 %conv98.i, %63775 %cmp99.i = icmp eq i64 %conv96.i, %rem.i776 %SelectAcc.i = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1.i78, i32 0, i32 12777 %64 = load i64, ptr %WI.addr.i778 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp100.ascast.i, i64 %64) 779 %call101.i = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %SelectAcc.i, ptr byval(%"range") %agg.tmp100.i) 780 %storedv102.i = zext i1 %cmp99.i to i8781 store i8 %storedv102.i, ptr addrspace(4) %call101.i, align 1782 %65 = load i32, ptr %LID.i, align 4783 %call104.i = call spir_func i32 @Foo58(ptr byval(%"tangle_group") %agg.tmp103.i, i32 %65, i32 2) 784 store i32 %call104.i, ptr %PermuteXorResult.i, align 4785 %66 = load i32, ptr %PermuteXorResult.i, align 4786 %67 = load i32, ptr %LID.i, align 4787 %xor.i = xor i32 %67, 2788 %cmp105.i = icmp eq i32 %66, %xor.i789 %PermuteXorAcc.i = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1.i78, i32 0, i32 13790 %68 = load i64, ptr %WI.addr.i791 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp106.ascast.i, i64 %68) 792 %call107.i = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %PermuteXorAcc.i, ptr byval(%"range") %agg.tmp106.i) 793 %storedv108.i = zext i1 %cmp105.i to i8794 store i8 %storedv108.i, ptr addrspace(4) %call107.i, align 1795 br label %if.end41796 797if.end41: ; preds = %if.then23, %if.else32, %l1.exit798 ret void799 800for.body.i: ; preds = %for.cond.i801 %69 = load i64, ptr %Other.i802 %call3.i = call spir_func zeroext i1 @Foo71(ptr addrspace(4) align 1 %IsMember.ascast.i, i64 %69) 803 br i1 %call3.i, label %if.then.i, label %if.end.i804 805if.then.i: ; preds = %for.body.i806 %70 = load i64, ptr %Other.i807 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp5.ascast.i, i64 %70) 808 %call6.i = call spir_func ptr addrspace(4) @Foo70(ptr addrspace(4) %this1.i78, ptr byval(%"range") %agg.tmp5.i) 809 %71 = load i64, ptr addrspace(4) %call6.i810 %72 = load i64, ptr %Visible.i811 %add.i = add i64 %72, %71812 store i64 %add.i, ptr %Visible.i813 br label %if.end.i814 815if.end.i: ; preds = %if.then.i, %for.body.i816 %73 = load i64, ptr %Other.i817 %inc.i = add i64 %73, 1818 store i64 %inc.i, ptr %Other.i819 br label %for.cond.i820}821 822define internal spir_func void @Foo40(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result, ptr addrspace(4) align 1 %this) {823entry:824 %this.addr = alloca ptr addrspace(4)825 store ptr addrspace(4) %this, ptr %this.addr826 %this1 = load ptr addrspace(4), ptr %this.addr827 call spir_func void @Init6(ptr addrspace(4) dead_on_unwind writable sret(%"range") %agg.result) 828 ret void829}830 831define internal spir_func void @Foo41(ptr addrspace(4) dead_on_unwind noalias writable sret(%"nd_item") align 1 %agg.result, ptr addrspace(4) align 1 %this) {832entry:833 %this.addr = alloca ptr addrspace(4)834 store ptr addrspace(4) %this, ptr %this.addr835 %this1 = load ptr addrspace(4), ptr %this.addr836 ret void837}838 839 840 841 842define internal spir_func void @Foo42(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result, ptr addrspace(4) %lhs, ptr addrspace(4) align 4 %rhs) {843entry:844 %lhs.addr = alloca ptr addrspace(4)845 %rhs.addr = alloca ptr addrspace(4)846 %i = alloca i32, align 4847 %cleanup.dest.slot = alloca i32, align 4848 store ptr addrspace(4) %lhs, ptr %lhs.addr849 store ptr addrspace(4) %rhs, ptr %rhs.addr850 call spir_func void @Foo11(ptr addrspace(4) %agg.result) 851 store i32 0, ptr %i, align 4852 br label %for.cond853 854for.cond: ; preds = %for.body, %entry855 %0 = load i32, ptr %i, align 4856 %cmp = icmp slt i32 %0, 1857 br i1 %cmp, label %for.body, label %for.cond.cleanup858 859for.cond.cleanup: ; preds = %for.cond860 ret void861 862for.body: ; preds = %for.cond863 %1 = load ptr addrspace(4), ptr %lhs.addr864 %common_array1 = bitcast ptr addrspace(4) %1 to ptr addrspace(4)865 %2 = load i32, ptr %i, align 4866 %idxprom = sext i32 %2 to i64867 %arrayidx = getelementptr inbounds [1 x i64], ptr addrspace(4) %common_array1, i64 0, i64 %idxprom868 %3 = load i64, ptr addrspace(4) %arrayidx869 %4 = load ptr addrspace(4), ptr %rhs.addr870 %5 = load i32, ptr addrspace(4) %4, align 4871 %conv = sext i32 %5 to i64872 %cmp1 = icmp ult i64 %3, %conv873 %conv2 = zext i1 %cmp1 to i64874 %common_array32 = bitcast ptr addrspace(4) %agg.result to ptr addrspace(4)875 %6 = load i32, ptr %i, align 4876 %idxprom4 = sext i32 %6 to i64877 %arrayidx5 = getelementptr inbounds [1 x i64], ptr addrspace(4) %common_array32, i64 0, i64 %idxprom4878 store i64 %conv2, ptr addrspace(4) %arrayidx5879 %7 = load i32, ptr %i, align 4880 %inc = add nsw i32 %7, 1881 store i32 %inc, ptr %i, align 4882 br label %for.cond883}884 885declare void @llvm.assume(i1) 886 887 888define internal spir_func void @Foo43(ptr addrspace(4) dead_on_unwind noalias writable sret(%"tangle_group") %agg.result, ptr byval(%"nd_item") align 1 %group) {889entry:890 %mask = alloca %"ss_sub_group_mask"891 %agg.tmp = alloca %"nd_item", align 1892 %agg.tmp1 = alloca %"ss_sub_group_mask"893 %cleanup.dest.slot = alloca i32, align 4894 %mask.ascast = addrspacecast ptr %mask to ptr addrspace(4)895 %group.ascast = addrspacecast ptr %group to ptr addrspace(4)896 call spir_func void @Foo44(ptr addrspace(4) dead_on_unwind writable sret(%"ss_sub_group_mask") %mask.ascast, ptr byval(%"nd_item") align 1 %agg.tmp, i1 zeroext true) 897 call spir_func void @Foo45(ptr addrspace(4) %agg.result, ptr byval(%"ss_sub_group_mask") %agg.tmp1) 898 ret void899}900 901 902define internal spir_func void @Foo46(ptr addrspace(4) %this, i64 %dim0) {903entry:904 %this.addr = alloca ptr addrspace(4)905 %dim0.addr = alloca i64906 store ptr addrspace(4) %this, ptr %this.addr907 store i64 %dim0, ptr %dim0.addr908 %this1 = load ptr addrspace(4), ptr %this.addr909 %0 = load i64, ptr %dim0.addr910 call spir_func void @Foo60(ptr addrspace(4) %this1, i64 %0) 911 ret void912}913 914 915define internal spir_func ptr addrspace(4) @Foo70(ptr addrspace(4) %this, ptr byval(%"range") %Index) {916entry:917 %retval = alloca ptr addrspace(4)918 %this.addr = alloca ptr addrspace(4)919 %LinearIndex = alloca i64920 %agg.tmp = alloca %"range"921 %cleanup.dest.slot = alloca i32, align 4922 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)923 store ptr addrspace(4) %this, ptr %this.addr924 %this1 = load ptr addrspace(4), ptr %this.addr925 %call = call spir_func i64 @Foo93(ptr addrspace(4) %this1, ptr byval(%"range") %agg.tmp) 926 store i64 %call, ptr %LinearIndex927 %call2 = call spir_func ptr addrspace(1) @Foo94(ptr addrspace(4) %this1) 928 %0 = load i64, ptr %LinearIndex929 %arrayidx = getelementptr inbounds nuw i64, ptr addrspace(1) %call2, i64 %0930 %arrayidx.ascast = addrspacecast ptr addrspace(1) %arrayidx to ptr addrspace(4)931 ret ptr addrspace(4) %arrayidx.ascast932}933 934 935define internal spir_func void @Foo75(ptr byval(%"tangle_group") %G, i32 %FenceScope) {936entry:937 %FenceScope.addr = alloca i32, align 4938 %agg.tmp = alloca %"tangle_group"939 store i32 %FenceScope, ptr %FenceScope.addr, align 4940 %0 = load i32, ptr %FenceScope.addr, align 4941 call spir_func void @Foo95(ptr byval(%"tangle_group") %agg.tmp, i32 %0, i32 5) 942 ret void943}944 945 946define internal spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %this, ptr byval(%"range") %Index) {947entry:948 %retval = alloca ptr addrspace(4)949 %this.addr = alloca ptr addrspace(4)950 %LinearIndex = alloca i64951 %agg.tmp = alloca %"range"952 %cleanup.dest.slot = alloca i32, align 4953 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)954 store ptr addrspace(4) %this, ptr %this.addr955 %this1 = load ptr addrspace(4), ptr %this.addr956 %call = call spir_func i64 @Foo77(ptr addrspace(4) %this1, ptr byval(%"range") %agg.tmp) 957 store i64 %call, ptr %LinearIndex958 %call2 = call spir_func ptr addrspace(1) @Foo78(ptr addrspace(4) %this1) 959 %0 = load i64, ptr %LinearIndex960 %arrayidx = getelementptr inbounds nuw i8, ptr addrspace(1) %call2, i64 %0961 %arrayidx.ascast = addrspacecast ptr addrspace(1) %arrayidx to ptr addrspace(4)962 ret ptr addrspace(4) %arrayidx.ascast963}964 965 966define internal spir_func i32 @Foo76(ptr addrspace(4) align 1 %this) {967entry:968 %retval = alloca i32, align 4969 %this.addr = alloca ptr addrspace(4)970 %ref.tmp = alloca %"range"971 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)972 %ref.tmp.ascast = addrspacecast ptr %ref.tmp to ptr addrspace(4)973 store ptr addrspace(4) %this, ptr %this.addr974 %this1 = load ptr addrspace(4), ptr %this.addr975 call spir_func void @Foo96(ptr addrspace(4) dead_on_unwind writable sret(%"range") %ref.tmp.ascast, ptr addrspace(4) align 1 %this1) 976 %call = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %ref.tmp.ascast, i32 0) 977 %0 = load i64, ptr addrspace(4) %call978 %conv = trunc i64 %0 to i32979 ret i32 %conv980}981 982 983define internal spir_func i32 @Foo90(ptr addrspace(4) %this) {984entry:985 %retval = alloca i32, align 4986 %this.addr = alloca ptr addrspace(4)987 %ref.tmp = alloca %"range"988 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)989 %ref.tmp.ascast = addrspacecast ptr %ref.tmp to ptr addrspace(4)990 store ptr addrspace(4) %this, ptr %this.addr991 %this1 = load ptr addrspace(4), ptr %this.addr992 call spir_func void @Foo51(ptr addrspace(4) dead_on_unwind writable sret(%"range") %ref.tmp.ascast, ptr addrspace(4) %this1) 993 %call = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %ref.tmp.ascast, i32 0) 994 %0 = load i64, ptr addrspace(4) %call995 %conv = trunc i64 %0 to i32996 ret i32 %conv997}998 999 1000define internal spir_func i32 @Foo91(ptr byval(%"tangle_group") %g, i32 %x, i32 %linear_local_id) {1001entry:1002 %retval = alloca i32, align 41003 %x.addr = alloca i32, align 41004 %linear_local_id.addr = alloca i32, align 41005 %agg.tmp = alloca %"tangle_group"1006 %agg.tmp1 = alloca %"range"1007 %agg.tmp2 = alloca %"range"1008 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)1009 %agg.tmp1.ascast = addrspacecast ptr %agg.tmp1 to ptr addrspace(4)1010 %agg.tmp2.ascast = addrspacecast ptr %agg.tmp2 to ptr addrspace(4)1011 %g.ascast = addrspacecast ptr %g to ptr addrspace(4)1012 store i32 %x, ptr %x.addr, align 41013 store i32 %linear_local_id, ptr %linear_local_id.addr, align 41014 %0 = load i32, ptr %x.addr, align 41015 call spir_func void @Foo97(ptr addrspace(4) dead_on_unwind writable sret(%"range") %agg.tmp2.ascast, ptr addrspace(4) %g.ascast) 1016 %1 = load i32, ptr %linear_local_id.addr, align 41017 %conv = zext i32 %1 to i641018 call spir_func void @Foo98(ptr addrspace(4) dead_on_unwind writable sret(%"range") %agg.tmp1.ascast, ptr byval(%"range") %agg.tmp2, i64 %conv) 1019 %call = call spir_func i32 @Bar69(ptr byval(%"tangle_group") %agg.tmp, i32 %0, ptr byval(%"range") %agg.tmp1) 1020 ret i32 %call1021}1022 1023 1024define internal spir_func zeroext i1 @Foo92(ptr byval(%"tangle_group") %g, i1 zeroext %pred) {1025entry:1026 %retval = alloca i1, align 11027 %pred.addr = alloca i8, align 11028 %agg.tmp = alloca %"tangle_group"1029 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)1030 %storedv = zext i1 %pred to i81031 store i8 %storedv, ptr %pred.addr, align 11032 %0 = load i8, ptr %pred.addr, align 1 1033 %loadedv = trunc i8 %0 to i11034 %call = call spir_func zeroext i1 @Bar10(ptr byval(%"tangle_group") %agg.tmp, i1 zeroext %loadedv) 1035 ret i1 %call1036}1037 1038 1039define internal spir_func zeroext i1 @Foo67(ptr byval(%"tangle_group") %g, i1 zeroext %pred) {1040entry:1041 %retval = alloca i1, align 11042 %pred.addr = alloca i8, align 11043 %agg.tmp = alloca %"tangle_group"1044 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)1045 %storedv = zext i1 %pred to i81046 store i8 %storedv, ptr %pred.addr, align 11047 %0 = load i8, ptr %pred.addr, align 1 1048 %loadedv = trunc i8 %0 to i11049 %call = call spir_func zeroext i1 @Foo66(ptr byval(%"tangle_group") %agg.tmp, i1 zeroext %loadedv) 1050 ret i1 %call1051}1052 1053 1054define internal spir_func zeroext i1 @Foo65(ptr byval(%"tangle_group") %g, i1 zeroext %pred) {1055entry:1056 %retval = alloca i1, align 11057 %pred.addr = alloca i8, align 11058 %agg.tmp = alloca %"tangle_group"1059 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)1060 %storedv = zext i1 %pred to i81061 store i8 %storedv, ptr %pred.addr, align 11062 %0 = load i8, ptr %pred.addr, align 1 1063 %loadedv = trunc i8 %0 to i11064 %lnot = xor i1 %loadedv, true1065 %call = call spir_func zeroext i1 @Foo66(ptr byval(%"tangle_group") %agg.tmp, i1 zeroext %lnot) 1066 ret i1 %call1067}1068 1069 1070define internal spir_func i32 @Foo64(ptr byval(%"tangle_group") %g, i32 %x, ptr byval(%"nd_item") align 1 %binary_op) {1071entry:1072 %retval = alloca i32, align 41073 %x.addr = alloca i32, align 41074 %agg.tmp = alloca %"tangle_group"1075 %agg.tmp1 = alloca %"nd_item", align 11076 %agg.tmp2 = alloca %"nd_item", align 11077 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)1078 store i32 %x, ptr %x.addr, align 41079 %binary_op.ascast = addrspacecast ptr %binary_op to ptr addrspace(4)1080 %0 = load i32, ptr %x.addr, align 41081 %call = call spir_func i32 @Bar11(ptr byval(%"tangle_group") %agg.tmp, ptr byval(%"nd_item") align 1 %agg.tmp1, i32 %0, ptr byval(%"nd_item") align 1 %agg.tmp2) 1082 ret i32 %call1083}1084 1085 1086define internal spir_func i32 @Foo63(ptr byval(%"tangle_group") %g, i32 %x, ptr byval(%"nd_item") align 1 %binary_op) {1087entry:1088 %retval = alloca i32, align 41089 %x.addr = alloca i32, align 41090 %res = alloca i32, align 41091 %agg.tmp = alloca %"tangle_group"1092 %agg.tmp1 = alloca %"nd_item", align 11093 %agg.tmp2 = alloca %"nd_item", align 11094 %cleanup.dest.slot = alloca i32, align 41095 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)1096 store i32 %x, ptr %x.addr, align 41097 %binary_op.ascast = addrspacecast ptr %binary_op to ptr addrspace(4)1098 %0 = load i32, ptr %x.addr, align 41099 %call = call spir_func i32 @Bar12(ptr byval(%"tangle_group") %agg.tmp, ptr byval(%"nd_item") align 1 %agg.tmp1, i32 %0, ptr byval(%"nd_item") align 1 %agg.tmp2) 1100 store i32 %call, ptr %res, align 41101 %1 = load i32, ptr %res, align 41102 ret i32 %11103}1104 1105 1106define internal spir_func i32 @Foo62(ptr byval(%"tangle_group") %g, i32 %x, ptr byval(%"nd_item") align 1 %binary_op) {1107entry:1108 %retval = alloca i32, align 41109 %x.addr = alloca i32, align 41110 %agg.tmp = alloca %"tangle_group"1111 %agg.tmp1 = alloca %"nd_item", align 11112 %agg.tmp2 = alloca %"nd_item", align 11113 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)1114 store i32 %x, ptr %x.addr, align 41115 %binary_op.ascast = addrspacecast ptr %binary_op to ptr addrspace(4)1116 %0 = load i32, ptr %x.addr, align 41117 %call = call spir_func i32 @Foo61(ptr byval(%"tangle_group") %agg.tmp, ptr byval(%"nd_item") align 1 %agg.tmp1, i32 %0, ptr byval(%"nd_item") align 1 %agg.tmp2) 1118 ret i32 %call1119}1120 1121 1122define internal spir_func i32 @Foo73(ptr byval(%"tangle_group") %g, i32 %x, i32 %delta) {1123entry:1124 %retval = alloca i32, align 41125 %x.addr = alloca i32, align 41126 %delta.addr = alloca i32, align 41127 %agg.tmp = alloca %"tangle_group"1128 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)1129 store i32 %x, ptr %x.addr, align 41130 store i32 %delta, ptr %delta.addr, align 41131 %0 = load i32, ptr %x.addr, align 41132 %1 = load i32, ptr %delta.addr, align 41133 %call = call spir_func i32 @Foo72(ptr byval(%"tangle_group") %agg.tmp, i32 %0, i32 %1) 1134 ret i32 %call1135}1136 1137 1138define internal spir_func zeroext i1 @Foo71(ptr addrspace(4) align 1 %this, i64 %Other) {1139entry:1140 %retval = alloca i1, align 11141 %this.addr = alloca ptr addrspace(4)1142 %Other.addr = alloca i641143 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)1144 store ptr addrspace(4) %this, ptr %this.addr1145 store i64 %Other, ptr %Other.addr1146 %this1 = load ptr addrspace(4), ptr %this.addr1147 %0 = load i64, ptr %Other.addr1148 %cmp = icmp ult i64 %0, 41149 ret i1 %cmp1150}1151 1152 1153define internal spir_func i32 @Foo53(ptr byval(%"tangle_group") %g, i32 %x, i32 %delta) {1154entry:1155 %retval = alloca i32, align 41156 %x.addr = alloca i32, align 41157 %delta.addr = alloca i32, align 41158 %agg.tmp = alloca %"tangle_group"1159 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)1160 store i32 %x, ptr %x.addr, align 41161 store i32 %delta, ptr %delta.addr, align 41162 %0 = load i32, ptr %x.addr, align 41163 %1 = load i32, ptr %delta.addr, align 41164 %call = call spir_func i32 @Foo52(ptr byval(%"tangle_group") %agg.tmp, i32 %0, i32 %1) 1165 ret i32 %call1166}1167 1168 1169define internal spir_func void @Foo51(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result, ptr addrspace(4) %this) {1170entry:1171 %this.addr = alloca ptr addrspace(4)1172 %agg.tmp = alloca %"ss_sub_group_mask"1173 store ptr addrspace(4) %this, ptr %this.addr1174 %this1 = load ptr addrspace(4), ptr %this.addr1175 %Mask1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)1176 %call = call spir_func i32 @Foo47(ptr byval(%"ss_sub_group_mask") %agg.tmp) 1177 %conv = zext i32 %call to i641178 call spir_func void @Foo46(ptr addrspace(4) %agg.result, i64 %conv) 1179 ret void1180}1181 1182 1183define internal spir_func void @Foo55(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result, ptr addrspace(4) %lhs, ptr addrspace(4) align 4 %rhs) {1184entry:1185 %lhs.addr = alloca ptr addrspace(4)1186 %rhs.addr = alloca ptr addrspace(4)1187 %i = alloca i32, align 41188 %cleanup.dest.slot = alloca i32, align 41189 store ptr addrspace(4) %lhs, ptr %lhs.addr1190 store ptr addrspace(4) %rhs, ptr %rhs.addr1191 call spir_func void @Foo11(ptr addrspace(4) %agg.result) 1192 store i32 0, ptr %i, align 41193 br label %for.cond1194 1195for.cond: ; preds = %for.body, %entry1196 %0 = load i32, ptr %i, align 41197 %cmp = icmp slt i32 %0, 11198 br i1 %cmp, label %for.body, label %for.cond.cleanup1199 1200for.cond.cleanup: ; preds = %for.cond1201 ret void1202 1203for.body: ; preds = %for.cond1204 %1 = load ptr addrspace(4), ptr %lhs.addr1205 %common_array2 = bitcast ptr addrspace(4) %1 to ptr addrspace(4)1206 %2 = load i32, ptr %i, align 41207 %idxprom = sext i32 %2 to i641208 %arrayidx = getelementptr inbounds [1 x i64], ptr addrspace(4) %common_array2, i64 0, i64 %idxprom1209 %3 = load i64, ptr addrspace(4) %arrayidx1210 %4 = load ptr addrspace(4), ptr %rhs.addr1211 %5 = load i32, ptr addrspace(4) %4, align 41212 %conv = sext i32 %5 to i641213 %add = add i64 %3, %conv1214 %common_array13 = bitcast ptr addrspace(4) %agg.result to ptr addrspace(4)1215 %6 = load i32, ptr %i, align 41216 %idxprom2 = sext i32 %6 to i641217 %arrayidx3 = getelementptr inbounds [1 x i64], ptr addrspace(4) %common_array13, i64 0, i64 %idxprom21218 store i64 %add, ptr addrspace(4) %arrayidx31219 %7 = load i32, ptr %i, align 41220 %inc = add nsw i32 %7, 11221 store i32 %inc, ptr %i, align 41222 br label %for.cond1223}1224 1225 1226define internal spir_func void @Foo56(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result, ptr addrspace(4) %lhs, ptr addrspace(4) %rhs) {1227entry:1228 %lhs.addr = alloca ptr addrspace(4)1229 %rhs.addr = alloca ptr addrspace(4)1230 %i = alloca i32, align 41231 %cleanup.dest.slot = alloca i32, align 41232 store ptr addrspace(4) %lhs, ptr %lhs.addr1233 store ptr addrspace(4) %rhs, ptr %rhs.addr1234 call spir_func void @Foo11(ptr addrspace(4) %agg.result) 1235 store i32 0, ptr %i, align 41236 br label %for.cond1237 1238for.cond: ; preds = %for.body, %entry1239 %0 = load i32, ptr %i, align 41240 %cmp = icmp slt i32 %0, 11241 br i1 %cmp, label %for.body, label %for.cond.cleanup1242 1243for.cond.cleanup: ; preds = %for.cond1244 ret void1245 1246for.body: ; preds = %for.cond1247 %1 = load ptr addrspace(4), ptr %lhs.addr1248 %common_array2 = bitcast ptr addrspace(4) %1 to ptr addrspace(4)1249 %2 = load i32, ptr %i, align 41250 %idxprom = sext i32 %2 to i641251 %arrayidx = getelementptr inbounds [1 x i64], ptr addrspace(4) %common_array2, i64 0, i64 %idxprom1252 %3 = load i64, ptr addrspace(4) %arrayidx1253 %4 = load ptr addrspace(4), ptr %rhs.addr1254 %5 = load i64, ptr addrspace(4) %41255 %rem = urem i64 %3, %51256 %common_array13 = bitcast ptr addrspace(4) %agg.result to ptr addrspace(4)1257 %6 = load i32, ptr %i, align 41258 %idxprom2 = sext i32 %6 to i641259 %arrayidx3 = getelementptr inbounds [1 x i64], ptr addrspace(4) %common_array13, i64 0, i64 %idxprom21260 store i64 %rem, ptr addrspace(4) %arrayidx31261 %7 = load i32, ptr %i, align 41262 %inc = add nsw i32 %7, 11263 store i32 %inc, ptr %i, align 41264 br label %for.cond1265}1266 1267 1268define internal spir_func i32 @Foo57(ptr byval(%"tangle_group") %g, i32 %x, ptr byval(%"range") %local_id) {1269entry:1270 %retval = alloca i32, align 41271 %x.addr = alloca i32, align 41272 %agg.tmp = alloca %"tangle_group"1273 %agg.tmp1 = alloca %"range"1274 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)1275 store i32 %x, ptr %x.addr, align 41276 %0 = load i32, ptr %x.addr, align 41277 %call = call spir_func i32 @Foo59(ptr byval(%"tangle_group") %agg.tmp, i32 %0, ptr byval(%"range") %agg.tmp1) 1278 ret i32 %call1279}1280 1281 1282define internal spir_func i32 @Foo58(ptr byval(%"tangle_group") %g, i32 %x, i32 %mask) {1283entry:1284 %retval = alloca i32, align 41285 %x.addr = alloca i32, align 41286 %mask.addr = alloca i32, align 41287 %agg.tmp = alloca %"tangle_group"1288 %agg.tmp1 = alloca %"range"1289 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)1290 %agg.tmp1.ascast = addrspacecast ptr %agg.tmp1 to ptr addrspace(4)1291 store i32 %x, ptr %x.addr, align 41292 store i32 %mask, ptr %mask.addr, align 41293 %0 = load i32, ptr %x.addr, align 41294 %1 = load i32, ptr %mask.addr, align 41295 %conv = zext i32 %1 to i641296 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp1.ascast, i64 %conv) 1297 %call = call spir_func i32 @Bar13(ptr byval(%"tangle_group") %agg.tmp, i32 %0, ptr byval(%"range") %agg.tmp1) 1298 ret i32 %call1299}1300 1301 1302define internal spir_func void @Foo68(ptr addrspace(4) %this, i64 %WI, ptr byval(%"tangle_group") %Tangle, i64 %TangleLeader, i64 %TangleSize, ptr byval(%"nd_item") align 1 %IsMember) {1303entry:1304 %this.addr = alloca ptr addrspace(4)1305 %WI.addr = alloca i641306 %TangleLeader.addr = alloca i641307 %TangleSize.addr = alloca i641308 %agg.tmp = alloca %"range"1309 %agg.tmp2 = alloca %"tangle_group"1310 %Visible = alloca i641311 %Other = alloca i641312 %cleanup.dest.slot = alloca i32, align 41313 %agg.tmp5 = alloca %"range"1314 %agg.tmp8 = alloca %"range"1315 %OriginalLID = alloca i32, align 41316 %LID = alloca i32, align 41317 %BroadcastResult = alloca i32, align 41318 %agg.tmp12 = alloca %"tangle_group"1319 %agg.tmp15 = alloca %"range"1320 %AnyResult = alloca i8, align 11321 %agg.tmp18 = alloca %"tangle_group"1322 %agg.tmp24 = alloca %"range"1323 %AllResult = alloca i8, align 11324 %agg.tmp27 = alloca %"tangle_group"1325 %agg.tmp35 = alloca %"range"1326 %NoneResult = alloca i8, align 11327 %agg.tmp38 = alloca %"tangle_group"1328 %agg.tmp46 = alloca %"range"1329 %ReduceResult = alloca i32, align 41330 %agg.tmp49 = alloca %"tangle_group"1331 %agg.tmp50 = alloca %"nd_item", align 11332 %agg.tmp54 = alloca %"range"1333 %ExScanResult = alloca i32, align 41334 %agg.tmp57 = alloca %"tangle_group"1335 %agg.tmp58 = alloca %"nd_item", align 11336 %agg.tmp61 = alloca %"range"1337 %IncScanResult = alloca i32, align 41338 %agg.tmp64 = alloca %"tangle_group"1339 %agg.tmp65 = alloca %"nd_item", align 11340 %agg.tmp69 = alloca %"range"1341 %ShiftLeftResult = alloca i32, align 41342 %agg.tmp72 = alloca %"tangle_group"1343 %agg.tmp79 = alloca %"range"1344 %ShiftRightResult = alloca i32, align 41345 %agg.tmp82 = alloca %"tangle_group"1346 %agg.tmp88 = alloca %"range"1347 %SelectResult = alloca i32, align 41348 %agg.tmp91 = alloca %"tangle_group"1349 %agg.tmp92 = alloca %"range"1350 %ref.tmp = alloca %"range"1351 %ref.tmp93 = alloca %"range"1352 %ref.tmp94 = alloca i32, align 41353 %agg.tmp100 = alloca %"range"1354 %PermuteXorResult = alloca i32, align 41355 %agg.tmp103 = alloca %"tangle_group"1356 %agg.tmp106 = alloca %"range"1357 %TangleSize.addr.ascast = addrspacecast ptr %TangleSize.addr to ptr addrspace(4)1358 %agg.tmp.ascast = addrspacecast ptr %agg.tmp to ptr addrspace(4)1359 %agg.tmp5.ascast = addrspacecast ptr %agg.tmp5 to ptr addrspace(4)1360 %agg.tmp8.ascast = addrspacecast ptr %agg.tmp8 to ptr addrspace(4)1361 %agg.tmp15.ascast = addrspacecast ptr %agg.tmp15 to ptr addrspace(4)1362 %agg.tmp24.ascast = addrspacecast ptr %agg.tmp24 to ptr addrspace(4)1363 %agg.tmp35.ascast = addrspacecast ptr %agg.tmp35 to ptr addrspace(4)1364 %agg.tmp46.ascast = addrspacecast ptr %agg.tmp46 to ptr addrspace(4)1365 %agg.tmp54.ascast = addrspacecast ptr %agg.tmp54 to ptr addrspace(4)1366 %agg.tmp61.ascast = addrspacecast ptr %agg.tmp61 to ptr addrspace(4)1367 %agg.tmp69.ascast = addrspacecast ptr %agg.tmp69 to ptr addrspace(4)1368 %agg.tmp79.ascast = addrspacecast ptr %agg.tmp79 to ptr addrspace(4)1369 %agg.tmp88.ascast = addrspacecast ptr %agg.tmp88 to ptr addrspace(4)1370 %agg.tmp92.ascast = addrspacecast ptr %agg.tmp92 to ptr addrspace(4)1371 %ref.tmp.ascast = addrspacecast ptr %ref.tmp to ptr addrspace(4)1372 %ref.tmp93.ascast = addrspacecast ptr %ref.tmp93 to ptr addrspace(4)1373 %ref.tmp94.ascast = addrspacecast ptr %ref.tmp94 to ptr addrspace(4)1374 %agg.tmp100.ascast = addrspacecast ptr %agg.tmp100 to ptr addrspace(4)1375 %agg.tmp106.ascast = addrspacecast ptr %agg.tmp106 to ptr addrspace(4)1376 store ptr addrspace(4) %this, ptr %this.addr1377 store i64 %WI, ptr %WI.addr1378 %Tangle.ascast = addrspacecast ptr %Tangle to ptr addrspace(4)1379 store i64 %TangleLeader, ptr %TangleLeader.addr1380 store i64 %TangleSize, ptr %TangleSize.addr1381 %IsMember.ascast = addrspacecast ptr %IsMember to ptr addrspace(4)1382 %this1 = load ptr addrspace(4), ptr %this.addr1383 %TmpAcc1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)1384 %0 = load i64, ptr %WI.addr1385 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp.ascast, i64 %0) 1386 %call = call spir_func ptr addrspace(4) @Foo70(ptr addrspace(4) %TmpAcc1, ptr byval(%"range") %agg.tmp) 1387 store i64 1, ptr addrspace(4) %call1388 call spir_func void @Foo75(ptr byval(%"tangle_group") %agg.tmp2, i32 1) 1389 store i64 0, ptr %Visible1390 store i64 0, ptr %Other1391 br label %for.cond1392 1393for.cond: ; preds = %if.end, %entry1394 %1 = load i64, ptr %Other1395 %cmp = icmp ult i64 %1, 321396 br i1 %cmp, label %for.body, label %for.cond.cleanup1397 1398for.cond.cleanup: ; preds = %for.cond1399 %2 = load i64, ptr %Visible1400 %3 = load i64, ptr %TangleSize.addr1401 %cmp7 = icmp eq i64 %2, %31402 %BarrierAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 11403 %4 = load i64, ptr %WI.addr1404 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp8.ascast, i64 %4) 1405 %call9 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %BarrierAcc, ptr byval(%"range") %agg.tmp8) 1406 %storedv = zext i1 %cmp7 to i81407 store i8 %storedv, ptr addrspace(4) %call9, align 11408 %5 = getelementptr inbounds i8, ptr addrspace(4) %this1, i64 641409 %call10 = call spir_func i32 @Foo76(ptr addrspace(4) align 1 %5) 1410 store i32 %call10, ptr %OriginalLID, align 41411 %call11 = call spir_func i32 @Foo90(ptr addrspace(4) %Tangle.ascast) 1412 store i32 %call11, ptr %LID, align 41413 %6 = load i32, ptr %OriginalLID, align 41414 %call13 = call spir_func i32 @Foo91(ptr byval(%"tangle_group") %agg.tmp12, i32 %6, i32 0) 1415 store i32 %call13, ptr %BroadcastResult, align 41416 %7 = load i32, ptr %BroadcastResult, align 41417 %conv = zext i32 %7 to i641418 %8 = load i64, ptr %TangleLeader.addr1419 %cmp14 = icmp eq i64 %conv, %81420 %BroadcastAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 31421 %9 = load i64, ptr %WI.addr1422 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp15.ascast, i64 %9) 1423 %call16 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %BroadcastAcc, ptr byval(%"range") %agg.tmp15) 1424 %storedv17 = zext i1 %cmp14 to i81425 store i8 %storedv17, ptr addrspace(4) %call16, align 11426 %10 = load i32, ptr %LID, align 41427 %cmp19 = icmp eq i32 %10, 01428 %call20 = call spir_func zeroext i1 @Foo92(ptr byval(%"tangle_group") %agg.tmp18, i1 zeroext %cmp19) 1429 %storedv21 = zext i1 %call20 to i81430 store i8 %storedv21, ptr %AnyResult, align 11431 %11 = load i8, ptr %AnyResult, align 1 1432 %loadedv = trunc i8 %11 to i11433 %conv22 = zext i1 %loadedv to i321434 %cmp23 = icmp eq i32 %conv22, 11435 %AnyAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 41436 %12 = load i64, ptr %WI.addr1437 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp24.ascast, i64 %12) 1438 %call25 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %AnyAcc, ptr byval(%"range") %agg.tmp24) 1439 %storedv26 = zext i1 %cmp23 to i81440 store i8 %storedv26, ptr addrspace(4) %call25, align 11441 %13 = load i32, ptr %LID, align 41442 %conv28 = zext i32 %13 to i641443 %14 = load i64, ptr %TangleSize.addr1444 %cmp29 = icmp ult i64 %conv28, %141445 %call30 = call spir_func zeroext i1 @Foo67(ptr byval(%"tangle_group") %agg.tmp27, i1 zeroext %cmp29) 1446 %storedv31 = zext i1 %call30 to i81447 store i8 %storedv31, ptr %AllResult, align 11448 %15 = load i8, ptr %AllResult, align 1 1449 %loadedv32 = trunc i8 %15 to i11450 %conv33 = zext i1 %loadedv32 to i321451 %cmp34 = icmp eq i32 %conv33, 11452 %AllAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 51453 %16 = load i64, ptr %WI.addr1454 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp35.ascast, i64 %16) 1455 %call36 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %AllAcc, ptr byval(%"range") %agg.tmp35) 1456 %storedv37 = zext i1 %cmp34 to i81457 store i8 %storedv37, ptr addrspace(4) %call36, align 11458 %17 = load i32, ptr %LID, align 41459 %conv39 = zext i32 %17 to i641460 %18 = load i64, ptr %TangleSize.addr1461 %cmp40 = icmp uge i64 %conv39, %181462 %call41 = call spir_func zeroext i1 @Foo65(ptr byval(%"tangle_group") %agg.tmp38, i1 zeroext %cmp40) 1463 %storedv42 = zext i1 %call41 to i81464 store i8 %storedv42, ptr %NoneResult, align 11465 %19 = load i8, ptr %NoneResult, align 1 1466 %loadedv43 = trunc i8 %19 to i11467 %conv44 = zext i1 %loadedv43 to i321468 %cmp45 = icmp eq i32 %conv44, 11469 %NoneAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 61470 %20 = load i64, ptr %WI.addr1471 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp46.ascast, i64 %20) 1472 %call47 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %NoneAcc, ptr byval(%"range") %agg.tmp46) 1473 %storedv48 = zext i1 %cmp45 to i81474 store i8 %storedv48, ptr addrspace(4) %call47, align 11475 %call51 = call spir_func i32 @Foo64(ptr byval(%"tangle_group") %agg.tmp49, i32 1, ptr byval(%"nd_item") align 1 %agg.tmp50) 1476 store i32 %call51, ptr %ReduceResult, align 41477 %21 = load i32, ptr %ReduceResult, align 41478 %conv52 = zext i32 %21 to i641479 %22 = load i64, ptr %TangleSize.addr1480 %cmp53 = icmp eq i64 %conv52, %221481 %ReduceAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 71482 %23 = load i64, ptr %WI.addr1483 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp54.ascast, i64 %23) 1484 %call55 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %ReduceAcc, ptr byval(%"range") %agg.tmp54) 1485 %storedv56 = zext i1 %cmp53 to i81486 store i8 %storedv56, ptr addrspace(4) %call55, align 11487 %call59 = call spir_func i32 @Foo63(ptr byval(%"tangle_group") %agg.tmp57, i32 1, ptr byval(%"nd_item") align 1 %agg.tmp58) 1488 store i32 %call59, ptr %ExScanResult, align 41489 %24 = load i32, ptr %ExScanResult, align 41490 %25 = load i32, ptr %LID, align 41491 %cmp60 = icmp eq i32 %24, %251492 %ExScanAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 81493 %26 = load i64, ptr %WI.addr1494 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp61.ascast, i64 %26) 1495 %call62 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %ExScanAcc, ptr byval(%"range") %agg.tmp61) 1496 %storedv63 = zext i1 %cmp60 to i81497 store i8 %storedv63, ptr addrspace(4) %call62, align 11498 %call66 = call spir_func i32 @Foo62(ptr byval(%"tangle_group") %agg.tmp64, i32 1, ptr byval(%"nd_item") align 1 %agg.tmp65) 1499 store i32 %call66, ptr %IncScanResult, align 41500 %27 = load i32, ptr %IncScanResult, align 41501 %28 = load i32, ptr %LID, align 41502 %add67 = add i32 %28, 11503 %cmp68 = icmp eq i32 %27, %add671504 %IncScanAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 91505 %29 = load i64, ptr %WI.addr1506 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp69.ascast, i64 %29) 1507 %call70 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %IncScanAcc, ptr byval(%"range") %agg.tmp69) 1508 %storedv71 = zext i1 %cmp68 to i81509 store i8 %storedv71, ptr addrspace(4) %call70, align 11510 %30 = load i32, ptr %LID, align 41511 %call73 = call spir_func i32 @Foo73(ptr byval(%"tangle_group") %agg.tmp72, i32 %30, i32 2) 1512 store i32 %call73, ptr %ShiftLeftResult, align 41513 %31 = load i32, ptr %LID, align 41514 %add74 = add i32 %31, 21515 %conv75 = zext i32 %add74 to i641516 %32 = load i64, ptr %TangleSize.addr1517 %cmp76 = icmp uge i64 %conv75, %321518 br i1 %cmp76, label %lor.end, label %lor.rhs1519 1520lor.rhs: ; preds = %for.cond.cleanup1521 %33 = load i32, ptr %ShiftLeftResult, align 41522 %34 = load i32, ptr %LID, align 41523 %add77 = add i32 %34, 21524 %cmp78 = icmp eq i32 %33, %add771525 br label %lor.end1526 1527lor.end: ; preds = %lor.rhs, %for.cond.cleanup1528 %35 = phi i1 [ true, %for.cond.cleanup ], [ %cmp78, %lor.rhs ]1529 %ShiftLeftAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 101530 %36 = load i64, ptr %WI.addr1531 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp79.ascast, i64 %36) 1532 %call80 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %ShiftLeftAcc, ptr byval(%"range") %agg.tmp79) 1533 %storedv81 = zext i1 %35 to i81534 store i8 %storedv81, ptr addrspace(4) %call80, align 11535 %37 = load i32, ptr %LID, align 41536 %call83 = call spir_func i32 @Foo53(ptr byval(%"tangle_group") %agg.tmp82, i32 %37, i32 2) 1537 store i32 %call83, ptr %ShiftRightResult, align 41538 %38 = load i32, ptr %LID, align 41539 %cmp84 = icmp ult i32 %38, 21540 br i1 %cmp84, label %lor.end87, label %lor.rhs851541 1542lor.rhs85: ; preds = %lor.end1543 %39 = load i32, ptr %ShiftRightResult, align 41544 %40 = load i32, ptr %LID, align 41545 %sub = sub i32 %40, 21546 %cmp86 = icmp eq i32 %39, %sub1547 br label %lor.end871548 1549lor.end87: ; preds = %lor.rhs85, %lor.end1550 %41 = phi i1 [ true, %lor.end ], [ %cmp86, %lor.rhs85 ]1551 %ShiftRightAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 111552 %42 = load i64, ptr %WI.addr1553 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp88.ascast, i64 %42) 1554 %call89 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %ShiftRightAcc, ptr byval(%"range") %agg.tmp88) 1555 %storedv90 = zext i1 %41 to i81556 store i8 %storedv90, ptr addrspace(4) %call89, align 11557 %43 = load i32, ptr %LID, align 41558 call spir_func void @Foo51(ptr addrspace(4) dead_on_unwind writable sret(%"range") %ref.tmp93.ascast, ptr addrspace(4) %Tangle.ascast) 1559 store i32 2, ptr %ref.tmp94, align 41560 call spir_func void @Foo55(ptr addrspace(4) dead_on_unwind writable sret(%"range") %ref.tmp.ascast, ptr addrspace(4) %ref.tmp93.ascast, ptr addrspace(4) align 4 %ref.tmp94.ascast) 1561 call spir_func void @Foo56(ptr addrspace(4) dead_on_unwind writable sret(%"range") %agg.tmp92.ascast, ptr addrspace(4) %ref.tmp.ascast, ptr addrspace(4) %TangleSize.addr.ascast) 1562 %call95 = call spir_func i32 @Foo57(ptr byval(%"tangle_group") %agg.tmp91, i32 %43, ptr byval(%"range") %agg.tmp92) 1563 store i32 %call95, ptr %SelectResult, align 41564 %44 = load i32, ptr %SelectResult, align 41565 %conv96 = zext i32 %44 to i641566 %45 = load i32, ptr %LID, align 41567 %add97 = add i32 %45, 21568 %conv98 = zext i32 %add97 to i641569 %46 = load i64, ptr %TangleSize.addr1570 %rem = urem i64 %conv98, %461571 %cmp99 = icmp eq i64 %conv96, %rem1572 %SelectAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 121573 %47 = load i64, ptr %WI.addr1574 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp100.ascast, i64 %47) 1575 %call101 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %SelectAcc, ptr byval(%"range") %agg.tmp100) 1576 %storedv102 = zext i1 %cmp99 to i81577 store i8 %storedv102, ptr addrspace(4) %call101, align 11578 %48 = load i32, ptr %LID, align 41579 %call104 = call spir_func i32 @Foo58(ptr byval(%"tangle_group") %agg.tmp103, i32 %48, i32 2) 1580 store i32 %call104, ptr %PermuteXorResult, align 41581 %49 = load i32, ptr %PermuteXorResult, align 41582 %50 = load i32, ptr %LID, align 41583 %xor = xor i32 %50, 21584 %cmp105 = icmp eq i32 %49, %xor1585 %PermuteXorAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 131586 %51 = load i64, ptr %WI.addr1587 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp106.ascast, i64 %51) 1588 %call107 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %PermuteXorAcc, ptr byval(%"range") %agg.tmp106) 1589 %storedv108 = zext i1 %cmp105 to i81590 store i8 %storedv108, ptr addrspace(4) %call107, align 11591 ret void1592 1593for.body: ; preds = %for.cond1594 %52 = load i64, ptr %Other1595 %call3 = call spir_func zeroext i1 @Foo74(ptr addrspace(4) align 1 %IsMember.ascast, i64 %52) 1596 br i1 %call3, label %if.then, label %if.end1597 1598if.then: ; preds = %for.body1599 %TmpAcc42 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)1600 %53 = load i64, ptr %Other1601 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp5.ascast, i64 %53) 1602 %call6 = call spir_func ptr addrspace(4) @Foo70(ptr addrspace(4) %TmpAcc42, ptr byval(%"range") %agg.tmp5) 1603 %54 = load i64, ptr addrspace(4) %call61604 %55 = load i64, ptr %Visible1605 %add = add i64 %55, %541606 store i64 %add, ptr %Visible1607 br label %if.end1608 1609if.end: ; preds = %if.then, %for.body1610 %56 = load i64, ptr %Other1611 %inc = add i64 %56, 11612 store i64 %inc, ptr %Other1613 br label %for.cond1614}1615 1616 1617define internal spir_func void @Foo69(ptr addrspace(4) %this, i64 %WI, ptr byval(%"tangle_group") %Tangle, i64 %TangleLeader, i64 %TangleSize, ptr byval(%"nd_item") align 1 %IsMember) {1618entry:1619 %this.addr = alloca ptr addrspace(4)1620 %WI.addr = alloca i641621 %TangleLeader.addr = alloca i641622 %TangleSize.addr = alloca i641623 %agg.tmp = alloca %"range"1624 %agg.tmp2 = alloca %"tangle_group"1625 %Visible = alloca i641626 %Other = alloca i641627 %cleanup.dest.slot = alloca i32, align 41628 %agg.tmp5 = alloca %"range"1629 %agg.tmp8 = alloca %"range"1630 %OriginalLID = alloca i32, align 41631 %LID = alloca i32, align 41632 %BroadcastResult = alloca i32, align 41633 %agg.tmp12 = alloca %"tangle_group"1634 %agg.tmp15 = alloca %"range"1635 %AnyResult = alloca i8, align 11636 %agg.tmp18 = alloca %"tangle_group"1637 %agg.tmp24 = alloca %"range"1638 %AllResult = alloca i8, align 11639 %agg.tmp27 = alloca %"tangle_group"1640 %agg.tmp35 = alloca %"range"1641 %NoneResult = alloca i8, align 11642 %agg.tmp38 = alloca %"tangle_group"1643 %agg.tmp46 = alloca %"range"1644 %ReduceResult = alloca i32, align 41645 %agg.tmp49 = alloca %"tangle_group"1646 %agg.tmp50 = alloca %"nd_item", align 11647 %agg.tmp54 = alloca %"range"1648 %ExScanResult = alloca i32, align 41649 %agg.tmp57 = alloca %"tangle_group"1650 %agg.tmp58 = alloca %"nd_item", align 11651 %agg.tmp61 = alloca %"range"1652 %IncScanResult = alloca i32, align 41653 %agg.tmp64 = alloca %"tangle_group"1654 %agg.tmp65 = alloca %"nd_item", align 11655 %agg.tmp69 = alloca %"range"1656 %ShiftLeftResult = alloca i32, align 41657 %agg.tmp72 = alloca %"tangle_group"1658 %agg.tmp79 = alloca %"range"1659 %ShiftRightResult = alloca i32, align 41660 %agg.tmp82 = alloca %"tangle_group"1661 %agg.tmp88 = alloca %"range"1662 %SelectResult = alloca i32, align 41663 %agg.tmp91 = alloca %"tangle_group"1664 %agg.tmp92 = alloca %"range"1665 %ref.tmp = alloca %"range"1666 %ref.tmp93 = alloca %"range"1667 %ref.tmp94 = alloca i32, align 41668 %agg.tmp100 = alloca %"range"1669 %PermuteXorResult = alloca i32, align 41670 %agg.tmp103 = alloca %"tangle_group"1671 %agg.tmp106 = alloca %"range"1672 %TangleSize.addr.ascast = addrspacecast ptr %TangleSize.addr to ptr addrspace(4)1673 %agg.tmp.ascast = addrspacecast ptr %agg.tmp to ptr addrspace(4)1674 %agg.tmp5.ascast = addrspacecast ptr %agg.tmp5 to ptr addrspace(4)1675 %agg.tmp8.ascast = addrspacecast ptr %agg.tmp8 to ptr addrspace(4)1676 %agg.tmp15.ascast = addrspacecast ptr %agg.tmp15 to ptr addrspace(4)1677 %agg.tmp24.ascast = addrspacecast ptr %agg.tmp24 to ptr addrspace(4)1678 %agg.tmp35.ascast = addrspacecast ptr %agg.tmp35 to ptr addrspace(4)1679 %agg.tmp46.ascast = addrspacecast ptr %agg.tmp46 to ptr addrspace(4)1680 %agg.tmp54.ascast = addrspacecast ptr %agg.tmp54 to ptr addrspace(4)1681 %agg.tmp61.ascast = addrspacecast ptr %agg.tmp61 to ptr addrspace(4)1682 %agg.tmp69.ascast = addrspacecast ptr %agg.tmp69 to ptr addrspace(4)1683 %agg.tmp79.ascast = addrspacecast ptr %agg.tmp79 to ptr addrspace(4)1684 %agg.tmp88.ascast = addrspacecast ptr %agg.tmp88 to ptr addrspace(4)1685 %agg.tmp92.ascast = addrspacecast ptr %agg.tmp92 to ptr addrspace(4)1686 %ref.tmp.ascast = addrspacecast ptr %ref.tmp to ptr addrspace(4)1687 %ref.tmp93.ascast = addrspacecast ptr %ref.tmp93 to ptr addrspace(4)1688 %ref.tmp94.ascast = addrspacecast ptr %ref.tmp94 to ptr addrspace(4)1689 %agg.tmp100.ascast = addrspacecast ptr %agg.tmp100 to ptr addrspace(4)1690 %agg.tmp106.ascast = addrspacecast ptr %agg.tmp106 to ptr addrspace(4)1691 store ptr addrspace(4) %this, ptr %this.addr1692 store i64 %WI, ptr %WI.addr1693 %Tangle.ascast = addrspacecast ptr %Tangle to ptr addrspace(4)1694 store i64 %TangleLeader, ptr %TangleLeader.addr1695 store i64 %TangleSize, ptr %TangleSize.addr1696 %IsMember.ascast = addrspacecast ptr %IsMember to ptr addrspace(4)1697 %this1 = load ptr addrspace(4), ptr %this.addr1698 %TmpAcc1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)1699 %0 = load i64, ptr %WI.addr1700 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp.ascast, i64 %0) 1701 %call = call spir_func ptr addrspace(4) @Foo70(ptr addrspace(4) %TmpAcc1, ptr byval(%"range") %agg.tmp) 1702 store i64 1, ptr addrspace(4) %call1703 call spir_func void @Foo75(ptr byval(%"tangle_group") %agg.tmp2, i32 1) 1704 store i64 0, ptr %Visible1705 store i64 0, ptr %Other1706 br label %for.cond1707 1708for.cond: ; preds = %if.end, %entry1709 %1 = load i64, ptr %Other1710 %cmp = icmp ult i64 %1, 321711 br i1 %cmp, label %for.body, label %for.cond.cleanup1712 1713for.cond.cleanup: ; preds = %for.cond1714 %2 = load i64, ptr %Visible1715 %3 = load i64, ptr %TangleSize.addr1716 %cmp7 = icmp eq i64 %2, %31717 %BarrierAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 11718 %4 = load i64, ptr %WI.addr1719 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp8.ascast, i64 %4) 1720 %call9 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %BarrierAcc, ptr byval(%"range") %agg.tmp8) 1721 %storedv = zext i1 %cmp7 to i81722 store i8 %storedv, ptr addrspace(4) %call9, align 11723 %5 = getelementptr inbounds i8, ptr addrspace(4) %this1, i64 641724 %call10 = call spir_func i32 @Foo76(ptr addrspace(4) align 1 %5) 1725 store i32 %call10, ptr %OriginalLID, align 41726 %call11 = call spir_func i32 @Foo90(ptr addrspace(4) %Tangle.ascast) 1727 store i32 %call11, ptr %LID, align 41728 %6 = load i32, ptr %OriginalLID, align 41729 %call13 = call spir_func i32 @Foo91(ptr byval(%"tangle_group") %agg.tmp12, i32 %6, i32 0) 1730 store i32 %call13, ptr %BroadcastResult, align 41731 %7 = load i32, ptr %BroadcastResult, align 41732 %conv = zext i32 %7 to i641733 %8 = load i64, ptr %TangleLeader.addr1734 %cmp14 = icmp eq i64 %conv, %81735 %BroadcastAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 31736 %9 = load i64, ptr %WI.addr1737 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp15.ascast, i64 %9) 1738 %call16 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %BroadcastAcc, ptr byval(%"range") %agg.tmp15) 1739 %storedv17 = zext i1 %cmp14 to i81740 store i8 %storedv17, ptr addrspace(4) %call16, align 11741 %10 = load i32, ptr %LID, align 41742 %cmp19 = icmp eq i32 %10, 01743 %call20 = call spir_func zeroext i1 @Foo92(ptr byval(%"tangle_group") %agg.tmp18, i1 zeroext %cmp19) 1744 %storedv21 = zext i1 %call20 to i81745 store i8 %storedv21, ptr %AnyResult, align 11746 %11 = load i8, ptr %AnyResult, align 1 1747 %loadedv = trunc i8 %11 to i11748 %conv22 = zext i1 %loadedv to i321749 %cmp23 = icmp eq i32 %conv22, 11750 %AnyAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 41751 %12 = load i64, ptr %WI.addr1752 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp24.ascast, i64 %12) 1753 %call25 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %AnyAcc, ptr byval(%"range") %agg.tmp24) 1754 %storedv26 = zext i1 %cmp23 to i81755 store i8 %storedv26, ptr addrspace(4) %call25, align 11756 %13 = load i32, ptr %LID, align 41757 %conv28 = zext i32 %13 to i641758 %14 = load i64, ptr %TangleSize.addr1759 %cmp29 = icmp ult i64 %conv28, %141760 %call30 = call spir_func zeroext i1 @Foo67(ptr byval(%"tangle_group") %agg.tmp27, i1 zeroext %cmp29) 1761 %storedv31 = zext i1 %call30 to i81762 store i8 %storedv31, ptr %AllResult, align 11763 %15 = load i8, ptr %AllResult, align 1 1764 %loadedv32 = trunc i8 %15 to i11765 %conv33 = zext i1 %loadedv32 to i321766 %cmp34 = icmp eq i32 %conv33, 11767 %AllAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 51768 %16 = load i64, ptr %WI.addr1769 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp35.ascast, i64 %16) 1770 %call36 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %AllAcc, ptr byval(%"range") %agg.tmp35) 1771 %storedv37 = zext i1 %cmp34 to i81772 store i8 %storedv37, ptr addrspace(4) %call36, align 11773 %17 = load i32, ptr %LID, align 41774 %conv39 = zext i32 %17 to i641775 %18 = load i64, ptr %TangleSize.addr1776 %cmp40 = icmp uge i64 %conv39, %181777 %call41 = call spir_func zeroext i1 @Foo65(ptr byval(%"tangle_group") %agg.tmp38, i1 zeroext %cmp40) 1778 %storedv42 = zext i1 %call41 to i81779 store i8 %storedv42, ptr %NoneResult, align 11780 %19 = load i8, ptr %NoneResult, align 1 1781 %loadedv43 = trunc i8 %19 to i11782 %conv44 = zext i1 %loadedv43 to i321783 %cmp45 = icmp eq i32 %conv44, 11784 %NoneAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 61785 %20 = load i64, ptr %WI.addr1786 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp46.ascast, i64 %20) 1787 %call47 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %NoneAcc, ptr byval(%"range") %agg.tmp46) 1788 %storedv48 = zext i1 %cmp45 to i81789 store i8 %storedv48, ptr addrspace(4) %call47, align 11790 %call51 = call spir_func i32 @Foo64(ptr byval(%"tangle_group") %agg.tmp49, i32 1, ptr byval(%"nd_item") align 1 %agg.tmp50) 1791 store i32 %call51, ptr %ReduceResult, align 41792 %21 = load i32, ptr %ReduceResult, align 41793 %conv52 = zext i32 %21 to i641794 %22 = load i64, ptr %TangleSize.addr1795 %cmp53 = icmp eq i64 %conv52, %221796 %ReduceAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 71797 %23 = load i64, ptr %WI.addr1798 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp54.ascast, i64 %23) 1799 %call55 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %ReduceAcc, ptr byval(%"range") %agg.tmp54) 1800 %storedv56 = zext i1 %cmp53 to i81801 store i8 %storedv56, ptr addrspace(4) %call55, align 11802 %call59 = call spir_func i32 @Foo63(ptr byval(%"tangle_group") %agg.tmp57, i32 1, ptr byval(%"nd_item") align 1 %agg.tmp58) 1803 store i32 %call59, ptr %ExScanResult, align 41804 %24 = load i32, ptr %ExScanResult, align 41805 %25 = load i32, ptr %LID, align 41806 %cmp60 = icmp eq i32 %24, %251807 %ExScanAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 81808 %26 = load i64, ptr %WI.addr1809 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp61.ascast, i64 %26) 1810 %call62 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %ExScanAcc, ptr byval(%"range") %agg.tmp61) 1811 %storedv63 = zext i1 %cmp60 to i81812 store i8 %storedv63, ptr addrspace(4) %call62, align 11813 %call66 = call spir_func i32 @Foo62(ptr byval(%"tangle_group") %agg.tmp64, i32 1, ptr byval(%"nd_item") align 1 %agg.tmp65) 1814 store i32 %call66, ptr %IncScanResult, align 41815 %27 = load i32, ptr %IncScanResult, align 41816 %28 = load i32, ptr %LID, align 41817 %add67 = add i32 %28, 11818 %cmp68 = icmp eq i32 %27, %add671819 %IncScanAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 91820 %29 = load i64, ptr %WI.addr1821 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp69.ascast, i64 %29) 1822 %call70 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %IncScanAcc, ptr byval(%"range") %agg.tmp69) 1823 %storedv71 = zext i1 %cmp68 to i81824 store i8 %storedv71, ptr addrspace(4) %call70, align 11825 %30 = load i32, ptr %LID, align 41826 %call73 = call spir_func i32 @Foo73(ptr byval(%"tangle_group") %agg.tmp72, i32 %30, i32 2) 1827 store i32 %call73, ptr %ShiftLeftResult, align 41828 %31 = load i32, ptr %LID, align 41829 %add74 = add i32 %31, 21830 %conv75 = zext i32 %add74 to i641831 %32 = load i64, ptr %TangleSize.addr1832 %cmp76 = icmp uge i64 %conv75, %321833 br i1 %cmp76, label %lor.end, label %lor.rhs1834 1835lor.rhs: ; preds = %for.cond.cleanup1836 %33 = load i32, ptr %ShiftLeftResult, align 41837 %34 = load i32, ptr %LID, align 41838 %add77 = add i32 %34, 21839 %cmp78 = icmp eq i32 %33, %add771840 br label %lor.end1841 1842lor.end: ; preds = %lor.rhs, %for.cond.cleanup1843 %35 = phi i1 [ true, %for.cond.cleanup ], [ %cmp78, %lor.rhs ]1844 %ShiftLeftAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 101845 %36 = load i64, ptr %WI.addr1846 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp79.ascast, i64 %36) 1847 %call80 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %ShiftLeftAcc, ptr byval(%"range") %agg.tmp79) 1848 %storedv81 = zext i1 %35 to i81849 store i8 %storedv81, ptr addrspace(4) %call80, align 11850 %37 = load i32, ptr %LID, align 41851 %call83 = call spir_func i32 @Foo53(ptr byval(%"tangle_group") %agg.tmp82, i32 %37, i32 2) 1852 store i32 %call83, ptr %ShiftRightResult, align 41853 %38 = load i32, ptr %LID, align 41854 %cmp84 = icmp ult i32 %38, 21855 br i1 %cmp84, label %lor.end87, label %lor.rhs851856 1857lor.rhs85: ; preds = %lor.end1858 %39 = load i32, ptr %ShiftRightResult, align 41859 %40 = load i32, ptr %LID, align 41860 %sub = sub i32 %40, 21861 %cmp86 = icmp eq i32 %39, %sub1862 br label %lor.end871863 1864lor.end87: ; preds = %lor.rhs85, %lor.end1865 %41 = phi i1 [ true, %lor.end ], [ %cmp86, %lor.rhs85 ]1866 %ShiftRightAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 111867 %42 = load i64, ptr %WI.addr1868 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp88.ascast, i64 %42) 1869 %call89 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %ShiftRightAcc, ptr byval(%"range") %agg.tmp88) 1870 %storedv90 = zext i1 %41 to i81871 store i8 %storedv90, ptr addrspace(4) %call89, align 11872 %43 = load i32, ptr %LID, align 41873 call spir_func void @Foo51(ptr addrspace(4) dead_on_unwind writable sret(%"range") %ref.tmp93.ascast, ptr addrspace(4) %Tangle.ascast) 1874 store i32 2, ptr %ref.tmp94, align 41875 call spir_func void @Foo55(ptr addrspace(4) dead_on_unwind writable sret(%"range") %ref.tmp.ascast, ptr addrspace(4) %ref.tmp93.ascast, ptr addrspace(4) align 4 %ref.tmp94.ascast) 1876 call spir_func void @Foo56(ptr addrspace(4) dead_on_unwind writable sret(%"range") %agg.tmp92.ascast, ptr addrspace(4) %ref.tmp.ascast, ptr addrspace(4) %TangleSize.addr.ascast) 1877 %call95 = call spir_func i32 @Foo57(ptr byval(%"tangle_group") %agg.tmp91, i32 %43, ptr byval(%"range") %agg.tmp92) 1878 store i32 %call95, ptr %SelectResult, align 41879 %44 = load i32, ptr %SelectResult, align 41880 %conv96 = zext i32 %44 to i641881 %45 = load i32, ptr %LID, align 41882 %add97 = add i32 %45, 21883 %conv98 = zext i32 %add97 to i641884 %46 = load i64, ptr %TangleSize.addr1885 %rem = urem i64 %conv98, %461886 %cmp99 = icmp eq i64 %conv96, %rem1887 %SelectAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 121888 %47 = load i64, ptr %WI.addr1889 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp100.ascast, i64 %47) 1890 %call101 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %SelectAcc, ptr byval(%"range") %agg.tmp100) 1891 %storedv102 = zext i1 %cmp99 to i81892 store i8 %storedv102, ptr addrspace(4) %call101, align 11893 %48 = load i32, ptr %LID, align 41894 %call104 = call spir_func i32 @Foo58(ptr byval(%"tangle_group") %agg.tmp103, i32 %48, i32 2) 1895 store i32 %call104, ptr %PermuteXorResult, align 41896 %49 = load i32, ptr %PermuteXorResult, align 41897 %50 = load i32, ptr %LID, align 41898 %xor = xor i32 %50, 21899 %cmp105 = icmp eq i32 %49, %xor1900 %PermuteXorAcc = getelementptr inbounds nuw %class.anon.8, ptr addrspace(4) %this1, i32 0, i32 131901 %51 = load i64, ptr %WI.addr1902 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp106.ascast, i64 %51) 1903 %call107 = call spir_func align 1 ptr addrspace(4) @Foo54(ptr addrspace(4) %PermuteXorAcc, ptr byval(%"range") %agg.tmp106) 1904 %storedv108 = zext i1 %cmp105 to i81905 store i8 %storedv108, ptr addrspace(4) %call107, align 11906 ret void1907 1908for.body: ; preds = %for.cond1909 %52 = load i64, ptr %Other1910 %call3 = call spir_func zeroext i1 @Bar14(ptr addrspace(4) align 1 %IsMember.ascast, i64 %52) 1911 br i1 %call3, label %if.then, label %if.end1912 1913if.then: ; preds = %for.body1914 %TmpAcc42 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)1915 %53 = load i64, ptr %Other1916 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp5.ascast, i64 %53) 1917 %call6 = call spir_func ptr addrspace(4) @Foo70(ptr addrspace(4) %TmpAcc42, ptr byval(%"range") %agg.tmp5) 1918 %54 = load i64, ptr addrspace(4) %call61919 %55 = load i64, ptr %Visible1920 %add = add i64 %55, %541921 store i64 %add, ptr %Visible1922 br label %if.end1923 1924if.end: ; preds = %if.then, %for.body1925 %56 = load i64, ptr %Other1926 %inc = add i64 %56, 11927 store i64 %inc, ptr %Other1928 br label %for.cond1929}1930 1931 1932define internal spir_func zeroext i1 @Bar14(ptr addrspace(4) align 1 %this, i64 %Other) {1933entry:1934 %retval = alloca i1, align 11935 %this.addr = alloca ptr addrspace(4)1936 %Other.addr = alloca i641937 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)1938 store ptr addrspace(4) %this, ptr %this.addr1939 store i64 %Other, ptr %Other.addr1940 %this1 = load ptr addrspace(4), ptr %this.addr1941 %0 = load i64, ptr %Other.addr1942 %cmp = icmp uge i64 %0, 241943 br i1 %cmp, label %land.rhs, label %land.end1944 1945land.rhs: ; preds = %entry1946 %1 = load i64, ptr %Other.addr1947 %cmp2 = icmp ult i64 %1, 321948 br label %land.end1949 1950land.end: ; preds = %land.rhs, %entry1951 %2 = phi i1 [ false, %entry ], [ %cmp2, %land.rhs ]1952 ret i1 %21953}1954 1955 1956define internal spir_func zeroext i1 @Foo74(ptr addrspace(4) align 1 %this, i64 %Other) {1957entry:1958 %retval = alloca i1, align 11959 %this.addr = alloca ptr addrspace(4)1960 %Other.addr = alloca i641961 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)1962 store ptr addrspace(4) %this, ptr %this.addr1963 store i64 %Other, ptr %Other.addr1964 %this1 = load ptr addrspace(4), ptr %this.addr1965 %0 = load i64, ptr %Other.addr1966 %cmp = icmp uge i64 %0, 41967 br i1 %cmp, label %land.rhs, label %land.end1968 1969land.rhs: ; preds = %entry1970 %1 = load i64, ptr %Other.addr1971 %cmp2 = icmp ult i64 %1, 241972 br label %land.end1973 1974land.end: ; preds = %land.rhs, %entry1975 %2 = phi i1 [ false, %entry ], [ %cmp2, %land.rhs ]1976 ret i1 %21977}1978 1979 1980define internal spir_func i32 @Bar13(ptr byval(%"tangle_group") %g, i32 %x, ptr byval(%"range") %mask) {1981entry:1982 %retval = alloca i32, align 41983 %x.addr = alloca i32, align 41984 %TargetLocalId = alloca %"range"1985 %ref.tmp = alloca %"range"1986 %TargetId = alloca i32, align 41987 %agg.tmp = alloca %"tangle_group"1988 %agg.tmp1 = alloca %"range"1989 %cleanup.dest.slot = alloca i32, align 41990 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)1991 %x.addr.ascast = addrspacecast ptr %x.addr to ptr addrspace(4)1992 %TargetLocalId.ascast = addrspacecast ptr %TargetLocalId to ptr addrspace(4)1993 %ref.tmp.ascast = addrspacecast ptr %ref.tmp to ptr addrspace(4)1994 %g.ascast = addrspacecast ptr %g to ptr addrspace(4)1995 store i32 %x, ptr %x.addr, align 41996 %mask.ascast = addrspacecast ptr %mask to ptr addrspace(4)1997 %0 = addrspacecast ptr addrspace(1) @_ZSt6ignore to ptr addrspace(4)1998 %call = call spir_func align 1 ptr addrspace(4) @Bar15(ptr addrspace(4) align 1 %0, ptr addrspace(4) %g.ascast) 1999 call spir_func void @Foo51(ptr addrspace(4) dead_on_unwind writable sret(%"range") %ref.tmp.ascast, ptr addrspace(4) %g.ascast) 2000 call spir_func void @Bar16(ptr addrspace(4) dead_on_unwind writable sret(%"range") %TargetLocalId.ascast, ptr addrspace(4) %ref.tmp.ascast, ptr addrspace(4) %mask.ascast) 2001 %call2 = call spir_func i32 @Foo48(ptr byval(%"tangle_group") %agg.tmp, ptr byval(%"range") %agg.tmp1) 2002 store i32 %call2, ptr %TargetId, align 42003 %call3 = call spir_func i32 @Foo49(ptr addrspace(4) align 4 %x.addr.ascast) 2004 %1 = load i32, ptr %TargetId, align 42005 %call4 = call spir_func i32 @Foo50(i32 3, i32 %call3, i32 %1) 2006 ret i32 %call42007}2008 2009 2010define internal spir_func align 1 ptr addrspace(4) @Bar15(ptr addrspace(4) align 1 %this, ptr addrspace(4) %0) {2011entry:2012 %retval = alloca ptr addrspace(4)2013 %this.addr = alloca ptr addrspace(4)2014 %.addr = alloca ptr addrspace(4)2015 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2016 store ptr addrspace(4) %this, ptr %this.addr2017 store ptr addrspace(4) %0, ptr %.addr2018 %this1 = load ptr addrspace(4), ptr %this.addr2019 ret ptr addrspace(4) %this12020}2021 2022 2023define internal spir_func void @Bar16(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result, ptr addrspace(4) %lhs, ptr addrspace(4) %rhs) {2024entry:2025 %lhs.addr = alloca ptr addrspace(4)2026 %rhs.addr = alloca ptr addrspace(4)2027 %i = alloca i32, align 42028 %cleanup.dest.slot = alloca i32, align 42029 store ptr addrspace(4) %lhs, ptr %lhs.addr2030 store ptr addrspace(4) %rhs, ptr %rhs.addr2031 call spir_func void @Foo11(ptr addrspace(4) %agg.result) 2032 store i32 0, ptr %i, align 42033 br label %for.cond2034 2035for.cond: ; preds = %for.body, %entry2036 %0 = load i32, ptr %i, align 42037 %cmp = icmp slt i32 %0, 12038 br i1 %cmp, label %for.body, label %for.cond.cleanup2039 2040for.cond.cleanup: ; preds = %for.cond2041 ret void2042 2043for.body: ; preds = %for.cond2044 %1 = load ptr addrspace(4), ptr %lhs.addr2045 %common_array2 = bitcast ptr addrspace(4) %1 to ptr addrspace(4)2046 %2 = load i32, ptr %i, align 42047 %idxprom = sext i32 %2 to i642048 %arrayidx = getelementptr inbounds [1 x i64], ptr addrspace(4) %common_array2, i64 0, i64 %idxprom2049 %3 = load i64, ptr addrspace(4) %arrayidx2050 %4 = load ptr addrspace(4), ptr %rhs.addr2051 %common_array13 = bitcast ptr addrspace(4) %4 to ptr addrspace(4)2052 %5 = load i32, ptr %i, align 42053 %idxprom2 = sext i32 %5 to i642054 %arrayidx3 = getelementptr inbounds [1 x i64], ptr addrspace(4) %common_array13, i64 0, i64 %idxprom22055 %6 = load i64, ptr addrspace(4) %arrayidx32056 %xor = xor i64 %3, %62057 %common_array44 = bitcast ptr addrspace(4) %agg.result to ptr addrspace(4)2058 %7 = load i32, ptr %i, align 42059 %idxprom5 = sext i32 %7 to i642060 %arrayidx6 = getelementptr inbounds [1 x i64], ptr addrspace(4) %common_array44, i64 0, i64 %idxprom52061 store i64 %xor, ptr addrspace(4) %arrayidx62062 %8 = load i32, ptr %i, align 42063 %inc = add nsw i32 %8, 12064 store i32 %inc, ptr %i, align 42065 br label %for.cond2066}2067 2068 2069define internal spir_func i32 @Foo48(ptr byval(%"tangle_group") %g, ptr byval(%"range") %local_id) {2070entry:2071 %retval.i = alloca i642072 %this.addr.i = alloca ptr addrspace(4)2073 %Result.i = alloca i642074 %retval = alloca i32, align 42075 %agg.tmp = alloca %"tangle_group"2076 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2077 %local_id.ascast = addrspacecast ptr %local_id to ptr addrspace(4)2078 %retval.ascast.i = addrspacecast ptr %retval.i to ptr addrspace(4)2079 store ptr addrspace(4) %local_id.ascast, ptr %this.addr.i2080 %this1.i = load ptr addrspace(4), ptr %this.addr.i2081 %0 = load i64, ptr addrspace(4) %this1.i2082 store i64 %0, ptr %Result.i2083 %1 = load i64, ptr %Result.i2084 %conv = trunc i64 %1 to i322085 %call1 = call spir_func i32 @Bar17(ptr byval(%"tangle_group") %agg.tmp, i32 %conv) 2086 ret i32 %call12087}2088 2089 2090define internal spir_func i32 @Foo49(ptr addrspace(4) align 4 %x) {2091entry:2092 %retval = alloca i32, align 42093 %x.addr = alloca ptr addrspace(4)2094 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2095 store ptr addrspace(4) %x, ptr %x.addr2096 %0 = load ptr addrspace(4), ptr %x.addr2097 %1 = load i32, ptr addrspace(4) %0, align 42098 ret i32 %12099}2100 2101declare dso_local spir_func i32 @Foo50(i32, i32, i32) 2102 2103 2104define internal spir_func i32 @Bar17(ptr byval(%"tangle_group") %Group, i32 %Id) {2105entry:2106 %retval = alloca i32, align 42107 %Id.addr = alloca i32, align 42108 %MemberMask = alloca %"vec.16", align 162109 %agg.tmp = alloca %"ss_sub_group_mask"2110 %agg.tmp1 = alloca %"tangle_group"2111 %Count = alloca i32, align 42112 %i = alloca i32, align 42113 %cleanup.dest.slot = alloca i32, align 42114 %b = alloca i32, align 42115 %MemberMask.ascast = addrspacecast ptr %MemberMask to ptr addrspace(4)2116 %agg.tmp.ascast = addrspacecast ptr %agg.tmp to ptr addrspace(4)2117 store i32 %Id, ptr %Id.addr, align 42118 call spir_func void @Bar18(ptr addrspace(4) dead_on_unwind writable sret(%"ss_sub_group_mask") %agg.tmp.ascast, ptr byval(%"tangle_group") %agg.tmp1) 2119 call spir_func void @Bar19(ptr addrspace(4) dead_on_unwind writable sret(%"vec.16") align 16 %MemberMask.ascast, ptr byval(%"ss_sub_group_mask") %agg.tmp) 2120 store i32 0, ptr %Count, align 42121 store i32 0, ptr %i, align 42122 br label %for.cond2123 2124for.cond: ; preds = %for.end, %entry2125 %0 = load i32, ptr %i, align 42126 %cmp = icmp slt i32 %0, 42127 br i1 %cmp, label %for.body, label %for.cond.cleanup2128 2129for.cond.cleanup: ; preds = %for.cond2130 store i32 2, ptr %cleanup.dest.slot, align 42131 br label %cleanup122132 2133for.body: ; preds = %for.cond2134 store i32 0, ptr %b, align 42135 br label %for.cond22136 2137for.cond2: ; preds = %if.end8, %for.body2138 %1 = load i32, ptr %b, align 42139 %cmp3 = icmp slt i32 %1, 322140 br i1 %cmp3, label %for.body5, label %for.cond.cleanup42141 2142for.cond.cleanup4: ; preds = %for.cond22143 store i32 5, ptr %cleanup.dest.slot, align 42144 br label %cleanup2145 2146for.body5: ; preds = %for.cond22147 %2 = load i32, ptr %i, align 42148 %call = call spir_func align 4 ptr addrspace(4) @Bar20(ptr addrspace(4) align 16 %MemberMask.ascast, i32 %2) 2149 %3 = load i32, ptr addrspace(4) %call, align 42150 %4 = load i32, ptr %b, align 42151 %shl = shl i32 1, %42152 %and = and i32 %3, %shl2153 %tobool = icmp ne i32 %and, 02154 br i1 %tobool, label %if.then, label %if.end82155 2156if.then: ; preds = %for.body52157 %5 = load i32, ptr %Count, align 42158 %6 = load i32, ptr %Id.addr, align 42159 %cmp6 = icmp eq i32 %5, %62160 br i1 %cmp6, label %if.then7, label %if.end2161 2162if.end: ; preds = %if.then2163 %7 = load i32, ptr %Count, align 42164 %inc = add i32 %7, 12165 store i32 %inc, ptr %Count, align 42166 br label %if.end82167 2168if.end8: ; preds = %if.end, %for.body52169 %8 = load i32, ptr %b, align 42170 %inc9 = add nsw i32 %8, 12171 store i32 %inc9, ptr %b, align 42172 br label %for.cond22173 2174if.then7: ; preds = %if.then2175 %9 = load i32, ptr %i, align 42176 %mul = mul nsw i32 %9, 322177 %10 = load i32, ptr %b, align 42178 %add = add nsw i32 %mul, %102179 store i32 %add, ptr %retval, align 42180 store i32 1, ptr %cleanup.dest.slot, align 42181 br label %cleanup2182 2183cleanup: ; preds = %if.then7, %for.cond.cleanup42184 %cleanup.dest = load i32, ptr %cleanup.dest.slot, align 42185 %cond = icmp eq i32 %cleanup.dest, 52186 br i1 %cond, label %for.end, label %cleanup122187 2188for.end: ; preds = %cleanup2189 %11 = load i32, ptr %i, align 42190 %inc11 = add nsw i32 %11, 12191 store i32 %inc11, ptr %i, align 42192 br label %for.cond2193 2194cleanup12: ; preds = %cleanup, %for.cond.cleanup2195 %cleanup.dest13 = load i32, ptr %cleanup.dest.slot, align 42196 %cond1 = icmp eq i32 %cleanup.dest13, 22197 br i1 %cond1, label %for.end14, label %cleanup152198 2199for.end14: ; preds = %cleanup122200 %12 = load i32, ptr %Count, align 42201 store i32 %12, ptr %retval, align 42202 store i32 1, ptr %cleanup.dest.slot, align 42203 br label %cleanup152204 2205cleanup15: ; preds = %cleanup12, %for.end142206 %13 = load i32, ptr %retval, align 42207 ret i32 %132208}2209 2210 2211define internal spir_func void @Bar18(ptr addrspace(4) dead_on_unwind noalias writable sret(%"ss_sub_group_mask") %agg.result, ptr byval(%"tangle_group") %Group) {2212entry:2213 %Mask1 = bitcast ptr %Group to ptr2214 ret void2215}2216 2217 2218define internal spir_func void @Bar19(ptr addrspace(4) dead_on_unwind noalias writable sret(%"vec.16") align 16 %agg.result, ptr byval(%"ss_sub_group_mask") %Mask) {2219entry:2220 %TmpMArray = alloca %"struct.std::array.20", align 42221 %agg.tmp = alloca %"range"2222 %i = alloca i32, align 42223 %cleanup.dest.slot = alloca i32, align 42224 %cleanup.dest.slot2 = alloca i32, align 42225 %TmpMArray.ascast = addrspacecast ptr %TmpMArray to ptr addrspace(4)2226 %agg.tmp.ascast = addrspacecast ptr %agg.tmp to ptr addrspace(4)2227 %Mask.ascast = addrspacecast ptr %Mask to ptr addrspace(4)2228 call spir_func void @Bar50(ptr addrspace(4) align 4 %TmpMArray.ascast) 2229 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp.ascast, i64 0) 2230 call spir_func void @Bar51(ptr addrspace(4) %Mask.ascast, ptr addrspace(4) align 4 %TmpMArray.ascast, ptr byval(%"range") %agg.tmp) 2231 store i32 0, ptr %i, align 42232 br label %for.cond2233 2234for.cond: ; preds = %for.inc, %entry2235 %0 = load i32, ptr %i, align 42236 %cmp = icmp slt i32 %0, 42237 br i1 %cmp, label %for.body, label %for.cond.cleanup2238 2239for.cond.cleanup: ; preds = %for.cond2240 br label %for.end2241 2242for.end: ; preds = %for.cond.cleanup2243 ret void2244 2245for.body: ; preds = %for.cond2246 %1 = load i32, ptr %i, align 42247 %conv = sext i32 %1 to i642248 %call = call spir_func align 4 ptr addrspace(4) @Bar57(ptr addrspace(4) align 4 %TmpMArray.ascast, i64 %conv) 2249 %2 = load i32, ptr addrspace(4) %call, align 42250 %3 = load i32, ptr %i, align 42251 %call1 = call spir_func align 4 ptr addrspace(4) @Bar20(ptr addrspace(4) align 16 %agg.result, i32 %3) 2252 store i32 %2, ptr addrspace(4) %call1, align 42253 br label %for.inc2254 2255for.inc: ; preds = %for.body2256 %4 = load i32, ptr %i, align 42257 %inc = add nsw i32 %4, 12258 store i32 %inc, ptr %i, align 42259 br label %for.cond2260}2261 2262 2263define internal spir_func align 4 ptr addrspace(4) @Bar20(ptr addrspace(4) align 16 %this, i32 %i) {2264entry:2265 %retval = alloca ptr addrspace(4)2266 %this.addr = alloca ptr addrspace(4)2267 %i.addr = alloca i32, align 42268 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2269 store ptr addrspace(4) %this, ptr %this.addr2270 store i32 %i, ptr %i.addr, align 42271 %this1 = load ptr addrspace(4), ptr %this.addr2272 %m_Data1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)2273 %0 = load i32, ptr %i.addr, align 42274 %conv = sext i32 %0 to i642275 %call = call spir_func align 4 ptr addrspace(4) @_ZNSt5arrayIjLm4EEixEm(ptr addrspace(4) align 4 %m_Data1, i64 %conv) 2276 ret ptr addrspace(4) %call2277}2278 2279 2280define internal spir_func align 4 ptr addrspace(4) @_ZNSt5arrayIjLm4EEixEm(ptr addrspace(4) align 4 %this, i64 %__n) {2281entry:2282 %retval = alloca ptr addrspace(4)2283 %this.addr = alloca ptr addrspace(4)2284 %__n.addr = alloca i642285 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2286 store ptr addrspace(4) %this, ptr %this.addr2287 store i64 %__n, ptr %__n.addr2288 %this1 = load ptr addrspace(4), ptr %this.addr2289 %_M_elems1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)2290 %0 = load i64, ptr %__n.addr2291 %call = call spir_func align 4 ptr addrspace(4) @_ZNSt14__array_traitsIjLm4EE6_S_refERA4_Kjm(ptr addrspace(4) align 4 %_M_elems1, i64 %0) 2292 ret ptr addrspace(4) %call2293}2294 2295 2296define internal spir_func align 4 ptr addrspace(4) @_ZNSt14__array_traitsIjLm4EE6_S_refERA4_Kjm(ptr addrspace(4) align 4 %__t, i64 %__n) {2297entry:2298 %retval = alloca ptr addrspace(4)2299 %__t.addr = alloca ptr addrspace(4)2300 %__n.addr = alloca i642301 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2302 store ptr addrspace(4) %__t, ptr %__t.addr2303 store i64 %__n, ptr %__n.addr2304 %0 = load ptr addrspace(4), ptr %__t.addr2305 %1 = load i64, ptr %__n.addr2306 %arrayidx = getelementptr inbounds nuw [4 x i32], ptr addrspace(4) %0, i64 0, i64 %12307 ret ptr addrspace(4) %arrayidx2308}2309 2310 2311define internal spir_func void @Bar50(ptr addrspace(4) align 4 %this) {2312entry:2313 %this.addr = alloca ptr addrspace(4)2314 store ptr addrspace(4) %this, ptr %this.addr2315 %this1 = load ptr addrspace(4), ptr %this.addr2316 %0 = inttoptr i64 16 to ptr addrspace(4)2317 br label %arrayinit.body2318 2319arrayinit.body: ; preds = %arrayinit.body, %entry2320 %lsr.iv = phi i64 [ %lsr.iv.next, %arrayinit.body ], [ 0, %entry ]2321 %scevgep = getelementptr i8, ptr addrspace(4) %this1, i64 %lsr.iv2322 store i32 0, ptr addrspace(4) %scevgep, align 42323 %lsr.iv.next = add nuw nsw i64 %lsr.iv, 42324 %lsr.iv.next1 = inttoptr i64 %lsr.iv.next to ptr addrspace(4)2325 %arrayinit.done = icmp eq ptr addrspace(4) %lsr.iv.next1, %02326 br i1 %arrayinit.done, label %arrayinit.end2, label %arrayinit.body2327 2328arrayinit.end2: ; preds = %arrayinit.body2329 ret void2330}2331 2332 2333define internal spir_func void @Bar51(ptr addrspace(4) %this, ptr addrspace(4) align 4 %bits, ptr byval(%"range") %pos) {2334entry:2335 %this.addr = alloca ptr addrspace(4)2336 %bits.addr = alloca ptr addrspace(4)2337 %cur_pos = alloca i642338 %__range4 = alloca ptr addrspace(4)2339 %__begin0 = alloca ptr addrspace(4)2340 %__end0 = alloca ptr addrspace(4)2341 %cleanup.dest.slot = alloca i32, align 42342 %elem = alloca ptr addrspace(4)2343 %agg.tmp = alloca %"range"2344 %agg.tmp.ascast = addrspacecast ptr %agg.tmp to ptr addrspace(4)2345 store ptr addrspace(4) %this, ptr %this.addr2346 store ptr addrspace(4) %bits, ptr %bits.addr2347 %pos.ascast = addrspacecast ptr %pos to ptr addrspace(4)2348 %this1 = load ptr addrspace(4), ptr %this.addr2349 %call = call spir_func i64 @Bar52(ptr addrspace(4) %pos.ascast, i32 0) 2350 store i64 %call, ptr %cur_pos2351 %0 = load ptr addrspace(4), ptr %bits.addr2352 store ptr addrspace(4) %0, ptr %__range42353 %1 = load ptr addrspace(4), ptr %__range42354 %call2 = call spir_func ptr addrspace(4) @Bar53(ptr addrspace(4) align 4 %1) 2355 store ptr addrspace(4) %call2, ptr %__begin02356 %2 = load ptr addrspace(4), ptr %__range42357 %call3 = call spir_func ptr addrspace(4) @Bar54(ptr addrspace(4) align 4 %2) 2358 store ptr addrspace(4) %call3, ptr %__end02359 br label %for.cond2360 2361for.cond: ; preds = %for.inc, %entry2362 %3 = load ptr addrspace(4), ptr %__begin02363 %4 = load ptr addrspace(4), ptr %__end02364 %cmp = icmp ne ptr addrspace(4) %3, %42365 br i1 %cmp, label %for.body, label %for.cond.cleanup2366 2367for.cond.cleanup: ; preds = %for.cond2368 br label %for.end2369 2370for.end: ; preds = %for.cond.cleanup2371 ret void2372 2373for.body: ; preds = %for.cond2374 %5 = load ptr addrspace(4), ptr %__begin02375 store ptr addrspace(4) %5, ptr %elem2376 %6 = load i64, ptr %cur_pos2377 %call4 = call spir_func i32 @Bar55(ptr addrspace(4) %this1) 2378 %conv = zext i32 %call4 to i642379 %cmp5 = icmp ult i64 %6, %conv2380 br i1 %cmp5, label %if.then, label %if.else2381 2382if.else: ; preds = %for.body2383 %7 = load ptr addrspace(4), ptr %elem2384 store i32 0, ptr addrspace(4) %7, align 42385 br label %if.end2386 2387if.then: ; preds = %for.body2388 %8 = load ptr addrspace(4), ptr %elem2389 %9 = load i64, ptr %cur_pos2390 call spir_func void @Foo46(ptr addrspace(4) %agg.tmp.ascast, i64 %9) 2391 call spir_func void @Bar56(ptr addrspace(4) %this1, ptr addrspace(4) align 4 %8, ptr byval(%"range") %agg.tmp) 2392 %10 = load i64, ptr %cur_pos2393 %add = add i64 %10, 322394 store i64 %add, ptr %cur_pos2395 br label %if.end2396 2397if.end: ; preds = %if.else, %if.then2398 br label %for.inc2399 2400for.inc: ; preds = %if.end2401 %11 = load ptr addrspace(4), ptr %__begin02402 %incdec.ptr = getelementptr inbounds nuw i32, ptr addrspace(4) %11, i32 12403 store ptr addrspace(4) %incdec.ptr, ptr %__begin02404 br label %for.cond2405}2406 2407 2408define internal spir_func align 4 ptr addrspace(4) @Bar57(ptr addrspace(4) align 4 %this, i64 %index) {2409entry:2410 %retval = alloca ptr addrspace(4)2411 %this.addr = alloca ptr addrspace(4)2412 %index.addr = alloca i642413 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2414 store ptr addrspace(4) %this, ptr %this.addr2415 store i64 %index, ptr %index.addr2416 %this1 = load ptr addrspace(4), ptr %this.addr2417 %MData1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)2418 %0 = load i64, ptr %index.addr2419 %arrayidx = getelementptr inbounds nuw [4 x i32], ptr addrspace(4) %MData1, i64 0, i64 %02420 ret ptr addrspace(4) %arrayidx2421}2422 2423 2424define internal spir_func i64 @Bar52(ptr addrspace(4) %this, i32 %dimension) {2425entry:2426 %this.addr.i = alloca ptr addrspace(4)2427 %dimension.addr.i = alloca i32, align 42428 %retval = alloca i642429 %this.addr = alloca ptr addrspace(4)2430 %dimension.addr = alloca i32, align 42431 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2432 store ptr addrspace(4) %this, ptr %this.addr2433 store i32 %dimension, ptr %dimension.addr, align 42434 %this1 = load ptr addrspace(4), ptr %this.addr2435 %0 = load i32, ptr %dimension.addr, align 42436 store ptr addrspace(4) %this1, ptr %this.addr.i2437 store i32 %0, ptr %dimension.addr.i, align 42438 %this1.i = load ptr addrspace(4), ptr %this.addr.i2439 %common_array1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)2440 %1 = load i32, ptr %dimension.addr, align 42441 %idxprom = sext i32 %1 to i642442 %arrayidx = getelementptr inbounds [1 x i64], ptr addrspace(4) %common_array1, i64 0, i64 %idxprom2443 %2 = load i64, ptr addrspace(4) %arrayidx2444 ret i64 %22445}2446 2447 2448define internal spir_func ptr addrspace(4) @Bar53(ptr addrspace(4) align 4 %this) {2449entry:2450 %retval = alloca ptr addrspace(4)2451 %this.addr = alloca ptr addrspace(4)2452 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2453 store ptr addrspace(4) %this, ptr %this.addr2454 2455 2456 %this.addr1 = bitcast ptr %this.addr to ptr2457 %this.addr2 = bitcast ptr %this.addr1 to ptr2458 %this1 = load ptr addrspace(4), ptr %this.addr22459 2460 2461 2462; %this1 = load ptr addrspace(4), ptr %this.addr2463 %MData1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)2464 %arraydecay2 = bitcast ptr addrspace(4) %MData1 to ptr addrspace(4)2465 ret ptr addrspace(4) %arraydecay22466}2467 2468 2469define internal spir_func ptr addrspace(4) @Bar54(ptr addrspace(4) align 4 %this) {2470entry:2471 %retval = alloca ptr addrspace(4)2472 %this.addr = alloca ptr addrspace(4)2473 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2474 store ptr addrspace(4) %this, ptr %this.addr2475 2476 2477 %this.addr1 = bitcast ptr %this.addr to ptr2478 %this.addr2 = bitcast ptr %this.addr1 to ptr2479 %this1 = load ptr addrspace(4), ptr %this.addr22480 2481; %this1 = load ptr addrspace(4), ptr %this.addr2482 %MData1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)2483 %arraydecay2 = bitcast ptr addrspace(4) %MData1 to ptr addrspace(4)2484 %add.ptr = getelementptr inbounds nuw i32, ptr addrspace(4) %arraydecay2, i64 42485 ret ptr addrspace(4) %add.ptr2486}2487 2488 2489define internal spir_func i32 @Bar55(ptr addrspace(4) %this) {2490entry:2491 %retval = alloca i32, align 42492 %this.addr = alloca ptr addrspace(4)2493 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2494 store ptr addrspace(4) %this, ptr %this.addr2495 %this1 = load ptr addrspace(4), ptr %this.addr2496 %bits_num = getelementptr inbounds nuw %"ss_sub_group_mask", ptr addrspace(4) %this1, i32 0, i32 12497 %0 = load i64, ptr addrspace(4) %bits_num2498 %conv = trunc i64 %0 to i322499 ret i32 %conv2500}2501 2502 2503define internal spir_func void @Bar56(ptr addrspace(4) %this, ptr addrspace(4) align 4 %bits, ptr byval(%"range") %pos) {2504entry:2505 %this.addr = alloca ptr addrspace(4)2506 %bits.addr = alloca ptr addrspace(4)2507 %Res = alloca i642508 store ptr addrspace(4) %this, ptr %this.addr2509 store ptr addrspace(4) %bits, ptr %bits.addr2510 %pos.ascast = addrspacecast ptr %pos to ptr addrspace(4)2511 %this1 = load ptr addrspace(4), ptr %this.addr2512 %Bits1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)2513 %0 = load i64, ptr addrspace(4) %Bits12514 store i64 %0, ptr %Res2515 %bits_num = getelementptr inbounds nuw %"ss_sub_group_mask", ptr addrspace(4) %this1, i32 0, i32 12516 %1 = load i64, ptr addrspace(4) %bits_num2517 %call = call spir_func i64 @Bar58(ptr addrspace(4) %this1, i64 %1) 2518 %2 = load i64, ptr %Res2519 %and = and i64 %2, %call2520 store i64 %and, ptr %Res2521 %call2 = call spir_func i64 @Bar52(ptr addrspace(4) %pos.ascast, i32 0) 2522 %call3 = call spir_func i32 @Bar55(ptr addrspace(4) %this1) 2523 %conv = zext i32 %call3 to i642524 %cmp = icmp ult i64 %call2, %conv2525 br i1 %cmp, label %if.then, label %if.else2526 2527if.else: ; preds = %entry2528 %3 = load ptr addrspace(4), ptr %bits.addr2529 store i32 0, ptr addrspace(4) %3, align 42530 br label %if.end112531 2532if.then: ; preds = %entry2533 %call4 = call spir_func i64 @Bar52(ptr addrspace(4) %pos.ascast, i32 0) 2534 %cmp5 = icmp ugt i64 %call4, 02535 br i1 %cmp5, label %if.then6, label %if.end2536 2537if.then6: ; preds = %if.then2538 %call7 = call spir_func i64 @Bar52(ptr addrspace(4) %pos.ascast, i32 0) 2539 %4 = load i64, ptr %Res2540 %shr = lshr i64 %4, %call72541 store i64 %shr, ptr %Res2542 br label %if.end2543 2544if.end: ; preds = %if.then6, %if.then2545 %call8 = call spir_func i64 @Bar58(ptr addrspace(4) %this1, i64 32) 2546 %5 = load i64, ptr %Res2547 %and9 = and i64 %5, %call82548 store i64 %and9, ptr %Res2549 %6 = load i64, ptr %Res2550 %conv10 = trunc i64 %6 to i322551 %7 = load ptr addrspace(4), ptr %bits.addr2552 store i32 %conv10, ptr addrspace(4) %7, align 42553 br label %if.end112554 2555if.end11: ; preds = %if.else, %if.end2556 ret void2557}2558 2559 2560define internal spir_func i64 @Bar58(ptr addrspace(4) %this, i64 %bn) {2561entry:2562 %retval = alloca i642563 %this.addr = alloca ptr addrspace(4)2564 %bn.addr = alloca i642565 %one = alloca i642566 %cleanup.dest.slot = alloca i32, align 42567 store ptr addrspace(4) %this, ptr %this.addr2568 store i64 %bn, ptr %bn.addr2569 %this1 = load ptr addrspace(4), ptr %this.addr2570 %0 = load i64, ptr %bn.addr2571 %cmp = icmp ule i64 %0, 642572 %1 = addrspacecast ptr addrspace(1) @.str.2 to ptr addrspace(4)2573 %2 = addrspacecast ptr addrspace(1) @.str.1 to ptr addrspace(4)2574 %3 = addrspacecast ptr addrspace(1) @__PRETTY_FUNCTION2 to ptr addrspace(4)2575 br i1 %cmp, label %cond.end, label %cond.false2576 2577cond.false: ; preds = %entry2578 call spir_func void @__assert_fail(ptr addrspace(4) %1, ptr addrspace(4) %2, i32 327, ptr addrspace(4) %3) 2579 br label %cond.end2580 2581cond.end: ; preds = %entry, %cond.false2582 store i64 1, ptr %one2583 %4 = load i64, ptr %bn.addr2584 %cmp2 = icmp eq i64 %4, 642585 br i1 %cmp2, label %if.then, label %if.end2586 2587if.end: ; preds = %cond.end2588 %5 = load i64, ptr %one2589 %6 = load i64, ptr %bn.addr2590 %shl = shl i64 %5, %62591 %7 = load i64, ptr %one2592 %sub3 = sub i64 %shl, %72593 store i64 %sub3, ptr %retval2594 store i32 1, ptr %cleanup.dest.slot, align 42595 br label %cleanup2596 2597if.then: ; preds = %cond.end2598 %8 = load i64, ptr %one2599 %sub = sub i64 0, %82600 store i64 %sub, ptr %retval2601 store i32 1, ptr %cleanup.dest.slot, align 42602 br label %cleanup2603 2604cleanup: ; preds = %if.end, %if.then2605 %9 = load i64, ptr %retval2606 ret i64 %92607}2608 2609 2610 2611 2612define internal spir_func void @Foo11(ptr addrspace(4) %this) {2613entry:2614 %this.addr = alloca ptr addrspace(4)2615 store ptr addrspace(4) %this, ptr %this.addr2616 %this1 = load ptr addrspace(4), ptr %this.addr2617 call spir_func void @Foo60(ptr addrspace(4) %this1, i64 0) 2618 ret void2619}2620 2621 2622define internal spir_func void @Foo60(ptr addrspace(4) %this, i64 %dim0) {2623entry:2624 %this.addr = alloca ptr addrspace(4)2625 %dim0.addr = alloca i642626 store ptr addrspace(4) %this, ptr %this.addr2627 store i64 %dim0, ptr %dim0.addr2628 %this1 = load ptr addrspace(4), ptr %this.addr2629 %common_array1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)2630 %0 = load i64, ptr %dim0.addr2631 store i64 %0, ptr addrspace(4) %common_array12632 ret void2633}2634 2635 2636define internal spir_func i32 @Foo59(ptr byval(%"tangle_group") %g, i32 %x, ptr byval(%"range") %local_id) {2637entry:2638 %retval = alloca i32, align 42639 %x.addr = alloca i32, align 42640 %LocalId = alloca i32, align 42641 %agg.tmp = alloca %"tangle_group"2642 %agg.tmp1 = alloca %"range"2643 %cleanup.dest.slot = alloca i32, align 42644 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2645 %x.addr.ascast = addrspacecast ptr %x.addr to ptr addrspace(4)2646 %g.ascast = addrspacecast ptr %g to ptr addrspace(4)2647 store i32 %x, ptr %x.addr, align 42648 %call = call spir_func i32 @Foo48(ptr byval(%"tangle_group") %agg.tmp, ptr byval(%"range") %agg.tmp1) 2649 store i32 %call, ptr %LocalId, align 42650 %0 = addrspacecast ptr addrspace(1) @_ZSt6ignore to ptr addrspace(4)2651 %call2 = call spir_func align 1 ptr addrspace(4) @Bar15(ptr addrspace(4) align 1 %0, ptr addrspace(4) %g.ascast) 2652 %call3 = call spir_func i32 @Foo49(ptr addrspace(4) align 4 %x.addr.ascast) 2653 %1 = load i32, ptr %LocalId, align 42654 %call4 = call spir_func i32 @Foo50(i32 3, i32 %call3, i32 %1) 2655 ret i32 %call42656}2657 2658 2659define internal spir_func i32 @Foo47(ptr byval(%"ss_sub_group_mask") %Mask) {2660entry:2661 %retval = alloca i32, align 42662 %MemberMask = alloca %"vec.16", align 162663 %agg.tmp = alloca %"ss_sub_group_mask"2664 %cleanup.dest.slot = alloca i32, align 42665 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2666 %MemberMask.ascast = addrspacecast ptr %MemberMask to ptr addrspace(4)2667 call spir_func void @Bar19(ptr addrspace(4) dead_on_unwind writable sret(%"vec.16") align 16 %MemberMask.ascast, ptr byval(%"ss_sub_group_mask") %agg.tmp) 2668 %call = call spir_func <4 x i32> @Bar59(ptr addrspace(4) align 16 %MemberMask.ascast) 2669 %call1 = call spir_func i32 @_Z37__spirv_GroupNonUniformBallotBitCountN5__spv5Scope4FlagEiDv4_j(i32 3, i32 2, <4 x i32> %call) 2670 ret i32 %call12671}2672 2673 2674define internal spir_func <4 x i32> @Bar59(ptr addrspace(4) align 16 %x) {2675entry:2676 %retval = alloca <4 x i32>, align 162677 %x.addr = alloca ptr addrspace(4)2678 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2679 store ptr addrspace(4) %x, ptr %x.addr2680 %0 = load ptr addrspace(4), ptr %x.addr2681 %call = call spir_func <4 x i32> @Bar60(ptr addrspace(4) align 16 %0) 2682 ret <4 x i32> %call2683}2684 2685declare dso_local spir_func i32 @_Z37__spirv_GroupNonUniformBallotBitCountN5__spv5Scope4FlagEiDv4_j(i32, i32, <4 x i32>) 2686 2687 2688define internal spir_func <4 x i32> @Bar60(ptr addrspace(4) align 16 %from) {2689entry:2690 %retval = alloca <4 x i32>, align 162691 %from.addr = alloca ptr addrspace(4)2692 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2693 store ptr addrspace(4) %from, ptr %from.addr2694 %0 = load ptr addrspace(4), ptr %from.addr2695 %1 = load <4 x i32>, ptr addrspace(4) %0, align 162696 ret <4 x i32> %12697}2698 2699 2700define internal spir_func i32 @Foo52(ptr byval(%"tangle_group") %g, i32 %x, i32 %delta) {2701entry:2702 %retval = alloca i32, align 42703 %x.addr = alloca i32, align 42704 %delta.addr = alloca i32, align 42705 %TargetLocalId = alloca %"range"2706 %TargetId = alloca i32, align 42707 %agg.tmp = alloca %"tangle_group"2708 %agg.tmp3 = alloca %"range"2709 %cleanup.dest.slot = alloca i32, align 42710 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2711 %x.addr.ascast = addrspacecast ptr %x.addr to ptr addrspace(4)2712 %TargetLocalId.ascast = addrspacecast ptr %TargetLocalId to ptr addrspace(4)2713 %g.ascast = addrspacecast ptr %g to ptr addrspace(4)2714 store i32 %x, ptr %x.addr, align 42715 store i32 %delta, ptr %delta.addr, align 42716 call spir_func void @Foo51(ptr addrspace(4) dead_on_unwind writable sret(%"range") %TargetLocalId.ascast, ptr addrspace(4) %g.ascast) 2717 %call = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %TargetLocalId.ascast, i32 0) 2718 %0 = load i64, ptr addrspace(4) %call2719 %1 = load i32, ptr %delta.addr, align 42720 %conv = zext i32 %1 to i642721 %cmp = icmp uge i64 %0, %conv2722 br i1 %cmp, label %if.then, label %if.end2723 2724if.then: ; preds = %entry2725 %2 = load i32, ptr %delta.addr, align 42726 %conv1 = zext i32 %2 to i642727 %call2 = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %TargetLocalId.ascast, i32 0) 2728 %3 = load i64, ptr addrspace(4) %call22729 %sub = sub i64 %3, %conv12730 store i64 %sub, ptr addrspace(4) %call22731 br label %if.end2732 2733if.end: ; preds = %if.then, %entry2734 %call4 = call spir_func i32 @Foo48(ptr byval(%"tangle_group") %agg.tmp, ptr byval(%"range") %agg.tmp3) 2735 store i32 %call4, ptr %TargetId, align 42736 %call5 = call spir_func i32 @Foo49(ptr addrspace(4) align 4 %x.addr.ascast) 2737 %4 = load i32, ptr %TargetId, align 42738 %call6 = call spir_func i32 @Foo50(i32 3, i32 %call5, i32 %4) 2739 ret i32 %call62740}2741 2742 2743define internal spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %this, i32 %dimension) {2744entry:2745 %this.addr.i = alloca ptr addrspace(4)2746 %dimension.addr.i = alloca i32, align 42747 %retval = alloca ptr addrspace(4)2748 %this.addr = alloca ptr addrspace(4)2749 %dimension.addr = alloca i32, align 42750 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2751 store ptr addrspace(4) %this, ptr %this.addr2752 store i32 %dimension, ptr %dimension.addr, align 42753 %this1 = load ptr addrspace(4), ptr %this.addr2754 %0 = load i32, ptr %dimension.addr, align 42755 store ptr addrspace(4) %this1, ptr %this.addr.i2756 store i32 %0, ptr %dimension.addr.i, align 42757 %this1.i = load ptr addrspace(4), ptr %this.addr.i2758 %common_array1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)2759 %1 = load i32, ptr %dimension.addr, align 42760 %idxprom = sext i32 %1 to i642761 %arrayidx = getelementptr inbounds [1 x i64], ptr addrspace(4) %common_array1, i64 0, i64 %idxprom2762 ret ptr addrspace(4) %arrayidx2763}2764 2765 2766define internal spir_func i32 @Foo72(ptr byval(%"tangle_group") %g, i32 %x, i32 %delta) {2767entry:2768 %retval = alloca i32, align 42769 %x.addr = alloca i32, align 42770 %delta.addr = alloca i32, align 42771 %TargetLocalId = alloca %"range"2772 %TargetId = alloca i32, align 42773 %agg.tmp = alloca %"tangle_group"2774 %agg.tmp6 = alloca %"range"2775 %cleanup.dest.slot = alloca i32, align 42776 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2777 %x.addr.ascast = addrspacecast ptr %x.addr to ptr addrspace(4)2778 %TargetLocalId.ascast = addrspacecast ptr %TargetLocalId to ptr addrspace(4)2779 %g.ascast = addrspacecast ptr %g to ptr addrspace(4)2780 store i32 %x, ptr %x.addr, align 42781 store i32 %delta, ptr %delta.addr, align 42782 call spir_func void @Foo51(ptr addrspace(4) dead_on_unwind writable sret(%"range") %TargetLocalId.ascast, ptr addrspace(4) %g.ascast) 2783 %call = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %TargetLocalId.ascast, i32 0) 2784 %0 = load i64, ptr addrspace(4) %call2785 %1 = load i32, ptr %delta.addr, align 42786 %conv = zext i32 %1 to i642787 %add = add i64 %0, %conv2788 %call1 = call spir_func i32 @Bar61(ptr addrspace(4) %g.ascast) 2789 %conv2 = zext i32 %call1 to i642790 %cmp = icmp ult i64 %add, %conv22791 br i1 %cmp, label %if.then, label %if.end2792 2793if.then: ; preds = %entry2794 %2 = load i32, ptr %delta.addr, align 42795 %conv3 = zext i32 %2 to i642796 %call4 = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %TargetLocalId.ascast, i32 0) 2797 %3 = load i64, ptr addrspace(4) %call42798 %add5 = add i64 %3, %conv32799 store i64 %add5, ptr addrspace(4) %call42800 br label %if.end2801 2802if.end: ; preds = %if.then, %entry2803 %call7 = call spir_func i32 @Foo48(ptr byval(%"tangle_group") %agg.tmp, ptr byval(%"range") %agg.tmp6) 2804 store i32 %call7, ptr %TargetId, align 42805 %call8 = call spir_func i32 @Foo49(ptr addrspace(4) align 4 %x.addr.ascast) 2806 %4 = load i32, ptr %TargetId, align 42807 %call9 = call spir_func i32 @Foo50(i32 3, i32 %call8, i32 %4) 2808 ret i32 %call92809}2810 2811 2812define internal spir_func i32 @Bar61(ptr addrspace(4) %this) {2813entry:2814 %retval = alloca i32, align 42815 %this.addr = alloca ptr addrspace(4)2816 %ref.tmp = alloca %"range"2817 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2818 %ref.tmp.ascast = addrspacecast ptr %ref.tmp to ptr addrspace(4)2819 store ptr addrspace(4) %this, ptr %this.addr2820 %this1 = load ptr addrspace(4), ptr %this.addr2821 call spir_func void @Foo97(ptr addrspace(4) dead_on_unwind writable sret(%"range") %ref.tmp.ascast, ptr addrspace(4) %this1) 2822 %call = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %ref.tmp.ascast, i32 0) 2823 %0 = load i64, ptr addrspace(4) %call2824 %conv = trunc i64 %0 to i322825 ret i32 %conv2826}2827 2828 2829define internal spir_func void @Foo97(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result, ptr addrspace(4) %this) {2830entry:2831 %this.addr = alloca ptr addrspace(4)2832 store ptr addrspace(4) %this, ptr %this.addr2833 %this1 = load ptr addrspace(4), ptr %this.addr2834 %Mask1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)2835 %call = call spir_func i32 @Bar62(ptr addrspace(4) %Mask1) 2836 %conv = zext i32 %call to i642837 call spir_func void @Foo9(ptr addrspace(4) %agg.result, i64 %conv) 2838 ret void2839}2840 2841 2842define internal spir_func i32 @Bar62(ptr addrspace(4) %this) {2843entry:2844 %retval = alloca i32, align 42845 %this.addr = alloca ptr addrspace(4)2846 %count = alloca i32, align 42847 %word = alloca i642848 %cleanup.dest.slot = alloca i32, align 42849 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2850 store ptr addrspace(4) %this, ptr %this.addr2851 %this1 = load ptr addrspace(4), ptr %this.addr2852 store i32 0, ptr %count, align 42853 %Bits1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)2854 %0 = load i64, ptr addrspace(4) %Bits12855 %bits_num = getelementptr inbounds nuw %"ss_sub_group_mask", ptr addrspace(4) %this1, i32 0, i32 12856 %1 = load i64, ptr addrspace(4) %bits_num2857 %call = call spir_func i64 @Bar58(ptr addrspace(4) %this1, i64 %1) 2858 %and = and i64 %0, %call2859 store i64 %and, ptr %word2860 br label %while.cond2861 2862while.cond: ; preds = %while.body, %entry2863 %2 = load i64, ptr %word2864 %tobool = icmp ne i64 %2, 02865 br i1 %tobool, label %while.body, label %while.end2866 2867while.end: ; preds = %while.cond2868 %3 = load i32, ptr %count, align 42869 ret i32 %32870 2871while.body: ; preds = %while.cond2872 %4 = load i64, ptr %word2873 %sub = sub i64 %4, 12874 %5 = load i64, ptr %word2875 %and2 = and i64 %5, %sub2876 store i64 %and2, ptr %word2877 %6 = load i32, ptr %count, align 42878 %inc = add i32 %6, 12879 store i32 %inc, ptr %count, align 42880 br label %while.cond2881}2882 2883 2884define internal spir_func void @Foo9(ptr addrspace(4) %this, i64 %dim0) unnamed_addr {2885entry:2886 %this.addr = alloca ptr addrspace(4)2887 %dim0.addr = alloca i642888 store ptr addrspace(4) %this, ptr %this.addr2889 store i64 %dim0, ptr %dim0.addr2890 %this1 = load ptr addrspace(4), ptr %this.addr2891 %0 = load i64, ptr %dim0.addr2892 call spir_func void @Foo60(ptr addrspace(4) %this1, i64 %0) 2893 ret void2894}2895 2896 2897define internal spir_func i32 @Foo61(ptr byval(%"tangle_group") %g, ptr byval(%"nd_item") align 1 %0, i32 %x, ptr byval(%"nd_item") align 1 %1){2898entry:2899 %retval = alloca i32, align 42900 %x.addr = alloca i32, align 42901 %agg.tmp = alloca %"tangle_group"2902 %agg.tmp1 = alloca %"nd_item", align 12903 %agg.tmp2 = alloca %"nd_item", align 12904 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2905 %2 = addrspacecast ptr %0 to ptr addrspace(4)2906 store i32 %x, ptr %x.addr, align 42907 %3 = addrspacecast ptr %1 to ptr addrspace(4)2908 %4 = load i32, ptr %x.addr, align 42909 %call = call spir_func i32 @Bar63(ptr byval(%"tangle_group") %agg.tmp, ptr byval(%"nd_item") align 1 %agg.tmp1, i32 %4, ptr byval(%"nd_item") align 1 %agg.tmp2) 2910 ret i32 %call2911}2912 2913 2914define internal spir_func i32 @Bar63(ptr byval(%"tangle_group") %g, ptr byval(%"nd_item") align 1 %0, i32 %x, ptr byval(%"nd_item") align 1 %1){2915entry:2916 %retval = alloca i32, align 42917 %x.addr = alloca i32, align 42918 %agg.tmp = alloca %"tangle_group"2919 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2920 %2 = addrspacecast ptr %0 to ptr addrspace(4)2921 store i32 %x, ptr %x.addr, align 42922 %3 = addrspacecast ptr %1 to ptr addrspace(4)2923 %4 = load i32, ptr %x.addr, align 42924 %call = call spir_func i32 @Bar64(ptr byval(%"tangle_group") %agg.tmp, i32 %4) 2925 ret i32 %call2926}2927 2928 2929define internal spir_func i32 @Bar64(ptr byval(%"tangle_group") %0, i32 %x) {2930entry:2931 %retval = alloca i32, align 42932 %x.addr = alloca i32, align 42933 %Arg = alloca i32, align 42934 %Ret = alloca i32, align 42935 %cleanup.dest.slot = alloca i32, align 42936 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2937 %1 = addrspacecast ptr %0 to ptr addrspace(4)2938 store i32 %x, ptr %x.addr, align 42939 %2 = load i32, ptr %x.addr, align 42940 store i32 %2, ptr %Arg, align 42941 %3 = load i32, ptr %Arg, align 42942 %call = call spir_func i32 @_Z27__spirv_GroupNonUniformIAddIiET_N5__spv5Scope4FlagEjS0_(i32 3, i32 1, i32 %3) 2943 store i32 %call, ptr %Ret, align 42944 %4 = load i32, ptr %Ret, align 42945 ret i32 %42946}2947 2948declare dso_local spir_func i32 @_Z27__spirv_GroupNonUniformIAddIiET_N5__spv5Scope4FlagEjS0_(i32, i32, i32) 2949 2950 2951define internal spir_func i32 @Bar12(ptr byval(%"tangle_group") %g, ptr byval(%"nd_item") align 1 %0, i32 %x, ptr byval(%"nd_item") align 1 %1){2952entry:2953 %retval = alloca i32, align 42954 %x.addr = alloca i32, align 42955 %agg.tmp = alloca %"tangle_group"2956 %agg.tmp1 = alloca %"nd_item", align 12957 %agg.tmp2 = alloca %"nd_item", align 12958 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2959 %2 = addrspacecast ptr %0 to ptr addrspace(4)2960 store i32 %x, ptr %x.addr, align 42961 %3 = addrspacecast ptr %1 to ptr addrspace(4)2962 %4 = load i32, ptr %x.addr, align 42963 %call = call spir_func i32 @Bar65(ptr byval(%"tangle_group") %agg.tmp, ptr byval(%"nd_item") align 1 %agg.tmp1, i32 %4, ptr byval(%"nd_item") align 1 %agg.tmp2) 2964 ret i32 %call2965}2966 2967 2968define internal spir_func i32 @Bar65(ptr byval(%"tangle_group") %g, ptr byval(%"nd_item") align 1 %0, i32 %x, ptr byval(%"nd_item") align 1 %1){2969entry:2970 %retval = alloca i32, align 42971 %x.addr = alloca i32, align 42972 %agg.tmp = alloca %"tangle_group"2973 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2974 %2 = addrspacecast ptr %0 to ptr addrspace(4)2975 store i32 %x, ptr %x.addr, align 42976 %3 = addrspacecast ptr %1 to ptr addrspace(4)2977 %4 = load i32, ptr %x.addr, align 42978 %call = call spir_func i32 @Bar66(ptr byval(%"tangle_group") %agg.tmp, i32 %4) 2979 ret i32 %call2980}2981 2982 2983define internal spir_func i32 @Bar66(ptr byval(%"tangle_group") %0, i32 %x) {2984entry:2985 %retval = alloca i32, align 42986 %x.addr = alloca i32, align 42987 %Arg = alloca i32, align 42988 %Ret = alloca i32, align 42989 %cleanup.dest.slot = alloca i32, align 42990 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)2991 %1 = addrspacecast ptr %0 to ptr addrspace(4)2992 store i32 %x, ptr %x.addr, align 42993 %2 = load i32, ptr %x.addr, align 42994 store i32 %2, ptr %Arg, align 42995 %3 = load i32, ptr %Arg, align 42996 %call = call spir_func i32 @_Z27__spirv_GroupNonUniformIAddIiET_N5__spv5Scope4FlagEjS0_(i32 3, i32 2, i32 %3) 2997 store i32 %call, ptr %Ret, align 42998 %4 = load i32, ptr %Ret, align 42999 ret i32 %43000}3001 3002 3003define internal spir_func i32 @Bar11(ptr byval(%"tangle_group") %g, ptr byval(%"nd_item") align 1 %0, i32 %x, ptr byval(%"nd_item") align 1 %1){3004entry:3005 %retval = alloca i32, align 43006 %x.addr = alloca i32, align 43007 %agg.tmp = alloca %"tangle_group"3008 %agg.tmp1 = alloca %"nd_item", align 13009 %agg.tmp2 = alloca %"nd_item", align 13010 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3011 %2 = addrspacecast ptr %0 to ptr addrspace(4)3012 store i32 %x, ptr %x.addr, align 43013 %3 = addrspacecast ptr %1 to ptr addrspace(4)3014 %4 = load i32, ptr %x.addr, align 43015 %call = call spir_func i32 @Bar67(ptr byval(%"tangle_group") %agg.tmp, ptr byval(%"nd_item") align 1 %agg.tmp1, i32 %4, ptr byval(%"nd_item") align 1 %agg.tmp2) 3016 ret i32 %call3017}3018 3019 3020define internal spir_func i32 @Bar67(ptr byval(%"tangle_group") %g, ptr byval(%"nd_item") align 1 %0, i32 %x, ptr byval(%"nd_item") align 1 %1){3021entry:3022 %retval = alloca i32, align 43023 %x.addr = alloca i32, align 43024 %agg.tmp = alloca %"tangle_group"3025 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3026 %2 = addrspacecast ptr %0 to ptr addrspace(4)3027 store i32 %x, ptr %x.addr, align 43028 %3 = addrspacecast ptr %1 to ptr addrspace(4)3029 %4 = load i32, ptr %x.addr, align 43030 %call = call spir_func i32 @Bar68(ptr byval(%"tangle_group") %agg.tmp, i32 %4) 3031 ret i32 %call3032}3033 3034 3035define internal spir_func i32 @Bar68(ptr byval(%"tangle_group") %0, i32 %x) {3036entry:3037 %retval = alloca i32, align 43038 %x.addr = alloca i32, align 43039 %Arg = alloca i32, align 43040 %Ret = alloca i32, align 43041 %cleanup.dest.slot = alloca i32, align 43042 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3043 %1 = addrspacecast ptr %0 to ptr addrspace(4)3044 store i32 %x, ptr %x.addr, align 43045 %2 = load i32, ptr %x.addr, align 43046 store i32 %2, ptr %Arg, align 43047 %3 = load i32, ptr %Arg, align 43048 %call = call spir_func i32 @_Z27__spirv_GroupNonUniformIAddIiET_N5__spv5Scope4FlagEjS0_(i32 3, i32 0, i32 %3) 3049 store i32 %call, ptr %Ret, align 43050 %4 = load i32, ptr %Ret, align 43051 ret i32 %43052}3053 3054 3055define internal spir_func zeroext i1 @Foo66(ptr byval(%"tangle_group") %0, i1 zeroext %pred) {3056entry:3057 %retval = alloca i1, align 13058 %pred.addr = alloca i8, align 13059 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3060 %1 = addrspacecast ptr %0 to ptr addrspace(4)3061 %storedv = zext i1 %pred to i83062 store i8 %storedv, ptr %pred.addr, align 13063 %2 = load i8, ptr %pred.addr, align 1 3064 %loadedv = trunc i8 %2 to i13065 %call = call spir_func zeroext i1 @Foo99(i32 3, i1 zeroext %loadedv) 3066 ret i1 %call3067}3068 3069declare dso_local spir_func zeroext i1 @Foo99(i32, i1 zeroext) 3070 3071 3072define internal spir_func zeroext i1 @Bar10(ptr byval(%"tangle_group") %0, i1 zeroext %pred) {3073entry:3074 %retval = alloca i1, align 13075 %pred.addr = alloca i8, align 13076 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3077 %1 = addrspacecast ptr %0 to ptr addrspace(4)3078 %storedv = zext i1 %pred to i83079 store i8 %storedv, ptr %pred.addr, align 13080 %2 = load i8, ptr %pred.addr, align 1 3081 %loadedv = trunc i8 %2 to i13082 %call = call spir_func zeroext i1 @_Z26__spirv_GroupNonUniformAnyN5__spv5Scope4FlagEb(i32 3, i1 zeroext %loadedv) 3083 ret i1 %call3084}3085 3086declare dso_local spir_func zeroext i1 @_Z26__spirv_GroupNonUniformAnyN5__spv5Scope4FlagEb(i32, i1 zeroext) 3087 3088 3089define internal spir_func void @Foo98(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result, ptr byval(%"range") %0, i64 %linear_id) {3090entry:3091 %linear_id.addr = alloca i643092 %1 = addrspacecast ptr %0 to ptr addrspace(4)3093 store i64 %linear_id, ptr %linear_id.addr3094 %2 = load i64, ptr %linear_id.addr3095 call spir_func void @Foo46(ptr addrspace(4) %agg.result, i64 %2) 3096 ret void3097}3098 3099 3100define internal spir_func i32 @Bar69(ptr byval(%"tangle_group") %g, i32 %x, ptr byval(%"range") %local_id) {3101entry:3102 %retval = alloca i32, align 43103 %x.addr = alloca i32, align 43104 %agg.tmp = alloca %"tangle_group"3105 %agg.tmp1 = alloca %"range"3106 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3107 store i32 %x, ptr %x.addr, align 43108 %0 = load i32, ptr %x.addr, align 43109 %call = call spir_func i32 @Bar70(ptr byval(%"tangle_group") %agg.tmp, i32 %0, ptr byval(%"range") %agg.tmp1) 3110 ret i32 %call3111}3112 3113 3114define internal spir_func i32 @Bar70(ptr byval(%"tangle_group") %g, i32 %x, ptr byval(%"range") %local_id) {3115entry:3116 %retval = alloca i32, align 43117 %x.addr = alloca i32, align 43118 %agg.tmp = alloca %"tangle_group"3119 %VecId = alloca %"range"3120 %OCLX = alloca i32, align 43121 %WideOCLX = alloca i32, align 43122 %OCLId = alloca i643123 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3124 %VecId.ascast = addrspacecast ptr %VecId to ptr addrspace(4)3125 %OCLX.ascast = addrspacecast ptr %OCLX to ptr addrspace(4)3126 %WideOCLX.ascast = addrspacecast ptr %WideOCLX to ptr addrspace(4)3127 %OCLId.ascast = addrspacecast ptr %OCLId to ptr addrspace(4)3128 store i32 %x, ptr %x.addr, align 43129 %local_id.ascast = addrspacecast ptr %local_id to ptr addrspace(4)3130 %0 = load i32, ptr %x.addr, align 43131 %call = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %local_id.ascast, i32 0) 3132 %1 = load i64, ptr addrspace(4) %call3133 %call1 = call spir_func i32 @Bar71(ptr byval(%"tangle_group") %agg.tmp, i32 %0, i64 %1) 3134 ret i32 %call13135}3136 3137 3138define internal spir_func i32 @Bar71(ptr byval(%"tangle_group") %g, i32 %x, i64 %local_id) {3139entry:3140 %retval = alloca i32, align 43141 %x.addr = alloca i32, align 43142 %local_id.addr = alloca i643143 %LocalId = alloca i32, align 43144 %agg.tmp = alloca %"tangle_group"3145 %GroupLocalId = alloca i32, align 43146 %OCLX = alloca i32, align 43147 %WideOCLX = alloca i32, align 43148 %OCLId = alloca i32, align 43149 %cleanup.dest.slot = alloca i32, align 43150 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3151 %x.addr.ascast = addrspacecast ptr %x.addr to ptr addrspace(4)3152 %GroupLocalId.ascast = addrspacecast ptr %GroupLocalId to ptr addrspace(4)3153 store i32 %x, ptr %x.addr, align 43154 store i64 %local_id, ptr %local_id.addr3155 %0 = load i64, ptr %local_id.addr3156 %conv = trunc i64 %0 to i323157 %call = call spir_func i32 @Bar17(ptr byval(%"tangle_group") %agg.tmp, i32 %conv) 3158 store i32 %call, ptr %LocalId, align 43159 %1 = load i32, ptr %LocalId, align 43160 store i32 %1, ptr %GroupLocalId, align 43161 %call1 = call spir_func i32 @Foo49(ptr addrspace(4) align 4 %x.addr.ascast) 3162 store i32 %call1, ptr %OCLX, align 43163 %2 = load i32, ptr %OCLX, align 43164 store i32 %2, ptr %WideOCLX, align 43165 %call2 = call spir_func i32 @Foo49(ptr addrspace(4) align 4 %GroupLocalId.ascast) 3166 store i32 %call2, ptr %OCLId, align 43167 %3 = load i32, ptr %WideOCLX, align 43168 %4 = load i32, ptr %OCLId, align 43169 %call3 = call spir_func i32 @_Z32__spirv_GroupNonUniformBroadcastIjjET_N5__spv5Scope4FlagES0_T0_(i32 3, i32 %3, i32 %4) 3170 ret i32 %call33171}3172 3173declare dso_local spir_func i32 @_Z32__spirv_GroupNonUniformBroadcastIjjET_N5__spv5Scope4FlagES0_T0_(i32, i32, i32) 3174 3175 3176define internal spir_func void @Foo96(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result, ptr addrspace(4) align 1 %this) {3177entry:3178 %this.addr = alloca ptr addrspace(4)3179 store ptr addrspace(4) %this, ptr %this.addr3180 %this1 = load ptr addrspace(4), ptr %this.addr3181 %call = call spir_func i32 @_Z33__spirv_SubgroupLocalInvocationIdv() 3182 %conv = zext i32 %call to i643183 call spir_func void @Foo46(ptr addrspace(4) %agg.result, i64 %conv) 3184 ret void3185}3186 3187 3188define internal spir_func i32 @_Z33__spirv_SubgroupLocalInvocationIdv() {3189entry:3190 %retval = alloca i32, align 43191 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3192 %0 = load i32, ptr addrspace(1) @__spirv_BuiltInSubgroupLocalInvocationId, align 43193 ret i32 %03194}3195 3196 3197define internal spir_func i64 @Foo77(ptr addrspace(4) %this, ptr byval(%"range") %Id) {3198entry:3199 %retval = alloca i643200 %this.addr = alloca ptr addrspace(4)3201 %Result = alloca i643202 %ref.tmp = alloca %class.anon.153203 %cleanup.dest.slot = alloca i32, align 43204 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3205 %Result.ascast = addrspacecast ptr %Result to ptr addrspace(4)3206 %ref.tmp.ascast = addrspacecast ptr %ref.tmp to ptr addrspace(4)3207 store ptr addrspace(4) %this, ptr %this.addr3208 %Id.ascast = addrspacecast ptr %Id to ptr addrspace(4)3209 %this1 = load ptr addrspace(4), ptr %this.addr3210 store i64 0, ptr %Result3211 %0 = bitcast ptr %ref.tmp to ptr3212 store ptr addrspace(4) %this1, ptr %03213 %Result2 = getelementptr inbounds %class.anon.15, ptr %ref.tmp, i32 0, i32 13214 store ptr addrspace(4) %Result.ascast, ptr %Result23215 %Id3 = getelementptr inbounds %class.anon.15, ptr %ref.tmp, i32 0, i32 23216 store ptr addrspace(4) %Id.ascast, ptr %Id33217 call spir_func void @Foo79(ptr addrspace(4) %ref.tmp.ascast) 3218 %1 = load i64, ptr %Result3219 ret i64 %13220}3221 3222 3223define internal spir_func ptr addrspace(1) @Foo78(ptr addrspace(4) %this) {3224entry:3225 %retval = alloca ptr addrspace(1)3226 %this.addr = alloca ptr addrspace(4)3227 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3228 store ptr addrspace(4) %this, ptr %this.addr3229 %this1 = load ptr addrspace(4), ptr %this.addr3230 %0 = getelementptr inbounds nuw %"accessor", ptr addrspace(4) %this1, i32 0, i32 13231 %1 = load ptr addrspace(1), ptr addrspace(4) %03232 ret ptr addrspace(1) %13233}3234 3235 3236define internal spir_func void @Foo79(ptr addrspace(4) %f) {3237entry:3238 %f.addr = alloca ptr addrspace(4)3239 %agg.tmp = alloca %"nd_item", align 13240 store ptr addrspace(4) %f, ptr %f.addr3241 %0 = load ptr addrspace(4), ptr %f.addr3242 call spir_func void @Foo80(ptr byval(%"nd_item") align 1 %agg.tmp, ptr addrspace(4) %0) 3243 ret void3244}3245 3246 3247define internal spir_func void @Foo80(ptr byval(%"nd_item") align 1 %0, ptr addrspace(4) %f) {3248entry:3249 %f.addr = alloca ptr addrspace(4)3250 %ref.tmp = alloca %"nd_item", align 13251 %ref.tmp.ascast = addrspacecast ptr %ref.tmp to ptr addrspace(4)3252 %1 = addrspacecast ptr %0 to ptr addrspace(4)3253 store ptr addrspace(4) %f, ptr %f.addr3254 %2 = load ptr addrspace(4), ptr %f.addr3255 %call = call spir_func i64 @_ZNKSt17integral_constantImLm0EEcvmEv(ptr addrspace(4) align 1 %ref.tmp.ascast) 3256 call spir_func void @Foo81(ptr addrspace(4) %2, i64 %call) 3257 ret void3258}3259 3260 3261define internal spir_func i64 @_ZNKSt17integral_constantImLm0EEcvmEv(ptr addrspace(4) align 1 %this) {3262entry:3263 %retval = alloca i643264 %this.addr = alloca ptr addrspace(4)3265 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3266 store ptr addrspace(4) %this, ptr %this.addr3267 %this1 = load ptr addrspace(4), ptr %this.addr3268 ret i64 03269}3270 3271 3272define internal spir_func void @Foo81(ptr addrspace(4) %this, i64 %I) align 2 {3273entry:3274 %this.addr = alloca ptr addrspace(4)3275 %I.addr = alloca i643276 store ptr addrspace(4) %this, ptr %this.addr3277 store i64 %I, ptr %I.addr3278 %this1 = load ptr addrspace(4), ptr %this.addr3279 %0 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)3280 %1 = load ptr addrspace(4), ptr addrspace(4) %03281 %Result = getelementptr inbounds nuw %class.anon.15, ptr addrspace(4) %this1, i32 0, i32 13282 %2 = load ptr addrspace(4), ptr addrspace(4) %Result3283 %3 = load i64, ptr addrspace(4) %23284 %call = call spir_func ptr addrspace(4) @Bar72(ptr addrspace(4) %1) 3285 %4 = load i64, ptr %I.addr3286 %conv = trunc i64 %4 to i323287 %call2 = call spir_func i64 @Foo37(ptr addrspace(4) %call, i32 %conv) 3288 %mul = mul i64 %3, %call23289 %Id = getelementptr inbounds nuw %class.anon.15, ptr addrspace(4) %this1, i32 0, i32 23290 %5 = load ptr addrspace(4), ptr addrspace(4) %Id3291 %6 = load i64, ptr %I.addr3292 %conv3 = trunc i64 %6 to i323293 %call4 = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %5, i32 %conv3) 3294 %7 = load i64, ptr addrspace(4) %call43295 %add = add i64 %mul, %73296 %Result5 = getelementptr inbounds nuw %class.anon.15, ptr addrspace(4) %this1, i32 0, i32 13297 %8 = load ptr addrspace(4), ptr addrspace(4) %Result53298 store i64 %add, ptr addrspace(4) %83299 ret void3300}3301 3302 3303define internal spir_func ptr addrspace(4) @Bar72(ptr addrspace(4) %this) {3304entry:3305 %retval = alloca ptr addrspace(4)3306 %this.addr = alloca ptr addrspace(4)3307 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3308 store ptr addrspace(4) %this, ptr %this.addr3309 %this1 = load ptr addrspace(4), ptr %this.addr3310 %impl1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)3311 %MemRange = getelementptr inbounds nuw %"detail::AccessorImplDevice", ptr addrspace(4) %impl1, i32 0, i32 23312 ret ptr addrspace(4) %MemRange3313}3314 3315 3316define internal spir_func i64 @Foo37(ptr addrspace(4) %this, i32 %dimension) {3317entry:3318 %this.addr.i = alloca ptr addrspace(4)3319 %dimension.addr.i = alloca i32, align 43320 %retval = alloca i643321 %this.addr = alloca ptr addrspace(4)3322 %dimension.addr = alloca i32, align 43323 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3324 store ptr addrspace(4) %this, ptr %this.addr3325 store i32 %dimension, ptr %dimension.addr, align 43326 %this1 = load ptr addrspace(4), ptr %this.addr3327 %0 = load i32, ptr %dimension.addr, align 43328 store ptr addrspace(4) %this1, ptr %this.addr.i3329 store i32 %0, ptr %dimension.addr.i, align 43330 %this1.i = load ptr addrspace(4), ptr %this.addr.i3331 %common_array1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)3332 %1 = load i32, ptr %dimension.addr, align 43333 %idxprom = sext i32 %1 to i643334 %arrayidx = getelementptr inbounds [1 x i64], ptr addrspace(4) %common_array1, i64 0, i64 %idxprom3335 %2 = load i64, ptr addrspace(4) %arrayidx3336 ret i64 %23337}3338 3339 3340define internal spir_func void @Foo95(ptr byval(%"tangle_group") %g, i32 %FenceScope, i32 %Order) {3341entry:3342 %FenceScope.addr = alloca i32, align 43343 %Order.addr = alloca i32, align 43344 %g.ascast = addrspacecast ptr %g to ptr addrspace(4)3345 store i32 %FenceScope, ptr %FenceScope.addr, align 43346 store i32 %Order, ptr %Order.addr, align 43347 %0 = load i32, ptr %FenceScope.addr, align 43348 %call = call spir_func i32 @Bar73(i32 %0) 3349 %1 = load i32, ptr %Order.addr, align 43350 %call1 = call spir_func i32 @Bar74(i32 %1) 3351 %or = or i32 %call1, 1283352 %or2 = or i32 %or, 2563353 %or3 = or i32 %or2, 5123354 call spir_func void @_Z21__spirv_MemoryBarrierjj(i32 %call, i32 %or3) 3355 ret void3356}3357 3358 3359define internal spir_func i32 @Bar73(i32 %Scope){3360entry:3361 %retval = alloca i32, align 43362 %Scope.addr = alloca i32, align 43363 store i32 %Scope, ptr %Scope.addr, align 43364 %0 = load i32, ptr %Scope.addr, align 43365 switch i32 %0, label %sw.epilog [3366 i32 0, label %sw.bb3367 i32 1, label %sw.bb13368 i32 2, label %sw.bb23369 i32 3, label %sw.bb33370 i32 4, label %sw.bb43371 ]3372 3373sw.bb4: ; preds = %entry3374 store i32 0, ptr %retval, align 43375 br label %return3376 3377sw.bb3: ; preds = %entry3378 store i32 1, ptr %retval, align 43379 br label %return3380 3381sw.bb2: ; preds = %entry3382 store i32 2, ptr %retval, align 43383 br label %return3384 3385sw.bb1: ; preds = %entry3386 store i32 3, ptr %retval, align 43387 br label %return3388 3389sw.bb: ; preds = %entry3390 store i32 4, ptr %retval, align 43391 br label %return3392 3393return: ; preds = %sw.bb4, %sw.bb3, %sw.bb2, %sw.bb1, %sw.bb3394 %1 = load i32, ptr %retval, align 43395 ret i32 %13396 3397sw.epilog: ; preds = %entry3398 unreachable3399}3400 3401 3402define internal spir_func i32 @Bar74(i32 %Order){3403entry:3404 %retval = alloca i32, align 43405 %Order.addr = alloca i32, align 43406 %SpvOrder = alloca i32, align 43407 %cleanup.dest.slot = alloca i32, align 43408 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3409 store i32 %Order, ptr %Order.addr, align 43410 store i32 0, ptr %SpvOrder, align 43411 %0 = load i32, ptr %Order.addr, align 43412 switch i32 %0, label %sw.epilog [3413 i32 0, label %sw.bb3414 i32 2, label %sw.bb13415 i32 1, label %sw.bb13416 i32 3, label %sw.bb23417 i32 4, label %sw.bb33418 i32 5, label %sw.bb43419 ]3420 3421sw.bb4: ; preds = %entry3422 store i32 16, ptr %SpvOrder, align 43423 br label %sw.epilog3424 3425sw.bb3: ; preds = %entry3426 store i32 8, ptr %SpvOrder, align 43427 br label %sw.epilog3428 3429sw.bb2: ; preds = %entry3430 store i32 4, ptr %SpvOrder, align 43431 br label %sw.epilog3432 3433sw.bb1: ; preds = %entry, %entry3434 store i32 2, ptr %SpvOrder, align 43435 br label %sw.epilog3436 3437sw.bb: ; preds = %entry3438 store i32 0, ptr %SpvOrder, align 43439 br label %sw.epilog3440 3441sw.epilog: ; preds = %sw.bb4, %sw.bb3, %sw.bb2, %sw.bb1, %sw.bb, %entry3442 %1 = load i32, ptr %SpvOrder, align 43443 %or = or i32 %1, 1283444 %or5 = or i32 %or, 2563445 %or6 = or i32 %or5, 5123446 ret i32 %or63447}3448 3449declare dso_local spir_func void @_Z21__spirv_MemoryBarrierjj(i32, i32) 3450 3451 3452define internal spir_func i64 @Foo93(ptr addrspace(4) %this, ptr byval(%"range") %Id) {3453entry:3454 %retval = alloca i643455 %this.addr = alloca ptr addrspace(4)3456 %Result = alloca i643457 %ref.tmp = alloca %class.anon.153458 %cleanup.dest.slot = alloca i32, align 43459 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3460 %Result.ascast = addrspacecast ptr %Result to ptr addrspace(4)3461 %ref.tmp.ascast = addrspacecast ptr %ref.tmp to ptr addrspace(4)3462 store ptr addrspace(4) %this, ptr %this.addr3463 %Id.ascast = addrspacecast ptr %Id to ptr addrspace(4)3464 %this1 = load ptr addrspace(4), ptr %this.addr3465 store i64 0, ptr %Result3466 %0 = bitcast ptr %ref.tmp to ptr3467 store ptr addrspace(4) %this1, ptr %03468 %Result2 = getelementptr inbounds %class.anon.15, ptr %ref.tmp, i32 0, i32 13469 store ptr addrspace(4) %Result.ascast, ptr %Result23470 %Id3 = getelementptr inbounds %class.anon.15, ptr %ref.tmp, i32 0, i32 23471 store ptr addrspace(4) %Id.ascast, ptr %Id33472 call spir_func void @Bar75(ptr addrspace(4) %ref.tmp.ascast) 3473 %1 = load i64, ptr %Result3474 ret i64 %13475}3476 3477 3478define internal spir_func ptr addrspace(1) @Foo94(ptr addrspace(4) %this) {3479entry:3480 %retval = alloca ptr addrspace(1)3481 %this.addr = alloca ptr addrspace(4)3482 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3483 store ptr addrspace(4) %this, ptr %this.addr3484 %this1 = load ptr addrspace(4), ptr %this.addr3485 %0 = getelementptr inbounds nuw %"accessor", ptr addrspace(4) %this1, i32 0, i32 13486 %1 = load ptr addrspace(1), ptr addrspace(4) %03487 ret ptr addrspace(1) %13488}3489 3490 3491define internal spir_func void @Bar75(ptr addrspace(4) %f) {3492entry:3493 %f.addr = alloca ptr addrspace(4)3494 %agg.tmp = alloca %"nd_item", align 13495 store ptr addrspace(4) %f, ptr %f.addr3496 %0 = load ptr addrspace(4), ptr %f.addr3497 call spir_func void @Bar76(ptr byval(%"nd_item") align 1 %agg.tmp, ptr addrspace(4) %0) 3498 ret void3499}3500 3501 3502define internal spir_func void @Bar76(ptr byval(%"nd_item") align 1 %0, ptr addrspace(4) %f) {3503entry:3504 %f.addr = alloca ptr addrspace(4)3505 %ref.tmp = alloca %"nd_item", align 13506 %ref.tmp.ascast = addrspacecast ptr %ref.tmp to ptr addrspace(4)3507 %1 = addrspacecast ptr %0 to ptr addrspace(4)3508 store ptr addrspace(4) %f, ptr %f.addr3509 %2 = load ptr addrspace(4), ptr %f.addr3510 %call = call spir_func i64 @_ZNKSt17integral_constantImLm0EEcvmEv(ptr addrspace(4) align 1 %ref.tmp.ascast) 3511 call spir_func void @Bar767(ptr addrspace(4) %2, i64 %call) 3512 ret void3513}3514 3515 3516define internal spir_func void @Bar767(ptr addrspace(4) %this, i64 %I) align 2 {3517entry:3518 %this.addr = alloca ptr addrspace(4)3519 %I.addr = alloca i643520 store ptr addrspace(4) %this, ptr %this.addr3521 store i64 %I, ptr %I.addr3522 %this1 = load ptr addrspace(4), ptr %this.addr3523 %0 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)3524 %1 = load ptr addrspace(4), ptr addrspace(4) %03525 %Result = getelementptr inbounds nuw %class.anon.15, ptr addrspace(4) %this1, i32 0, i32 13526 %2 = load ptr addrspace(4), ptr addrspace(4) %Result3527 %3 = load i64, ptr addrspace(4) %23528 %call = call spir_func ptr addrspace(4) @Bar78(ptr addrspace(4) %1) 3529 %4 = load i64, ptr %I.addr3530 %conv = trunc i64 %4 to i323531 %call2 = call spir_func i64 @Foo37(ptr addrspace(4) %call, i32 %conv) 3532 %mul = mul i64 %3, %call23533 %Id = getelementptr inbounds nuw %class.anon.15, ptr addrspace(4) %this1, i32 0, i32 23534 %5 = load ptr addrspace(4), ptr addrspace(4) %Id3535 %6 = load i64, ptr %I.addr3536 %conv3 = trunc i64 %6 to i323537 %call4 = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %5, i32 %conv3) 3538 %7 = load i64, ptr addrspace(4) %call43539 %add = add i64 %mul, %73540 %Result5 = getelementptr inbounds nuw %class.anon.15, ptr addrspace(4) %this1, i32 0, i32 13541 %8 = load ptr addrspace(4), ptr addrspace(4) %Result53542 store i64 %add, ptr addrspace(4) %83543 ret void3544}3545 3546 3547define internal spir_func ptr addrspace(4) @Bar78(ptr addrspace(4) %this) {3548entry:3549 %retval = alloca ptr addrspace(4)3550 %this.addr = alloca ptr addrspace(4)3551 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3552 store ptr addrspace(4) %this, ptr %this.addr3553 %this1 = load ptr addrspace(4), ptr %this.addr3554 %impl1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)3555 %MemRange = getelementptr inbounds nuw %"detail::AccessorImplDevice", ptr addrspace(4) %impl1, i32 0, i32 23556 ret ptr addrspace(4) %MemRange3557}3558 3559 3560define internal spir_func void @Foo44(ptr addrspace(4) dead_on_unwind noalias writable sret(%"ss_sub_group_mask") %agg.result, ptr byval(%"nd_item") align 1 %g, i1 zeroext %predicate) {3561entry:3562 %predicate.addr = alloca i8, align 13563 %res = alloca <4 x i32>, align 163564 %val = alloca i643565 %ref.tmp = alloca %"range"3566 %cleanup.dest.slot = alloca i32, align 43567 %ref.tmp.ascast = addrspacecast ptr %ref.tmp to ptr addrspace(4)3568 %g.ascast = addrspacecast ptr %g to ptr addrspace(4)3569 %storedv = zext i1 %predicate to i83570 store i8 %storedv, ptr %predicate.addr, align 13571 %0 = load i8, ptr %predicate.addr, align 1 3572 %loadedv = trunc i8 %0 to i13573 %call = call spir_func <4 x i32> @_Z29__spirv_GroupNonUniformBallotjb(i32 3, i1 zeroext %loadedv) 3574 store <4 x i32> %call, ptr %res, align 163575 %1 = load <4 x i32>, ptr %res, align 163576 %vecext = extractelement <4 x i32> %1, i32 03577 %conv = zext i32 %vecext to i643578 store i64 %conv, ptr %val3579 %2 = load <4 x i32>, ptr %res, align 163580 %vecext1 = extractelement <4 x i32> %2, i32 13581 %conv2 = zext i32 %vecext1 to i643582 %shl = shl i64 %conv2, 323583 %3 = load i64, ptr %val3584 %or = or i64 %3, %shl3585 store i64 %or, ptr %val3586 %4 = load i64, ptr %val3587 call spir_func void @Bar79(ptr addrspace(4) dead_on_unwind writable sret(%"range") %ref.tmp.ascast, ptr addrspace(4) align 1 %g.ascast) 3588 %call3 = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %ref.tmp.ascast, i32 0) 3589 %5 = load i64, ptr addrspace(4) %call33590 call spir_func void @Bar80(ptr addrspace(4) dead_on_unwind writable sret(%"ss_sub_group_mask") %agg.result, i64 %4, i64 %5) 3591 ret void3592}3593 3594 3595define internal spir_func void @Foo45(ptr addrspace(4) %this, ptr byval(%"ss_sub_group_mask") %m) unnamed_addr {3596entry:3597 %this.addr = alloca ptr addrspace(4)3598 store ptr addrspace(4) %this, ptr %this.addr3599 %this1 = load ptr addrspace(4), ptr %this.addr3600 %Mask1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)3601 ret void3602}3603 3604declare dso_local spir_func <4 x i32> @_Z29__spirv_GroupNonUniformBallotjb(i32, i1 zeroext) 3605 3606 3607define internal spir_func void @Bar79(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result, ptr addrspace(4) align 1 %this) {3608entry:3609 %this.addr = alloca ptr addrspace(4)3610 store ptr addrspace(4) %this, ptr %this.addr3611 %this1 = load ptr addrspace(4), ptr %this.addr3612 %call = call spir_func i32 @_Z23__spirv_SubgroupMaxSizev() 3613 %conv = zext i32 %call to i643614 call spir_func void @Foo9(ptr addrspace(4) %agg.result, i64 %conv) 3615 ret void3616}3617 3618 3619define internal spir_func void @Bar80(ptr addrspace(4) dead_on_unwind noalias writable sret(%"ss_sub_group_mask") %agg.result, i64 %Bits, i64 %BitsNum) {3620entry:3621 %Bits.addr = alloca i643622 %BitsNum.addr = alloca i643623 store i64 %Bits, ptr %Bits.addr3624 store i64 %BitsNum, ptr %BitsNum.addr3625 %0 = load i64, ptr %Bits.addr3626 %1 = load i64, ptr %BitsNum.addr3627 call spir_func void @Bar81(ptr addrspace(4) %agg.result, i64 %0, i64 %1) 3628 ret void3629}3630 3631 3632define internal spir_func void @Bar81(ptr addrspace(4) %this, i64 %rhs, i64 %bn) unnamed_addr {3633entry:3634 %this.addr = alloca ptr addrspace(4)3635 %rhs.addr = alloca i643636 %bn.addr = alloca i643637 store ptr addrspace(4) %this, ptr %this.addr3638 store i64 %rhs, ptr %rhs.addr3639 store i64 %bn, ptr %bn.addr3640 %this1 = load ptr addrspace(4), ptr %this.addr3641 %Bits1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)3642 %0 = load i64, ptr %rhs.addr3643 %1 = load i64, ptr %bn.addr3644 %call = call spir_func i64 @Bar58(ptr addrspace(4) %this1, i64 %1) 3645 %and = and i64 %0, %call3646 store i64 %and, ptr addrspace(4) %Bits13647 %bits_num = getelementptr inbounds nuw %"ss_sub_group_mask", ptr addrspace(4) %this1, i32 0, i32 13648 %2 = load i64, ptr %bn.addr3649 store i64 %2, ptr addrspace(4) %bits_num3650 %bits_num2 = getelementptr inbounds nuw %"ss_sub_group_mask", ptr addrspace(4) %this1, i32 0, i32 13651 %3 = load i64, ptr addrspace(4) %bits_num23652 %cmp = icmp ule i64 %3, 643653 %4 = addrspacecast ptr addrspace(1) @.str to ptr addrspace(4)3654 %5 = addrspacecast ptr addrspace(1) @.str.1 to ptr addrspace(4)3655 %6 = addrspacecast ptr addrspace(1) @__PRETTY_FUNCTION1 to ptr addrspace(4)3656 br i1 %cmp, label %cond.end, label %cond.false3657 3658cond.false: ; preds = %entry3659 call spir_func void @__assert_fail(ptr addrspace(4) %4, ptr addrspace(4) %5, i32 324, ptr addrspace(4) %6) 3660 br label %cond.end3661 3662cond.end: ; preds = %entry, %cond.false3663 ret void3664}3665 3666 3667define internal spir_func i32 @_Z23__spirv_SubgroupMaxSizev() {3668entry:3669 %retval = alloca i32, align 43670 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3671 %0 = load i32, ptr addrspace(1) @__spirv_BuiltInSubgroupMaxSize, align 43672 ret i32 %03673}3674 3675 3676define internal spir_func void @Init6(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result) {3677entry:3678 call spir_func void @Inv1(ptr addrspace(4) dead_on_unwind writable sret(%"range") %agg.result) 3679 ret void3680}3681 3682 3683define internal spir_func void @Inv1(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result) {3684entry:3685 %call = call spir_func i64 @Inv2() 3686 call spir_func void @Foo46(ptr addrspace(4) %agg.result, i64 %call) 3687 ret void3688}3689 3690 3691define internal spir_func i64 @Inv2() {3692entry:3693 %retval = alloca i643694 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3695 %call = call spir_func i64 @_Z28__spirv_GlobalInvocationId_xv() 3696 ret i64 %call3697}3698 3699 3700define internal spir_func i64 @_Z28__spirv_GlobalInvocationId_xv() {3701entry:3702 %retval = alloca i643703 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3704 %0 = load <3 x i64>, ptr addrspace(1) @__spirv_BuiltInGlobalInvocationId, align 323705 %1 = extractelement <3 x i64> %0, i64 03706 ret i64 %13707}3708 3709 3710define internal spir_func void @Foo7(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result) {3711entry:3712 call spir_func void @Foo8(ptr addrspace(4) dead_on_unwind writable sret(%"range") %agg.result) 3713 ret void3714}3715 3716 3717define internal spir_func void @Init1(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result) {3718entry:3719 call spir_func void @Inv3(ptr addrspace(4) dead_on_unwind writable sret(%"range") %agg.result) 3720 ret void3721}3722 3723 3724define internal spir_func void @Init2(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result) {3725entry:3726 call spir_func void @InitSize1(ptr addrspace(4) dead_on_unwind writable sret(%"range") %agg.result) 3727 ret void3728}3729 3730 3731define internal spir_func void @Init3(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result) {3732entry:3733 call spir_func void @InitSize2(ptr addrspace(4) dead_on_unwind writable sret(%"range") %agg.result) 3734 ret void3735}3736 3737 3738define internal spir_func void @Init4(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result) {3739entry:3740 call spir_func void @InitSize3(ptr addrspace(4) dead_on_unwind writable sret(%"range") %agg.result) 3741 ret void3742}3743 3744 3745define internal spir_func void @Init5(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result) {3746entry:3747 call spir_func void @InitSize4(ptr addrspace(4) dead_on_unwind writable sret(%"range") %agg.result) 3748 ret void3749}3750 3751 3752define internal spir_func void @Foo23(ptr addrspace(4) dead_on_unwind noalias writable sret(%"group") %agg.result, ptr addrspace(4) %Global, ptr addrspace(4) %Local, ptr addrspace(4) %Group, ptr addrspace(4) %Index) {3753entry:3754 %Global.addr = alloca ptr addrspace(4)3755 %Local.addr = alloca ptr addrspace(4)3756 %Group.addr = alloca ptr addrspace(4)3757 %Index.addr = alloca ptr addrspace(4)3758 %agg.tmp = alloca %"range"3759 store ptr addrspace(4) %Global, ptr %Global.addr3760 store ptr addrspace(4) %Local, ptr %Local.addr3761 store ptr addrspace(4) %Group, ptr %Group.addr3762 store ptr addrspace(4) %Index, ptr %Index.addr3763 %0 = load ptr addrspace(4), ptr %Global.addr3764 %1 = load ptr addrspace(4), ptr %Local.addr3765 %2 = load ptr addrspace(4), ptr %Group.addr3766 %3 = load ptr addrspace(4), ptr %Index.addr3767 call spir_func void @Bar82(ptr addrspace(4) %agg.result, ptr addrspace(4) %0, ptr addrspace(4) %1, ptr byval(%"range") %agg.tmp, ptr addrspace(4) %3) 3768 ret void3769}3770 3771 3772define internal spir_func void @Foo24(ptr addrspace(4) dead_on_unwind noalias writable sret(%"item") %agg.result, ptr addrspace(4) %Extent, ptr addrspace(4) %Index, ptr addrspace(4) %Offset) {3773entry:3774 %Extent.addr = alloca ptr addrspace(4)3775 %Index.addr = alloca ptr addrspace(4)3776 %Offset.addr = alloca ptr addrspace(4)3777 store ptr addrspace(4) %Extent, ptr %Extent.addr3778 store ptr addrspace(4) %Index, ptr %Index.addr3779 store ptr addrspace(4) %Offset, ptr %Offset.addr3780 %0 = load ptr addrspace(4), ptr %Extent.addr3781 %1 = load ptr addrspace(4), ptr %Index.addr3782 %2 = load ptr addrspace(4), ptr %Offset.addr3783 call spir_func void @Foo29(ptr addrspace(4) %agg.result, ptr addrspace(4) %0, ptr addrspace(4) %1, ptr addrspace(4) %2) 3784 ret void3785}3786 3787 3788define internal spir_func void @Foo25(ptr addrspace(4) dead_on_unwind noalias writable sret(%"item.22") %agg.result, ptr addrspace(4) %Extent, ptr addrspace(4) %Index) {3789entry:3790 %Extent.addr = alloca ptr addrspace(4)3791 %Index.addr = alloca ptr addrspace(4)3792 store ptr addrspace(4) %Extent, ptr %Extent.addr3793 store ptr addrspace(4) %Index, ptr %Index.addr3794 %0 = load ptr addrspace(4), ptr %Extent.addr3795 %1 = load ptr addrspace(4), ptr %Index.addr3796 call spir_func void @Foo27(ptr addrspace(4) %agg.result, ptr addrspace(4) %0, ptr addrspace(4) %1) 3797 ret void3798}3799 3800 3801define internal spir_func void @Foo26(ptr addrspace(4) dead_on_unwind noalias writable sret(%"nd_item") align 1 %agg.result, ptr addrspace(4) %Global, ptr addrspace(4) %Local, ptr addrspace(4) %Group) {3802entry:3803 %Global.addr = alloca ptr addrspace(4)3804 %Local.addr = alloca ptr addrspace(4)3805 %Group.addr = alloca ptr addrspace(4)3806 store ptr addrspace(4) %Global, ptr %Global.addr3807 store ptr addrspace(4) %Local, ptr %Local.addr3808 store ptr addrspace(4) %Group, ptr %Group.addr3809 %0 = load ptr addrspace(4), ptr %Global.addr3810 %1 = load ptr addrspace(4), ptr %Local.addr3811 %2 = load ptr addrspace(4), ptr %Group.addr3812 call spir_func void @Foo28(ptr addrspace(4) align 1 %agg.result, ptr addrspace(4) %0, ptr addrspace(4) %1, ptr addrspace(4) %2) 3813 ret void3814}3815 3816 3817define internal spir_func void @Foo28(ptr addrspace(4) align 1 %this, ptr addrspace(4) %0, ptr addrspace(4) %1, ptr addrspace(4) %2) unnamed_addr {3818entry:3819 %this.addr = alloca ptr addrspace(4)3820 %.addr = alloca ptr addrspace(4)3821 %.addr1 = alloca ptr addrspace(4)3822 %.addr2 = alloca ptr addrspace(4)3823 store ptr addrspace(4) %this, ptr %this.addr3824 store ptr addrspace(4) %0, ptr %.addr3825 store ptr addrspace(4) %1, ptr %.addr13826 store ptr addrspace(4) %2, ptr %.addr23827 %this3 = load ptr addrspace(4), ptr %this.addr3828 ret void3829}3830 3831 3832define internal spir_func void @Foo27(ptr addrspace(4) %this, ptr addrspace(4) %extent, ptr addrspace(4) %index) unnamed_addr {3833entry:3834 %this.addr = alloca ptr addrspace(4)3835 %extent.addr = alloca ptr addrspace(4)3836 %index.addr = alloca ptr addrspace(4)3837 store ptr addrspace(4) %this, ptr %this.addr3838 store ptr addrspace(4) %extent, ptr %extent.addr3839 store ptr addrspace(4) %index, ptr %index.addr3840 %this1 = load ptr addrspace(4), ptr %this.addr3841 %MImpl1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)3842 %MExtent2 = bitcast ptr addrspace(4) %MImpl1 to ptr addrspace(4)3843 %0 = load ptr addrspace(4), ptr %extent.addr3844 %MIndex = getelementptr inbounds nuw %"sd_ItemBase.23", ptr addrspace(4) %MImpl1, i32 0, i32 13845 %1 = load ptr addrspace(4), ptr %index.addr3846 ret void3847}3848 3849 3850 3851 3852define internal spir_func void @Foo29(ptr addrspace(4) %this, ptr addrspace(4) %extent, ptr addrspace(4) %index, ptr addrspace(4) %offset) unnamed_addr {3853entry:3854 %this.addr = alloca ptr addrspace(4)3855 %extent.addr = alloca ptr addrspace(4)3856 %index.addr = alloca ptr addrspace(4)3857 %offset.addr = alloca ptr addrspace(4)3858 store ptr addrspace(4) %this, ptr %this.addr3859 store ptr addrspace(4) %extent, ptr %extent.addr3860 store ptr addrspace(4) %index, ptr %index.addr3861 store ptr addrspace(4) %offset, ptr %offset.addr3862 %this1 = load ptr addrspace(4), ptr %this.addr3863 %MImpl1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)3864 %MExtent2 = bitcast ptr addrspace(4) %MImpl1 to ptr addrspace(4)3865 %0 = load ptr addrspace(4), ptr %extent.addr3866 %MIndex = getelementptr inbounds nuw %"detail::AccessorImplDevice", ptr addrspace(4) %MImpl1, i32 0, i32 13867 %1 = load ptr addrspace(4), ptr %index.addr3868 %MOffset = getelementptr inbounds nuw %"detail::AccessorImplDevice", ptr addrspace(4) %MImpl1, i32 0, i32 23869 %2 = load ptr addrspace(4), ptr %offset.addr3870 ret void3871}3872 3873 3874define internal spir_func void @Bar82(ptr addrspace(4) %this, ptr addrspace(4) %G, ptr addrspace(4) %L, ptr byval(%"range") %GroupRange, ptr addrspace(4) %I) unnamed_addr {3875entry:3876 %this.addr = alloca ptr addrspace(4)3877 %G.addr = alloca ptr addrspace(4)3878 %L.addr = alloca ptr addrspace(4)3879 %I.addr = alloca ptr addrspace(4)3880 store ptr addrspace(4) %this, ptr %this.addr3881 store ptr addrspace(4) %G, ptr %G.addr3882 store ptr addrspace(4) %L, ptr %L.addr3883 store ptr addrspace(4) %I, ptr %I.addr3884 %this1 = load ptr addrspace(4), ptr %this.addr3885 %globalRange1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)3886 %0 = load ptr addrspace(4), ptr %G.addr3887 %localRange = getelementptr inbounds nuw %"group", ptr addrspace(4) %this1, i32 0, i32 13888 %1 = load ptr addrspace(4), ptr %L.addr3889 %groupRange = getelementptr inbounds nuw %"group", ptr addrspace(4) %this1, i32 0, i32 23890 %index = getelementptr inbounds nuw %"group", ptr addrspace(4) %this1, i32 0, i32 33891 %2 = load ptr addrspace(4), ptr %I.addr3892 ret void3893}3894 3895 3896define internal spir_func void @InitSize4(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result) {3897entry:3898 %call = call spir_func i64 @_ZN7__spirv15getGlobalOffsetILi0EEEmv() 3899 call spir_func void @Foo46(ptr addrspace(4) %agg.result, i64 %call) 3900 ret void3901}3902 3903 3904define internal spir_func i64 @_ZN7__spirv15getGlobalOffsetILi0EEEmv() {3905entry:3906 %retval = alloca i643907 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3908 %call = call spir_func i64 @_Z22__spirv_GlobalOffset_xv() 3909 ret i64 %call3910}3911 3912 3913define internal spir_func i64 @_Z22__spirv_GlobalOffset_xv() {3914entry:3915 %retval = alloca i643916 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3917 %0 = load <3 x i64>, ptr addrspace(1) @__spirv_BuiltInGlobalOffset, align 323918 %1 = extractelement <3 x i64> %0, i64 03919 ret i64 %13920}3921 3922 3923define internal spir_func void @InitSize3(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result) {3924entry:3925 %call = call spir_func i64 @_ZN7__spirv20getLocalInvocationIdILi0EEEmv() 3926 call spir_func void @Foo46(ptr addrspace(4) %agg.result, i64 %call) 3927 ret void3928}3929 3930 3931define internal spir_func i64 @_ZN7__spirv20getLocalInvocationIdILi0EEEmv() {3932entry:3933 %retval = alloca i643934 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3935 %call = call spir_func i64 @_Z27__spirv_LocalInvocationId_xv() 3936 ret i64 %call3937}3938 3939 3940define internal spir_func i64 @_Z27__spirv_LocalInvocationId_xv() {3941entry:3942 %retval = alloca i643943 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3944 %0 = load <3 x i64>, ptr addrspace(1) @__spirv_BuiltInLocalInvocationId, align 323945 %1 = extractelement <3 x i64> %0, i64 03946 ret i64 %13947}3948 3949 3950define internal spir_func void @InitSize2(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result) {3951entry:3952 %call = call spir_func i64 @_ZN7__spirv14getWorkgroupIdILi0EEEmv() 3953 call spir_func void @Foo46(ptr addrspace(4) %agg.result, i64 %call) 3954 ret void3955}3956 3957 3958define internal spir_func i64 @_ZN7__spirv14getWorkgroupIdILi0EEEmv() {3959entry:3960 %retval = alloca i643961 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3962 %call = call spir_func i64 @_Z21__spirv_WorkgroupId_xv() 3963 ret i64 %call3964}3965 3966 3967define internal spir_func i64 @_Z21__spirv_WorkgroupId_xv() {3968entry:3969 %retval = alloca i643970 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3971 %0 = load <3 x i64>, ptr addrspace(1) @__spirv_BuiltInWorkgroupId, align 323972 %1 = extractelement <3 x i64> %0, i64 03973 ret i64 %13974}3975 3976 3977define internal spir_func void @InitSize1(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result) {3978entry:3979 %call = call spir_func i64 @_ZN7__spirv16getNumWorkgroupsILi0EEEmv() 3980 call spir_func void @Foo9(ptr addrspace(4) %agg.result, i64 %call) 3981 ret void3982}3983 3984 3985define internal spir_func i64 @_ZN7__spirv16getNumWorkgroupsILi0EEEmv() {3986entry:3987 %retval = alloca i643988 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3989 %call = call spir_func i64 @_Z23__spirv_NumWorkgroups_xv() 3990 ret i64 %call3991}3992 3993 3994define internal spir_func i64 @_Z23__spirv_NumWorkgroups_xv() {3995entry:3996 %retval = alloca i643997 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)3998 %0 = load <3 x i64>, ptr addrspace(1) @__spirv_BuiltInNumWorkgroups, align 323999 %1 = extractelement <3 x i64> %0, i64 04000 ret i64 %14001}4002 4003 4004define internal spir_func void @Inv3(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result) {4005entry:4006 %call = call spir_func i64 @_ZN7__spirv16getWorkgroupSizeILi0EEEmv() 4007 call spir_func void @Foo9(ptr addrspace(4) %agg.result, i64 %call) 4008 ret void4009}4010 4011 4012define internal spir_func i64 @_ZN7__spirv16getWorkgroupSizeILi0EEEmv() {4013entry:4014 %retval = alloca i644015 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)4016 %call = call spir_func i64 @_Z23__spirv_WorkgroupSize_xv() 4017 ret i64 %call4018}4019 4020 4021define internal spir_func i64 @_Z23__spirv_WorkgroupSize_xv() {4022entry:4023 %retval = alloca i644024 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)4025 %0 = load <3 x i64>, ptr addrspace(1) @__spirv_BuiltInWorkgroupSize, align 324026 %1 = extractelement <3 x i64> %0, i64 04027 ret i64 %14028}4029 4030 4031define internal spir_func void @Foo8(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result) {4032entry:4033 %call = call spir_func i64 @_ZN7__spirv13getGlobalSizeILi0EEEmv() 4034 call spir_func void @Foo9(ptr addrspace(4) %agg.result, i64 %call) 4035 ret void4036}4037 4038 4039define internal spir_func i64 @_ZN7__spirv13getGlobalSizeILi0EEEmv() {4040entry:4041 %retval = alloca i644042 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)4043 %call = call spir_func i64 @_Z20__spirv_GlobalSize_xv() 4044 ret i64 %call4045}4046 4047 4048define internal spir_func i64 @_Z20__spirv_GlobalSize_xv() {4049entry:4050 %retval = alloca i644051 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)4052 %0 = load <3 x i64>, ptr addrspace(1) @__spirv_BuiltInGlobalSize, align 324053 %1 = extractelement <3 x i64> %0, i64 04054 ret i64 %14055}4056 4057 4058define internal spir_func void @Foo30(ptr addrspace(4) %f) {4059entry:4060 %f.addr = alloca ptr addrspace(4)4061 %agg.tmp = alloca %"nd_item", align 14062 store ptr addrspace(4) %f, ptr %f.addr4063 %0 = load ptr addrspace(4), ptr %f.addr4064 call spir_func void @Foo33(ptr byval(%"nd_item") align 1 %agg.tmp, ptr addrspace(4) %0) 4065 ret void4066}4067 4068 4069define internal spir_func i64 @Foo32(ptr addrspace(4) %this) {4070entry:4071 %retval = alloca i644072 %this.addr = alloca ptr addrspace(4)4073 %TotalOffset = alloca i644074 %ref.tmp = alloca %class.anon.74075 %cleanup.dest.slot = alloca i32, align 44076 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)4077 %TotalOffset.ascast = addrspacecast ptr %TotalOffset to ptr addrspace(4)4078 %ref.tmp.ascast = addrspacecast ptr %ref.tmp to ptr addrspace(4)4079 store ptr addrspace(4) %this, ptr %this.addr4080 %this1 = load ptr addrspace(4), ptr %this.addr4081 store i64 0, ptr %TotalOffset4082 %0 = bitcast ptr %ref.tmp to ptr4083 store ptr addrspace(4) %this1, ptr %04084 %TotalOffset2 = getelementptr inbounds %class.anon.7, ptr %ref.tmp, i32 0, i32 14085 store ptr addrspace(4) %TotalOffset.ascast, ptr %TotalOffset24086 call spir_func void @Foo34(ptr addrspace(4) %ref.tmp.ascast) 4087 %1 = load i64, ptr %TotalOffset4088 ret i64 %14089}4090 4091 4092define internal spir_func void @Foo34(ptr addrspace(4) %f) {4093entry:4094 %f.addr = alloca ptr addrspace(4)4095 %agg.tmp = alloca %"nd_item", align 14096 store ptr addrspace(4) %f, ptr %f.addr4097 %0 = load ptr addrspace(4), ptr %f.addr4098 call spir_func void @Foo35(ptr byval(%"nd_item") align 1 %agg.tmp, ptr addrspace(4) %0) 4099 ret void4100}4101 4102 4103define internal spir_func void @Foo35(ptr byval(%"nd_item") align 1 %0, ptr addrspace(4) %f) {4104entry:4105 %f.addr = alloca ptr addrspace(4)4106 %ref.tmp = alloca %"nd_item", align 14107 %ref.tmp.ascast = addrspacecast ptr %ref.tmp to ptr addrspace(4)4108 %1 = addrspacecast ptr %0 to ptr addrspace(4)4109 store ptr addrspace(4) %f, ptr %f.addr4110 %2 = load ptr addrspace(4), ptr %f.addr4111 %call = call spir_func i64 @_ZNKSt17integral_constantImLm0EEcvmEv(ptr addrspace(4) align 1 %ref.tmp.ascast) 4112 call spir_func void @Foo36(ptr addrspace(4) %2, i64 %call) 4113 ret void4114}4115 4116 4117define internal spir_func void @Foo36(ptr addrspace(4) %this, i64 %I) align 2 {4118entry:4119 %this.addr = alloca ptr addrspace(4)4120 %I.addr = alloca i644121 store ptr addrspace(4) %this, ptr %this.addr4122 store i64 %I, ptr %I.addr4123 %this1 = load ptr addrspace(4), ptr %this.addr4124 %0 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)4125 %1 = load ptr addrspace(4), ptr addrspace(4) %04126 %TotalOffset = getelementptr inbounds nuw %class.anon.7, ptr addrspace(4) %this1, i32 0, i32 14127 %2 = load ptr addrspace(4), ptr addrspace(4) %TotalOffset4128 %3 = load i64, ptr addrspace(4) %24129 %impl1 = bitcast ptr addrspace(4) %1 to ptr addrspace(4)4130 %MemRange = getelementptr inbounds nuw %"detail::AccessorImplDevice", ptr addrspace(4) %impl1, i32 0, i32 24131 %4 = load i64, ptr %I.addr4132 %conv = trunc i64 %4 to i324133 %call = call spir_func i64 @Foo37(ptr addrspace(4) %MemRange, i32 %conv) 4134 %mul = mul i64 %3, %call4135 %TotalOffset2 = getelementptr inbounds nuw %class.anon.7, ptr addrspace(4) %this1, i32 0, i32 14136 %5 = load ptr addrspace(4), ptr addrspace(4) %TotalOffset24137 store i64 %mul, ptr addrspace(4) %54138 %impl32 = bitcast ptr addrspace(4) %1 to ptr addrspace(4)4139 %Offset3 = bitcast ptr addrspace(4) %impl32 to ptr addrspace(4)4140 %6 = load i64, ptr %I.addr4141 %conv4 = trunc i64 %6 to i324142 %call5 = call spir_func i64 @Foo37(ptr addrspace(4) %Offset3, i32 %conv4) 4143 %TotalOffset6 = getelementptr inbounds nuw %class.anon.7, ptr addrspace(4) %this1, i32 0, i32 14144 %7 = load ptr addrspace(4), ptr addrspace(4) %TotalOffset64145 %8 = load i64, ptr addrspace(4) %74146 %add = add i64 %8, %call54147 store i64 %add, ptr addrspace(4) %74148 ret void4149}4150 4151 4152define internal spir_func void @Foo33(ptr byval(%"nd_item") align 1 %0, ptr addrspace(4) %f) {4153entry:4154 %f.addr = alloca ptr addrspace(4)4155 %ref.tmp = alloca %"nd_item", align 14156 %ref.tmp.ascast = addrspacecast ptr %ref.tmp to ptr addrspace(4)4157 %1 = addrspacecast ptr %0 to ptr addrspace(4)4158 store ptr addrspace(4) %f, ptr %f.addr4159 %2 = load ptr addrspace(4), ptr %f.addr4160 %call = call spir_func i64 @_ZNKSt17integral_constantImLm0EEcvmEv(ptr addrspace(4) align 1 %ref.tmp.ascast) 4161 call spir_func void @Foo38(ptr addrspace(4) %2, i64 %call) 4162 ret void4163}4164 4165 4166define internal spir_func void @Foo38(ptr addrspace(4) %this, i64 %I) align 2 {4167entry:4168 %this.addr = alloca ptr addrspace(4)4169 %I.addr = alloca i644170 store ptr addrspace(4) %this, ptr %this.addr4171 store i64 %I, ptr %I.addr4172 %this1 = load ptr addrspace(4), ptr %this.addr4173 %0 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)4174 %1 = load ptr addrspace(4), ptr addrspace(4) %04175 %Offset = getelementptr inbounds nuw %class.anon.6, ptr addrspace(4) %this1, i32 0, i32 14176 %2 = load ptr addrspace(4), ptr addrspace(4) %Offset4177 %3 = load i64, ptr %I.addr4178 %conv = trunc i64 %3 to i324179 %call = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %2, i32 %conv) 4180 %4 = load i64, ptr addrspace(4) %call4181 %call2 = call spir_func ptr addrspace(4) @Foo39(ptr addrspace(4) %1) 4182 %5 = load i64, ptr %I.addr4183 %conv3 = trunc i64 %5 to i324184 %call4 = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %call2, i32 %conv3) 4185 store i64 %4, ptr addrspace(4) %call44186 %AccessRange = getelementptr inbounds nuw %class.anon.6, ptr addrspace(4) %this1, i32 0, i32 24187 %6 = load ptr addrspace(4), ptr addrspace(4) %AccessRange4188 %7 = load i64, ptr %I.addr4189 %conv5 = trunc i64 %7 to i324190 %call6 = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %6, i32 %conv5) 4191 %8 = load i64, ptr addrspace(4) %call64192 %call7 = call spir_func ptr addrspace(4) @Foo40A(ptr addrspace(4) %1) 4193 %9 = load i64, ptr %I.addr4194 %conv8 = trunc i64 %9 to i324195 %call9 = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %call7, i32 %conv8) 4196 store i64 %8, ptr addrspace(4) %call94197 %MemRange = getelementptr inbounds nuw %class.anon.6, ptr addrspace(4) %this1, i32 0, i32 34198 %10 = load ptr addrspace(4), ptr addrspace(4) %MemRange4199 %11 = load i64, ptr %I.addr4200 %conv10 = trunc i64 %11 to i324201 %call11 = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %10, i32 %conv10) 4202 %12 = load i64, ptr addrspace(4) %call114203 %call12 = call spir_func ptr addrspace(4) @Foo41A(ptr addrspace(4) %1) 4204 %13 = load i64, ptr %I.addr4205 %conv13 = trunc i64 %13 to i324206 %call14 = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %call12, i32 %conv13) 4207 store i64 %12, ptr addrspace(4) %call144208 ret void4209}4210 4211 4212define internal spir_func ptr addrspace(4) @Foo39(ptr addrspace(4) %this) {4213entry:4214 %retval = alloca ptr addrspace(4)4215 %this.addr = alloca ptr addrspace(4)4216 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)4217 store ptr addrspace(4) %this, ptr %this.addr4218 %this1 = load ptr addrspace(4), ptr %this.addr4219 %impl1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)4220 %Offset2 = bitcast ptr addrspace(4) %impl1 to ptr addrspace(4)4221 ret ptr addrspace(4) %Offset24222}4223 4224 4225define internal spir_func ptr addrspace(4) @Foo40A(ptr addrspace(4) %this) {4226entry:4227 %retval = alloca ptr addrspace(4)4228 %this.addr = alloca ptr addrspace(4)4229 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)4230 store ptr addrspace(4) %this, ptr %this.addr4231 %this1 = load ptr addrspace(4), ptr %this.addr4232 %impl1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)4233 %AccessRange = getelementptr inbounds nuw %"detail::AccessorImplDevice", ptr addrspace(4) %impl1, i32 0, i32 14234 ret ptr addrspace(4) %AccessRange4235}4236 4237 4238define internal spir_func ptr addrspace(4) @Foo41A(ptr addrspace(4) %this) {4239entry:4240 %retval = alloca ptr addrspace(4)4241 %this.addr = alloca ptr addrspace(4)4242 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)4243 store ptr addrspace(4) %this, ptr %this.addr4244 %this1 = load ptr addrspace(4), ptr %this.addr4245 %impl1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)4246 %MemRange = getelementptr inbounds nuw %"detail::AccessorImplDevice", ptr addrspace(4) %impl1, i32 0, i32 24247 ret ptr addrspace(4) %MemRange4248}4249 4250 4251define internal spir_func void @Foo13(ptr addrspace(4) %f) {4252entry:4253 %f.addr = alloca ptr addrspace(4)4254 %agg.tmp = alloca %"nd_item", align 14255 store ptr addrspace(4) %f, ptr %f.addr4256 %0 = load ptr addrspace(4), ptr %f.addr4257 call spir_func void @Foo14(ptr byval(%"nd_item") align 1 %agg.tmp, ptr addrspace(4) %0) 4258 ret void4259}4260 4261 4262define internal spir_func i64 @Foo21(ptr addrspace(4) %this) {4263entry:4264 %retval = alloca i644265 %this.addr = alloca ptr addrspace(4)4266 %TotalOffset = alloca i644267 %ref.tmp = alloca %class.anon.74268 %cleanup.dest.slot = alloca i32, align 44269 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)4270 %TotalOffset.ascast = addrspacecast ptr %TotalOffset to ptr addrspace(4)4271 %ref.tmp.ascast = addrspacecast ptr %ref.tmp to ptr addrspace(4)4272 store ptr addrspace(4) %this, ptr %this.addr4273 %this1 = load ptr addrspace(4), ptr %this.addr4274 store i64 0, ptr %TotalOffset4275 %0 = bitcast ptr %ref.tmp to ptr4276 store ptr addrspace(4) %this1, ptr %04277 %TotalOffset2 = getelementptr inbounds %class.anon.7, ptr %ref.tmp, i32 0, i32 14278 store ptr addrspace(4) %TotalOffset.ascast, ptr %TotalOffset24279 call spir_func void @Bar83(ptr addrspace(4) %ref.tmp.ascast) 4280 %1 = load i64, ptr %TotalOffset4281 ret i64 %14282}4283 4284 4285define internal spir_func void @Bar83(ptr addrspace(4) %f) {4286entry:4287 %f.addr = alloca ptr addrspace(4)4288 %agg.tmp = alloca %"nd_item", align 14289 store ptr addrspace(4) %f, ptr %f.addr4290 %0 = load ptr addrspace(4), ptr %f.addr4291 call spir_func void @Bar84(ptr byval(%"nd_item") align 1 %agg.tmp, ptr addrspace(4) %0) 4292 ret void4293}4294 4295 4296define internal spir_func void @Bar84(ptr byval(%"nd_item") align 1 %0, ptr addrspace(4) %f) {4297entry:4298 %f.addr = alloca ptr addrspace(4)4299 %ref.tmp = alloca %"nd_item", align 14300 %ref.tmp.ascast = addrspacecast ptr %ref.tmp to ptr addrspace(4)4301 %1 = addrspacecast ptr %0 to ptr addrspace(4)4302 store ptr addrspace(4) %f, ptr %f.addr4303 %2 = load ptr addrspace(4), ptr %f.addr4304 %call = call spir_func i64 @_ZNKSt17integral_constantImLm0EEcvmEv(ptr addrspace(4) align 1 %ref.tmp.ascast) 4305 call spir_func void @Bar85(ptr addrspace(4) %2, i64 %call) 4306 ret void4307}4308 4309 4310define internal spir_func void @Bar85(ptr addrspace(4) %this, i64 %I) align 2 {4311entry:4312 %this.addr = alloca ptr addrspace(4)4313 %I.addr = alloca i644314 store ptr addrspace(4) %this, ptr %this.addr4315 store i64 %I, ptr %I.addr4316 %this1 = load ptr addrspace(4), ptr %this.addr4317 %0 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)4318 %1 = load ptr addrspace(4), ptr addrspace(4) %04319 %TotalOffset = getelementptr inbounds nuw %class.anon.7, ptr addrspace(4) %this1, i32 0, i32 14320 %2 = load ptr addrspace(4), ptr addrspace(4) %TotalOffset4321 %3 = load i64, ptr addrspace(4) %24322 %impl1 = bitcast ptr addrspace(4) %1 to ptr addrspace(4)4323 %MemRange = getelementptr inbounds nuw %"detail::AccessorImplDevice", ptr addrspace(4) %impl1, i32 0, i32 24324 %4 = load i64, ptr %I.addr4325 %conv = trunc i64 %4 to i324326 %call = call spir_func i64 @Foo37(ptr addrspace(4) %MemRange, i32 %conv) 4327 %mul = mul i64 %3, %call4328 %TotalOffset2 = getelementptr inbounds nuw %class.anon.7, ptr addrspace(4) %this1, i32 0, i32 14329 %5 = load ptr addrspace(4), ptr addrspace(4) %TotalOffset24330 store i64 %mul, ptr addrspace(4) %54331 %impl32 = bitcast ptr addrspace(4) %1 to ptr addrspace(4)4332 %Offset3 = bitcast ptr addrspace(4) %impl32 to ptr addrspace(4)4333 %6 = load i64, ptr %I.addr4334 %conv4 = trunc i64 %6 to i324335 %call5 = call spir_func i64 @Foo37(ptr addrspace(4) %Offset3, i32 %conv4) 4336 %TotalOffset6 = getelementptr inbounds nuw %class.anon.7, ptr addrspace(4) %this1, i32 0, i32 14337 %7 = load ptr addrspace(4), ptr addrspace(4) %TotalOffset64338 %8 = load i64, ptr addrspace(4) %74339 %add = add i64 %8, %call54340 store i64 %add, ptr addrspace(4) %74341 ret void4342}4343 4344 4345define internal spir_func void @Foo14(ptr byval(%"nd_item") align 1 %0, ptr addrspace(4) %f) {4346entry:4347 %f.addr = alloca ptr addrspace(4)4348 %ref.tmp = alloca %"nd_item", align 14349 %ref.tmp.ascast = addrspacecast ptr %ref.tmp to ptr addrspace(4)4350 %1 = addrspacecast ptr %0 to ptr addrspace(4)4351 store ptr addrspace(4) %f, ptr %f.addr4352 %2 = load ptr addrspace(4), ptr %f.addr4353 %call = call spir_func i64 @_ZNKSt17integral_constantImLm0EEcvmEv(ptr addrspace(4) align 1 %ref.tmp.ascast) 4354 call spir_func void @Foo15(ptr addrspace(4) %2, i64 %call) 4355 ret void4356}4357 4358 4359define internal spir_func void @Foo15(ptr addrspace(4) %this, i64 %I) align 2 {4360entry:4361 %this.addr = alloca ptr addrspace(4)4362 %I.addr = alloca i644363 store ptr addrspace(4) %this, ptr %this.addr4364 store i64 %I, ptr %I.addr4365 %this1 = load ptr addrspace(4), ptr %this.addr4366 %0 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)4367 %1 = load ptr addrspace(4), ptr addrspace(4) %04368 %Offset = getelementptr inbounds nuw %class.anon.6, ptr addrspace(4) %this1, i32 0, i32 14369 %2 = load ptr addrspace(4), ptr addrspace(4) %Offset4370 %3 = load i64, ptr %I.addr4371 %conv = trunc i64 %3 to i324372 %call = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %2, i32 %conv) 4373 %4 = load i64, ptr addrspace(4) %call4374 %call2 = call spir_func ptr addrspace(4) @Foo17(ptr addrspace(4) %1) 4375 %5 = load i64, ptr %I.addr4376 %conv3 = trunc i64 %5 to i324377 %call4 = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %call2, i32 %conv3) 4378 store i64 %4, ptr addrspace(4) %call44379 %AccessRange = getelementptr inbounds nuw %class.anon.6, ptr addrspace(4) %this1, i32 0, i32 24380 %6 = load ptr addrspace(4), ptr addrspace(4) %AccessRange4381 %7 = load i64, ptr %I.addr4382 %conv5 = trunc i64 %7 to i324383 %call6 = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %6, i32 %conv5) 4384 %8 = load i64, ptr addrspace(4) %call64385 %call7 = call spir_func ptr addrspace(4) @Foo18(ptr addrspace(4) %1) 4386 %9 = load i64, ptr %I.addr4387 %conv8 = trunc i64 %9 to i324388 %call9 = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %call7, i32 %conv8) 4389 store i64 %8, ptr addrspace(4) %call94390 %MemRange = getelementptr inbounds nuw %class.anon.6, ptr addrspace(4) %this1, i32 0, i32 34391 %10 = load ptr addrspace(4), ptr addrspace(4) %MemRange4392 %11 = load i64, ptr %I.addr4393 %conv10 = trunc i64 %11 to i324394 %call11 = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %10, i32 %conv10) 4395 %12 = load i64, ptr addrspace(4) %call114396 %call12 = call spir_func ptr addrspace(4) @Foo19(ptr addrspace(4) %1) 4397 %13 = load i64, ptr %I.addr4398 %conv13 = trunc i64 %13 to i324399 %call14 = call spir_func ptr addrspace(4) @Foo16(ptr addrspace(4) %call12, i32 %conv13) 4400 store i64 %12, ptr addrspace(4) %call144401 ret void4402}4403 4404 4405define internal spir_func ptr addrspace(4) @Foo17(ptr addrspace(4) %this) {4406entry:4407 %retval = alloca ptr addrspace(4)4408 %this.addr = alloca ptr addrspace(4)4409 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)4410 store ptr addrspace(4) %this, ptr %this.addr4411 %this1 = load ptr addrspace(4), ptr %this.addr4412 %impl1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)4413 %Offset2 = bitcast ptr addrspace(4) %impl1 to ptr addrspace(4)4414 ret ptr addrspace(4) %Offset24415}4416 4417 4418define internal spir_func ptr addrspace(4) @Foo18(ptr addrspace(4) %this) {4419entry:4420 %retval = alloca ptr addrspace(4)4421 %this.addr = alloca ptr addrspace(4)4422 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)4423 store ptr addrspace(4) %this, ptr %this.addr4424 %this1 = load ptr addrspace(4), ptr %this.addr4425 %impl1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)4426 %AccessRange = getelementptr inbounds nuw %"detail::AccessorImplDevice", ptr addrspace(4) %impl1, i32 0, i32 14427 ret ptr addrspace(4) %AccessRange4428}4429 4430 4431define internal spir_func ptr addrspace(4) @Foo19(ptr addrspace(4) %this) {4432entry:4433 %retval = alloca ptr addrspace(4)4434 %this.addr = alloca ptr addrspace(4)4435 %retval.ascast = addrspacecast ptr %retval to ptr addrspace(4)4436 store ptr addrspace(4) %this, ptr %this.addr4437 %this1 = load ptr addrspace(4), ptr %this.addr4438 %impl1 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)4439 %MemRange = getelementptr inbounds nuw %"detail::AccessorImplDevice", ptr addrspace(4) %impl1, i32 0, i32 24440 ret ptr addrspace(4) %MemRange4441}4442 4443 4444declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) 4445 4446 4447define internal spir_func void @Foo12(ptr addrspace(4) dead_on_unwind noalias writable sret(%"range") %agg.result) {4448entry:4449 call spir_func void @Foo9(ptr addrspace(4) %agg.result, i64 0) 4450 ret void4451}4452 4453 4454define internal spir_func void @Foo10(ptr addrspace(4) %this, ptr byval(%"range") %Offset, ptr byval(%"range") %AccessRange, ptr byval(%"range") %MemoryRange) unnamed_addr {4455entry:4456 %this.addr = alloca ptr addrspace(4)4457 store ptr addrspace(4) %this, ptr %this.addr4458 %this1 = load ptr addrspace(4), ptr %this.addr4459 %Offset21 = bitcast ptr addrspace(4) %this1 to ptr addrspace(4)4460 %AccessRange3 = getelementptr inbounds nuw %"detail::AccessorImplDevice", ptr addrspace(4) %this1, i32 0, i32 14461 %MemRange = getelementptr inbounds nuw %"detail::AccessorImplDevice", ptr addrspace(4) %this1, i32 0, i32 24462 ret void4463}4464 4465 4466define internal spir_func void @__assert_fail(ptr addrspace(4) %expr, ptr addrspace(4) %file, i32 %line, ptr addrspace(4) %func) {4467entry:4468 %call = tail call spir_func i64 @_Z28__spirv_GlobalInvocationId_xv() 4469 %call1 = tail call spir_func i64 @_Z28__spirv_GlobalInvocationId_yv() 4470 %call2 = tail call spir_func i64 @_Z28__spirv_GlobalInvocationId_zv() 4471 %call3 = tail call spir_func i64 @_Z27__spirv_LocalInvocationId_xv() 4472 %call4 = tail call spir_func i64 @_Z27__spirv_LocalInvocationId_yv() 4473 %call5 = tail call spir_func i64 @_Z27__spirv_LocalInvocationId_zv() 4474 tail call spir_func void @__devicelib_assert_fail(ptr addrspace(4) %expr, ptr addrspace(4) %file, i32 %line, ptr addrspace(4) %func, i64 %call, i64 %call1, i64 %call2, i64 %call3, i64 %call4, i64 %call5) 4475 ret void4476}4477 4478 4479define internal spir_func i64 @_Z28__spirv_GlobalInvocationId_yv() local_unnamed_addr {4480entry:4481 %0 = getelementptr inbounds i8, ptr addrspace(1) @__spirv_BuiltInGlobalInvocationId, i64 84482 %1 = load i64, ptr addrspace(1) %04483 ret i64 %14484}4485 4486 4487define internal spir_func i64 @_Z28__spirv_GlobalInvocationId_zv() local_unnamed_addr {4488entry:4489 %0 = getelementptr inbounds i8, ptr addrspace(1) @__spirv_BuiltInGlobalInvocationId, i64 164490 %1 = load i64, ptr addrspace(1) %0, align 164491 ret i64 %14492}4493 4494 4495define internal spir_func i64 @_Z27__spirv_LocalInvocationId_yv() local_unnamed_addr {4496entry:4497 %0 = getelementptr inbounds i8, ptr addrspace(1) @__spirv_BuiltInLocalInvocationId, i64 84498 %1 = load i64, ptr addrspace(1) %04499 ret i64 %14500}4501 4502 4503define internal spir_func i64 @_Z27__spirv_LocalInvocationId_zv() local_unnamed_addr {4504entry:4505 %0 = getelementptr inbounds i8, ptr addrspace(1) @__spirv_BuiltInLocalInvocationId, i64 164506 %1 = load i64, ptr addrspace(1) %0, align 164507 ret i64 %14508}4509 4510 4511define internal spir_func void @__devicelib_assert_fail(ptr addrspace(4) %expr, ptr addrspace(4) %file, i32 %line, ptr addrspace(4) %func, i64 %gid0, i64 %gid1, i64 %gid2, i64 %lid0, i64 %lid1, i64 %lid2) local_unnamed_addr {4512entry:4513 %call.i = tail call spir_func i32 @_Z29__spirv_AtomicCompareExchangePU3AS1iN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagES5_ii(ptr addrspace(1) @SPIR_AssertHappenedMem, i32 1, i32 16, i32 16, i32 1, i32 0) 4514 %cmp = icmp eq i32 %call.i, 04515 %0 = getelementptr inbounds nuw i8, ptr addrspace(1) @SPIR_AssertHappenedMem, i64 44516 %1 = getelementptr inbounds nuw i8, ptr addrspace(1) @SPIR_AssertHappenedMem, i64 2614517 %2 = getelementptr inbounds nuw i8, ptr addrspace(1) @SPIR_AssertHappenedMem, i64 5184518 br i1 %cmp, label %if.then, label %if.end824519 4520if.then: ; preds = %entry4521 store i32 %line, ptr addrspace(1) getelementptr inbounds (i8, ptr addrspace(1) @SPIR_AssertHappenedMem, i64 648)4522 store i64 %gid0, ptr addrspace(1) getelementptr inbounds (i8, ptr addrspace(1) @SPIR_AssertHappenedMem, i64 656)4523 store i64 %gid1, ptr addrspace(1) getelementptr inbounds (i8, ptr addrspace(1) @SPIR_AssertHappenedMem, i64 664)4524 store i64 %gid2, ptr addrspace(1) getelementptr inbounds (i8, ptr addrspace(1) @SPIR_AssertHappenedMem, i64 672)4525 store i64 %lid0, ptr addrspace(1) getelementptr inbounds (i8, ptr addrspace(1) @SPIR_AssertHappenedMem, i64 680)4526 store i64 %lid1, ptr addrspace(1) getelementptr inbounds (i8, ptr addrspace(1) @SPIR_AssertHappenedMem, i64 688)4527 store i64 %lid2, ptr addrspace(1) getelementptr inbounds (i8, ptr addrspace(1) @SPIR_AssertHappenedMem, i64 696)4528 %tobool.not = icmp eq ptr addrspace(4) %expr, null4529 br i1 %tobool.not, label %if.end, label %for.cond.preheader4530 4531for.cond.preheader: ; preds = %if.then4532 br label %for.cond4533 4534for.cond: ; preds = %for.cond.preheader, %for.inc4535 %ExprLength.0 = phi i32 [ %inc, %for.inc ], [ 0, %for.cond.preheader ]4536 %C.0 = phi ptr addrspace(4) [ %incdec.ptr, %for.inc ], [ %expr, %for.cond.preheader ]4537 %3 = load i8, ptr addrspace(4) %C.0, align 14538 %cmp2.not = icmp eq i8 %3, 04539 br i1 %cmp2.not, label %if.end, label %for.inc4540 4541for.inc: ; preds = %for.cond4542 %incdec.ptr = getelementptr inbounds nuw i8, ptr addrspace(4) %C.0, i64 14543 %inc = add nuw nsw i32 %ExprLength.0, 14544 br label %for.cond4545 4546if.end: ; preds = %for.cond, %if.then4547 %ExprLength.1 = phi i32 [ 0, %if.then ], [ %ExprLength.0, %for.cond ]4548 %tobool3.not = icmp eq ptr addrspace(4) %file, null4549 br i1 %tobool3.not, label %if.end16, label %for.cond6.preheader4550 4551for.cond6.preheader: ; preds = %if.end4552 br label %for.cond64553 4554for.cond6: ; preds = %for.cond6.preheader, %for.inc124555 %FileLength.0 = phi i32 [ %inc14, %for.inc12 ], [ 0, %for.cond6.preheader ]4556 %C5.0 = phi ptr addrspace(4) [ %incdec.ptr13, %for.inc12 ], [ %file, %for.cond6.preheader ]4557 %4 = load i8, ptr addrspace(4) %C5.0, align 14558 %cmp8.not = icmp eq i8 %4, 04559 br i1 %cmp8.not, label %if.end16, label %for.inc124560 4561for.inc12: ; preds = %for.cond64562 %incdec.ptr13 = getelementptr inbounds nuw i8, ptr addrspace(4) %C5.0, i64 14563 %inc14 = add nuw nsw i32 %FileLength.0, 14564 br label %for.cond64565 4566if.end16: ; preds = %for.cond6, %if.end4567 %FileLength.1 = phi i32 [ 0, %if.end ], [ %FileLength.0, %for.cond6 ]4568 %tobool17.not = icmp eq ptr addrspace(4) %func, null4569 br i1 %tobool17.not, label %if.end30.thread, label %for.cond20.preheader4570 4571for.cond20.preheader: ; preds = %if.end164572 br label %for.cond204573 4574for.cond20: ; preds = %for.cond20.preheader, %for.inc264575 %FuncLength.0 = phi i32 [ %inc28, %for.inc26 ], [ 0, %for.cond20.preheader ]4576 %C19.0 = phi ptr addrspace(4) [ %incdec.ptr27, %for.inc26 ], [ %func, %for.cond20.preheader ]4577 %5 = load i8, ptr addrspace(4) %C19.0, align 14578 %cmp22.not = icmp eq i8 %5, 04579 br i1 %cmp22.not, label %if.end30, label %for.inc264580 4581for.inc26: ; preds = %for.cond204582 %incdec.ptr27 = getelementptr inbounds nuw i8, ptr addrspace(4) %C19.0, i64 14583 %inc28 = add i32 %FuncLength.0, 14584 br label %for.cond204585 4586if.end30: ; preds = %for.cond204587 %spec.select = tail call i32 @llvm.umin.i32(i32 %ExprLength.1, i32 256)4588 %MaxFileIdx.0 = tail call i32 @llvm.umin.i32(i32 %FileLength.1, i32 256)4589 %spec.select126 = tail call i32 @llvm.umin.i32(i32 %FuncLength.0, i32 128)4590 br label %64591 4592if.end30.thread: ; preds = %if.end164593 %spec.select116 = tail call i32 @llvm.umin.i32(i32 %ExprLength.1, i32 256)4594 %MaxFileIdx.0118 = tail call i32 @llvm.umin.i32(i32 %FileLength.1, i32 256)4595 br label %64596 45976: ; preds = %if.end30, %if.end30.thread4598 %MaxFileIdx.0124 = phi i32 [ %MaxFileIdx.0118, %if.end30.thread ], [ %MaxFileIdx.0, %if.end30 ]4599 %spec.select122 = phi i32 [ %spec.select116, %if.end30.thread ], [ %spec.select, %if.end30 ]4600 %7 = phi i32 [ 0, %if.end30.thread ], [ %spec.select126, %if.end30 ]4601 br label %for.cond404602 4603for.cond40: ; preds = %for.body44, %64604 %lsr.iv9 = phi ptr addrspace(4) [ %scevgep10, %for.body44 ], [ %expr, %6 ]4605 %lsr.iv7 = phi ptr addrspace(1) [ %scevgep8, %for.body44 ], [ %0, %6 ]4606 %Idx.0 = phi i32 [ 0, %6 ], [ %inc48, %for.body44 ]4607 %cmp41 = icmp ult i32 %Idx.0, %spec.select1224608 br i1 %cmp41, label %for.body44, label %for.cond.cleanup424609 4610for.cond.cleanup42: ; preds = %for.cond404611 %idxprom50 = zext nneg i32 %spec.select122 to i644612 %arrayidx51 = getelementptr inbounds [257 x i8], ptr addrspace(1) %0, i64 0, i64 %idxprom504613 store i8 0, ptr addrspace(1) %arrayidx51, align 14614 br label %for.cond534615 4616for.cond53: ; preds = %for.body57, %for.cond.cleanup424617 %lsr.iv5 = phi ptr addrspace(4) [ %scevgep6, %for.body57 ], [ %file, %for.cond.cleanup42 ]4618 %lsr.iv3 = phi ptr addrspace(1) [ %scevgep4, %for.body57 ], [ %1, %for.cond.cleanup42 ]4619 %Idx52.0 = phi i32 [ 0, %for.cond.cleanup42 ], [ %inc63, %for.body57 ]4620 %cmp54 = icmp ult i32 %Idx52.0, %MaxFileIdx.01244621 br i1 %cmp54, label %for.body57, label %for.cond.cleanup554622 4623for.cond.cleanup55: ; preds = %for.cond534624 %idxprom65 = zext nneg i32 %MaxFileIdx.0124 to i644625 %arrayidx66 = getelementptr inbounds [257 x i8], ptr addrspace(1) %1, i64 0, i64 %idxprom654626 store i8 0, ptr addrspace(1) %arrayidx66, align 14627 br label %for.cond684628 4629for.cond68: ; preds = %for.body72, %for.cond.cleanup554630 %lsr.iv1 = phi ptr addrspace(4) [ %scevgep2, %for.body72 ], [ %func, %for.cond.cleanup55 ]4631 %lsr.iv = phi ptr addrspace(1) [ %scevgep, %for.body72 ], [ %2, %for.cond.cleanup55 ]4632 %Idx67.0 = phi i32 [ 0, %for.cond.cleanup55 ], [ %inc78, %for.body72 ]4633 %cmp69 = icmp ult i32 %Idx67.0, %74634 br i1 %cmp69, label %for.body72, label %for.cond.cleanup704635 4636for.cond.cleanup70: ; preds = %for.cond684637 %idxprom80 = zext nneg i32 %7 to i644638 %arrayidx81 = getelementptr inbounds [129 x i8], ptr addrspace(1) %2, i64 0, i64 %idxprom804639 store i8 0, ptr addrspace(1) %arrayidx81, align 14640 tail call spir_func void @_Z19__spirv_AtomicStorePU3AS1iN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagEi(ptr addrspace(1) @SPIR_AssertHappenedMem, i32 1, i32 16, i32 2) 4641 br label %if.end824642 4643if.end82: ; preds = %for.cond.cleanup70, %entry4644 ret void4645 4646for.body72: ; preds = %for.cond684647 %8 = load i8, ptr addrspace(4) %lsr.iv1, align 14648 store i8 %8, ptr addrspace(1) %lsr.iv, align 14649 %inc78 = add nuw nsw i32 %Idx67.0, 14650 %scevgep = getelementptr i8, ptr addrspace(1) %lsr.iv, i64 14651 %scevgep2 = getelementptr i8, ptr addrspace(4) %lsr.iv1, i64 14652 br label %for.cond684653 4654for.body57: ; preds = %for.cond534655 %9 = load i8, ptr addrspace(4) %lsr.iv5, align 14656 store i8 %9, ptr addrspace(1) %lsr.iv3, align 14657 %inc63 = add nuw nsw i32 %Idx52.0, 14658 %scevgep4 = getelementptr i8, ptr addrspace(1) %lsr.iv3, i64 14659 %scevgep6 = getelementptr i8, ptr addrspace(4) %lsr.iv5, i64 14660 br label %for.cond534661 4662for.body44: ; preds = %for.cond404663 %10 = load i8, ptr addrspace(4) %lsr.iv9, align 14664 store i8 %10, ptr addrspace(1) %lsr.iv7, align 14665 %inc48 = add nuw nsw i32 %Idx.0, 14666 %scevgep8 = getelementptr i8, ptr addrspace(1) %lsr.iv7, i64 14667 %scevgep10 = getelementptr i8, ptr addrspace(4) %lsr.iv9, i64 14668 br label %for.cond404669}4670 4671declare extern_weak dso_local spir_func i32 @_Z29__spirv_AtomicCompareExchangePU3AS1iN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagES5_ii(ptr addrspace(1), i32, i32, i32, i32, i32) local_unnamed_addr 4672declare extern_weak dso_local spir_func void @_Z19__spirv_AtomicStorePU3AS1iN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagEi(ptr addrspace(1), i32, i32, i32) local_unnamed_addr 4673declare i32 @llvm.umin.i32(i32, i32) 4674