brintos

brintos / llvm-project-archived public Read only

0
0
Text · 207.7 KiB · e1dfecb Raw
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