-
Notifications
You must be signed in to change notification settings - Fork 12.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
LLVM to MLIR Conversion Error #121965
Comments
@llvm/issue-subscribers-mlir Author: William Moses (wsmoses)
Unsupported alias scope node: `!7 = !{!"jnoalias_const", !8}`
|
unsupported alias scope node: !7 = !{!"jnoalias_const", !8}
; ModuleID = 'start'
source_filename = "start"
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64"
target triple = "nvptx64-nvidia-cuda"
; Function Attrs: cold nounwind
declare void @llvm.trap() #0
declare nonnull {}* @ijl_apply_generic({}*, {}** noalias nocapture noundef readonly, i32)
declare nonnull {}* @ijl_box_int64(i64 signext) local_unnamed_addr
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare i32 @llvm.nvvm.read.ptx.sreg.ctaid.x() #1
; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn
declare i32 @llvm.nvvm.read.ptx.sreg.tid.x() #1
define ptx_kernel void @_Z30gpu__fill_bottom_and_top_halo_16CompilerMetadataI16OffsetStaticSizeI12_1_20__1_20_E12DynamicCheckvv7NDRangeILl2E10StaticSizeI6_2__2_ES3_I8_16__16_E5TupleI5Int64S5_E13KernelOffsetsIS4_IS5_S5_EEEES4_I11OffsetArrayI7Float64Ll3E13CuTracedArrayIS8_Ll3ELl1E12_35__34__16_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__35__16_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__34__16_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__34__16_EEES4_I17BoundaryConditionI4FluxvES10_IS11_vES10_IS11_vES10_IS11_vEES4_IS10_IS11_vES10_IS11_vES10_IS11_vES10_IS11_5FieldI6CenterS13_vvvvS7_IS8_Ll3ES9_IS8_Ll3ELl1E11_34__34__1_EES8_vvvEEES4_IS4_I4FaceS13_S13_ES4_IS13_S14_S13_ES4_IS13_S13_S13_ES4_IS13_S13_S13_EE21LatitudeLongitudeGridIS8_7BoundedS16_S16_24StaticVerticalCoordinateIS7_IS8_Ll1ES9_IS8_Ll1ELl1E5_17__EES7_IS8_Ll1ES9_IS8_Ll1ELl1E5_16__EES7_IS8_Ll1ES9_IS8_Ll1ELl1E5_17__EES7_IS8_Ll1ES9_IS8_Ll1ELl1E5_16__EEES7_IS8_Ll1ES9_IS8_Ll1ELl1E5_34__EES8_S8_S8_S7_IS8_Ll1E12StepRangeLenIS8_14TwicePrecisionIS8_ES19_IS8_ES5_EES7_IS8_Ll1ES18_IS8_S19_IS8_ES19_IS8_ES5_EEvES4_I10NamedTupleI53__time___last__t___last_stage__t___iteration___stage_S4_IS8_S8_S8_S5_S5_EES20_I32__u___v___w_______U___V___b___c_S4_IS7_IS8_Ll3ES9_IS8_Ll3ELl1E12_35__34__16_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__35__16_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__34__17_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E11_34__34__1_EES12_IS14_S13_vvvvS7_IS8_Ll3ES9_IS8_Ll3ELl1E11_35__34__1_EES8_vvvES12_IS13_S14_vvvvS7_IS8_Ll3ES9_IS8_Ll3ELl1E11_34__35__1_EES8_vvvES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__34__16_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__34__16_EEEEE({ { [2 x i64], [1 x [2 x i64]] } } %0, [4 x { [1 x i8 addrspace(1)*], [3 x i64] }] %1, { { { { [1 x i8 addrspace(1)*], [3 x i64] } } } } %2, { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, { { double, double, double, i64, i64 }, { { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] } } } %4) local_unnamed_addr {
conversion:
%5 = alloca [8 x {}*], align 8
%6 = extractvalue { { [2 x i64], [1 x [2 x i64]] } } %0, 0
%.elt2 = extractvalue { [2 x i64], [1 x [2 x i64]] } %6, 1
%7 = extractvalue [1 x [2 x i64]] %.elt2, 0
%.elt5 = extractvalue [2 x i64] %7, 0
%.elt7 = extractvalue [2 x i64] %7, 1
%8 = call i32 @llvm.nvvm.read.ptx.sreg.tid.x(), !range !4
%9 = call i32 @llvm.nvvm.read.ptx.sreg.ctaid.x(), !range !5
%10 = zext i32 %9 to i64
%11 = zext i32 %8 to i64
%12 = lshr i64 %11, 4
%13 = and i64 %11, 15
%14 = add nuw nsw i64 %13, 1
%15 = add nuw nsw i64 %12, 1
%16 = shl nuw nsw i64 %10, 4
%17 = and i64 %16, 16
%18 = add nuw nsw i64 %14, %17
%19 = add i64 %18, %.elt5
%20 = add i64 %19, -21
%21 = icmp ult i64 %20, -20
%22 = shl nuw nsw i64 %10, 3
%23 = and i64 %22, 17179869168
%24 = add nuw nsw i64 %15, %23
%25 = add i64 %24, %.elt7
%26 = add i64 %25, -21
%27 = icmp ult i64 %26, -20
%28 = or i1 %21, %27
br i1 %28, label %L324, label %pass10
L324: ; preds = %conversion
ret void
pass10: ; preds = %conversion
%.sub = getelementptr inbounds [8 x {}*], [8 x {}*]* %5, i64 0, i64 0
%.elt183 = extractvalue { { double, double, double, i64, i64 }, { { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] } } } %4, 1
%.elt183.elt205 = extractvalue { { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] } } %.elt183, 7
%.elt183.elt205.elt253 = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %.elt183.elt205, 1
%.elt183.elt205.elt253.elt257 = extractvalue [3 x i64] %.elt183.elt205.elt253, 2
%.elt183.elt205.elt253.elt255 = extractvalue [3 x i64] %.elt183.elt205.elt253, 1
%.elt183.elt205.elt253.elt = extractvalue [3 x i64] %.elt183.elt205.elt253, 0
%.elt183.elt205.elt = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %.elt183.elt205, 0
%29 = extractvalue [1 x i8 addrspace(1)*] %.elt183.elt205.elt, 0
%.elt183.elt203 = extractvalue { { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] } } %.elt183, 6
%.elt183.elt203.elt247 = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %.elt183.elt203, 1
%.elt183.elt203.elt247.elt251 = extractvalue [3 x i64] %.elt183.elt203.elt247, 2
%.elt183.elt203.elt247.elt249 = extractvalue [3 x i64] %.elt183.elt203.elt247, 1
%.elt183.elt203.elt247.elt = extractvalue [3 x i64] %.elt183.elt203.elt247, 0
%.elt183.elt203.elt = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %.elt183.elt203, 0
%30 = extractvalue [1 x i8 addrspace(1)*] %.elt183.elt203.elt, 0
%.elt183.elt201 = extractvalue { { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] } } %.elt183, 5
%31 = extractvalue { { [1 x i8 addrspace(1)*], [3 x i64] } } %.elt183.elt201, 0
%.elt241 = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %31, 1
%.elt241.elt245 = extractvalue [3 x i64] %.elt241, 2
%.elt241.elt243 = extractvalue [3 x i64] %.elt241, 1
%.elt241.elt = extractvalue [3 x i64] %.elt241, 0
%.elt239 = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %31, 0
%32 = extractvalue [1 x i8 addrspace(1)*] %.elt239, 0
%.elt183.elt199 = extractvalue { { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] } } %.elt183, 4
%33 = extractvalue { { [1 x i8 addrspace(1)*], [3 x i64] } } %.elt183.elt199, 0
%.elt233 = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %33, 1
%.elt233.elt237 = extractvalue [3 x i64] %.elt233, 2
%.elt233.elt235 = extractvalue [3 x i64] %.elt233, 1
%.elt233.elt = extractvalue [3 x i64] %.elt233, 0
%.elt231 = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %33, 0
%34 = extractvalue [1 x i8 addrspace(1)*] %.elt231, 0
%.elt183.elt197 = extractvalue { { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] } } %.elt183, 3
%.elt183.elt197.elt225 = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %.elt183.elt197, 1
%.elt183.elt197.elt225.elt229 = extractvalue [3 x i64] %.elt183.elt197.elt225, 2
%.elt183.elt197.elt225.elt227 = extractvalue [3 x i64] %.elt183.elt197.elt225, 1
%.elt183.elt197.elt225.elt = extractvalue [3 x i64] %.elt183.elt197.elt225, 0
%.elt183.elt197.elt = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %.elt183.elt197, 0
%35 = extractvalue [1 x i8 addrspace(1)*] %.elt183.elt197.elt, 0
%.elt183.elt195 = extractvalue { { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] } } %.elt183, 2
%.elt183.elt195.elt219 = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %.elt183.elt195, 1
%.elt183.elt195.elt219.elt223 = extractvalue [3 x i64] %.elt183.elt195.elt219, 2
%.elt183.elt195.elt219.elt221 = extractvalue [3 x i64] %.elt183.elt195.elt219, 1
%.elt183.elt195.elt219.elt = extractvalue [3 x i64] %.elt183.elt195.elt219, 0
%.elt183.elt195.elt = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %.elt183.elt195, 0
%36 = extractvalue [1 x i8 addrspace(1)*] %.elt183.elt195.elt, 0
%.elt183.elt193 = extractvalue { { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] } } %.elt183, 1
%.elt183.elt193.elt213 = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %.elt183.elt193, 1
%.elt183.elt193.elt213.elt217 = extractvalue [3 x i64] %.elt183.elt193.elt213, 2
%.elt183.elt193.elt213.elt215 = extractvalue [3 x i64] %.elt183.elt193.elt213, 1
%.elt183.elt193.elt213.elt = extractvalue [3 x i64] %.elt183.elt193.elt213, 0
%.elt183.elt193.elt = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %.elt183.elt193, 0
%37 = extractvalue [1 x i8 addrspace(1)*] %.elt183.elt193.elt, 0
%.elt183.elt = extractvalue { { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] } } %.elt183, 0
%.elt183.elt.elt207 = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %.elt183.elt, 1
%.elt183.elt.elt207.elt211 = extractvalue [3 x i64] %.elt183.elt.elt207, 2
%.elt183.elt.elt207.elt209 = extractvalue [3 x i64] %.elt183.elt.elt207, 1
%.elt183.elt.elt207.elt = extractvalue [3 x i64] %.elt183.elt.elt207, 0
%.elt183.elt.elt = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %.elt183.elt, 0
%38 = extractvalue [1 x i8 addrspace(1)*] %.elt183.elt.elt, 0
%.elt181 = extractvalue { { double, double, double, i64, i64 }, { { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] } } } %4, 0
%.elt181.elt191 = extractvalue { double, double, double, i64, i64 } %.elt181, 4
%.elt181.elt189 = extractvalue { double, double, double, i64, i64 } %.elt181, 3
%.elt181.elt187 = extractvalue { double, double, double, i64, i64 } %.elt181, 2
%.elt181.elt185 = extractvalue { double, double, double, i64, i64 } %.elt181, 1
%.elt181.elt = extractvalue { double, double, double, i64, i64 } %.elt181, 0
%.elt101 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 28
%.elt99 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 27
%.elt99.elt179 = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt99, 1
%39 = extractvalue [1 x i64] %.elt99.elt179, 0
%.elt99.elt = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt99, 0
%40 = extractvalue [1 x i8 addrspace(1)*] %.elt99.elt, 0
%.elt97 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 26
%.elt97.elt177 = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt97, 1
%41 = extractvalue [1 x i64] %.elt97.elt177, 0
%.elt97.elt = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt97, 0
%42 = extractvalue [1 x i8 addrspace(1)*] %.elt97.elt, 0
%.elt95 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 25
%.elt95.elt175 = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt95, 1
%43 = extractvalue [1 x i64] %.elt95.elt175, 0
%.elt95.elt = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt95, 0
%44 = extractvalue [1 x i8 addrspace(1)*] %.elt95.elt, 0
%.elt93 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 24
%.elt93.elt173 = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt93, 1
%45 = extractvalue [1 x i64] %.elt93.elt173, 0
%.elt93.elt = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt93, 0
%46 = extractvalue [1 x i8 addrspace(1)*] %.elt93.elt, 0
%.elt91 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 23
%.elt89 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 22
%.elt87 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 21
%.elt87.elt171 = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt87, 1
%47 = extractvalue [1 x i64] %.elt87.elt171, 0
%.elt87.elt = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt87, 0
%48 = extractvalue [1 x i8 addrspace(1)*] %.elt87.elt, 0
%.elt85 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 20
%.elt85.elt169 = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt85, 1
%49 = extractvalue [1 x i64] %.elt85.elt169, 0
%.elt85.elt = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt85, 0
%50 = extractvalue [1 x i8 addrspace(1)*] %.elt85.elt, 0
%.elt83 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 19
%.elt83.elt167 = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt83, 1
%51 = extractvalue [1 x i64] %.elt83.elt167, 0
%.elt83.elt = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt83, 0
%52 = extractvalue [1 x i8 addrspace(1)*] %.elt83.elt, 0
%.elt81 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 18
%.elt81.elt165 = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt81, 1
%53 = extractvalue [1 x i64] %.elt81.elt165, 0
%.elt81.elt = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt81, 0
%54 = extractvalue [1 x i8 addrspace(1)*] %.elt81.elt, 0
%.elt79 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 17
%.elt79.elt155 = extractvalue [4 x { [1 x i8 addrspace(1)*], [1 x i64] }] %.elt79, 3
%.elt79.elt155.elt163 = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt79.elt155, 1
%55 = extractvalue [1 x i64] %.elt79.elt155.elt163, 0
%.elt79.elt155.elt = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt79.elt155, 0
%56 = extractvalue [1 x i8 addrspace(1)*] %.elt79.elt155.elt, 0
%.elt79.elt153 = extractvalue [4 x { [1 x i8 addrspace(1)*], [1 x i64] }] %.elt79, 2
%.elt79.elt153.elt161 = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt79.elt153, 1
%57 = extractvalue [1 x i64] %.elt79.elt153.elt161, 0
%.elt79.elt153.elt = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt79.elt153, 0
%58 = extractvalue [1 x i8 addrspace(1)*] %.elt79.elt153.elt, 0
%.elt79.elt151 = extractvalue [4 x { [1 x i8 addrspace(1)*], [1 x i64] }] %.elt79, 1
%.elt79.elt151.elt159 = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt79.elt151, 1
%59 = extractvalue [1 x i64] %.elt79.elt151.elt159, 0
%.elt79.elt151.elt = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt79.elt151, 0
%60 = extractvalue [1 x i8 addrspace(1)*] %.elt79.elt151.elt, 0
%.elt79.elt = extractvalue [4 x { [1 x i8 addrspace(1)*], [1 x i64] }] %.elt79, 0
%.elt79.elt.elt157 = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt79.elt, 1
%61 = extractvalue [1 x i64] %.elt79.elt.elt157, 0
%.elt79.elt.elt = extractvalue { [1 x i8 addrspace(1)*], [1 x i64] } %.elt79.elt, 0
%62 = extractvalue [1 x i8 addrspace(1)*] %.elt79.elt.elt, 0
%.elt77 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 16
%.elt77.elt139 = extractvalue { { [2 x double], [2 x double], i64, i64 }, [1 x i64] } %.elt77, 1
%63 = extractvalue [1 x i64] %.elt77.elt139, 0
%.elt77.elt = extractvalue { { [2 x double], [2 x double], i64, i64 }, [1 x i64] } %.elt77, 0
%.elt77.elt.elt145 = extractvalue { [2 x double], [2 x double], i64, i64 } %.elt77.elt, 3
%.elt77.elt.elt143 = extractvalue { [2 x double], [2 x double], i64, i64 } %.elt77.elt, 2
%.elt77.elt.elt141 = extractvalue { [2 x double], [2 x double], i64, i64 } %.elt77.elt, 1
%.elt77.elt.elt141.elt149 = extractvalue [2 x double] %.elt77.elt.elt141, 1
%.elt77.elt.elt141.elt = extractvalue [2 x double] %.elt77.elt.elt141, 0
%.elt77.elt.elt = extractvalue { [2 x double], [2 x double], i64, i64 } %.elt77.elt, 0
%.elt77.elt.elt.elt147 = extractvalue [2 x double] %.elt77.elt.elt, 1
%.elt77.elt.elt.elt = extractvalue [2 x double] %.elt77.elt.elt, 0
%.elt75 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 15
%.elt75.elt127 = extractvalue { { [2 x double], [2 x double], i64, i64 }, [1 x i64] } %.elt75, 1
%64 = extractvalue [1 x i64] %.elt75.elt127, 0
%.elt75.elt = extractvalue { { [2 x double], [2 x double], i64, i64 }, [1 x i64] } %.elt75, 0
%.elt75.elt.elt133 = extractvalue { [2 x double], [2 x double], i64, i64 } %.elt75.elt, 3
%.elt75.elt.elt131 = extractvalue { [2 x double], [2 x double], i64, i64 } %.elt75.elt, 2
%.elt75.elt.elt129 = extractvalue { [2 x double], [2 x double], i64, i64 } %.elt75.elt, 1
%.elt75.elt.elt129.elt137 = extractvalue [2 x double] %.elt75.elt.elt129, 1
%.elt75.elt.elt129.elt = extractvalue [2 x double] %.elt75.elt.elt129, 0
%.elt75.elt.elt = extractvalue { [2 x double], [2 x double], i64, i64 } %.elt75.elt, 0
%.elt75.elt.elt.elt135 = extractvalue [2 x double] %.elt75.elt.elt, 1
%.elt75.elt.elt.elt = extractvalue [2 x double] %.elt75.elt.elt, 0
%.elt73 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 14
%.elt71 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 13
%.elt69 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 12
%.elt69.elt115 = extractvalue { { [2 x double], [2 x double], i64, i64 }, [1 x i64] } %.elt69, 1
%65 = extractvalue [1 x i64] %.elt69.elt115, 0
%.elt69.elt = extractvalue { { [2 x double], [2 x double], i64, i64 }, [1 x i64] } %.elt69, 0
%.elt69.elt.elt121 = extractvalue { [2 x double], [2 x double], i64, i64 } %.elt69.elt, 3
%.elt69.elt.elt119 = extractvalue { [2 x double], [2 x double], i64, i64 } %.elt69.elt, 2
%.elt69.elt.elt117 = extractvalue { [2 x double], [2 x double], i64, i64 } %.elt69.elt, 1
%.elt69.elt.elt117.elt125 = extractvalue [2 x double] %.elt69.elt.elt117, 1
%.elt69.elt.elt117.elt = extractvalue [2 x double] %.elt69.elt.elt117, 0
%.elt69.elt.elt = extractvalue { [2 x double], [2 x double], i64, i64 } %.elt69.elt, 0
%.elt69.elt.elt.elt123 = extractvalue [2 x double] %.elt69.elt.elt, 1
%.elt69.elt.elt.elt = extractvalue [2 x double] %.elt69.elt.elt, 0
%.elt67 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 11
%.elt67.elt103 = extractvalue { { [2 x double], [2 x double], i64, i64 }, [1 x i64] } %.elt67, 1
%66 = extractvalue [1 x i64] %.elt67.elt103, 0
%.elt67.elt = extractvalue { { [2 x double], [2 x double], i64, i64 }, [1 x i64] } %.elt67, 0
%.elt67.elt.elt109 = extractvalue { [2 x double], [2 x double], i64, i64 } %.elt67.elt, 3
%.elt67.elt.elt107 = extractvalue { [2 x double], [2 x double], i64, i64 } %.elt67.elt, 2
%.elt67.elt.elt105 = extractvalue { [2 x double], [2 x double], i64, i64 } %.elt67.elt, 1
%.elt67.elt.elt105.elt113 = extractvalue [2 x double] %.elt67.elt.elt105, 1
%.elt67.elt.elt105.elt = extractvalue [2 x double] %.elt67.elt.elt105, 0
%.elt67.elt.elt = extractvalue { [2 x double], [2 x double], i64, i64 } %.elt67.elt, 0
%.elt67.elt.elt.elt111 = extractvalue [2 x double] %.elt67.elt.elt, 1
%.elt67.elt.elt.elt = extractvalue [2 x double] %.elt67.elt.elt, 0
%.elt65 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 10
%.elt63 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 9
%.elt61 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 8
%.elt59 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 7
%.elt57 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 6
%.elt55 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 5
%.elt53 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 4
%.elt51 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 3
%.elt49 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 2
%.elt47 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 1
%.elt45 = extractvalue { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double } %3, 0
%.elt15 = extractvalue [4 x { [1 x i8 addrspace(1)*], [3 x i64] }] %1, 3
%.elt15.elt39 = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %.elt15, 1
%.elt15.elt39.elt43 = extractvalue [3 x i64] %.elt15.elt39, 2
%.elt15.elt39.elt41 = extractvalue [3 x i64] %.elt15.elt39, 1
%.elt15.elt39.elt = extractvalue [3 x i64] %.elt15.elt39, 0
%.elt15.elt = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %.elt15, 0
%67 = extractvalue [1 x i8 addrspace(1)*] %.elt15.elt, 0
%.elt13 = extractvalue [4 x { [1 x i8 addrspace(1)*], [3 x i64] }] %1, 2
%.elt13.elt32 = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %.elt13, 1
%.elt13.elt32.elt36 = extractvalue [3 x i64] %.elt13.elt32, 2
%.elt13.elt32.elt34 = extractvalue [3 x i64] %.elt13.elt32, 1
%.elt13.elt32.elt = extractvalue [3 x i64] %.elt13.elt32, 0
%.elt13.elt = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %.elt13, 0
%68 = extractvalue [1 x i8 addrspace(1)*] %.elt13.elt, 0
%.elt11 = extractvalue [4 x { [1 x i8 addrspace(1)*], [3 x i64] }] %1, 1
%.elt11.elt25 = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %.elt11, 1
%.elt11.elt25.elt29 = extractvalue [3 x i64] %.elt11.elt25, 2
%.elt11.elt25.elt27 = extractvalue [3 x i64] %.elt11.elt25, 1
%.elt11.elt25.elt = extractvalue [3 x i64] %.elt11.elt25, 0
%.elt11.elt = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %.elt11, 0
%69 = extractvalue [1 x i8 addrspace(1)*] %.elt11.elt, 0
%.elt9 = extractvalue [4 x { [1 x i8 addrspace(1)*], [3 x i64] }] %1, 0
%.elt9.elt18 = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %.elt9, 1
%.elt9.elt18.elt22 = extractvalue [3 x i64] %.elt9.elt18, 2
%.elt9.elt18.elt20 = extractvalue [3 x i64] %.elt9.elt18, 1
%.elt9.elt18.elt = extractvalue [3 x i64] %.elt9.elt18, 0
%.elt9.elt = extractvalue { [1 x i8 addrspace(1)*], [3 x i64] } %.elt9, 0
%70 = extractvalue [1 x i8 addrspace(1)*] %.elt9.elt, 0
%71 = call nonnull {}* @ijl_box_int64(i64 signext %19)
%72 = call nonnull {}* @ijl_box_int64(i64 signext %25)
%73 = call {}* @gpu_gc_pool_alloc(i64 544)
%74 = bitcast {}* %73 to i8*
%.sroa.0262.0..sroa_cast = bitcast {}* %73 to i64*
store i64 %.elt45, i64* %.sroa.0262.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.2263.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 8
%.sroa.2263.0..sroa_cast = bitcast i8* %.sroa.2263.0..sroa_idx to i64*
store i64 %.elt47, i64* %.sroa.2263.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.3264.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 16
%.sroa.3264.0..sroa_cast = bitcast i8* %.sroa.3264.0..sroa_idx to i64*
store i64 %.elt49, i64* %.sroa.3264.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.4265.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 24
%.sroa.4265.0..sroa_cast = bitcast i8* %.sroa.4265.0..sroa_idx to i64*
store i64 %.elt51, i64* %.sroa.4265.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.5266.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 32
%.sroa.5266.0..sroa_cast = bitcast i8* %.sroa.5266.0..sroa_idx to i64*
store i64 %.elt53, i64* %.sroa.5266.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.6267.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 40
%.sroa.6267.0..sroa_cast = bitcast i8* %.sroa.6267.0..sroa_idx to i64*
store i64 %.elt55, i64* %.sroa.6267.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.7.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 48
%.sroa.7.0..sroa_cast = bitcast i8* %.sroa.7.0..sroa_idx to double*
store double %.elt57, double* %.sroa.7.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.8268.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 56
%.sroa.8268.0..sroa_cast = bitcast i8* %.sroa.8268.0..sroa_idx to double*
store double %.elt59, double* %.sroa.8268.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.9269.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 64
%.sroa.9269.0..sroa_cast = bitcast i8* %.sroa.9269.0..sroa_idx to double*
store double %.elt61, double* %.sroa.9269.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.10270.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 72
%.sroa.10270.0..sroa_cast = bitcast i8* %.sroa.10270.0..sroa_idx to double*
store double %.elt63, double* %.sroa.10270.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.11271.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 80
%.sroa.11271.0..sroa_cast = bitcast i8* %.sroa.11271.0..sroa_idx to double*
store double %.elt65, double* %.sroa.11271.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.12272.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 88
%.sroa.12272.0..sroa_cast = bitcast i8* %.sroa.12272.0..sroa_idx to double*
store double %.elt67.elt.elt.elt, double* %.sroa.12272.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.13273.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 96
%.sroa.13273.0..sroa_cast = bitcast i8* %.sroa.13273.0..sroa_idx to double*
store double %.elt67.elt.elt.elt111, double* %.sroa.13273.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.14274.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 104
%.sroa.14274.0..sroa_cast = bitcast i8* %.sroa.14274.0..sroa_idx to double*
store double %.elt67.elt.elt105.elt, double* %.sroa.14274.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.15275.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 112
%.sroa.15275.0..sroa_cast = bitcast i8* %.sroa.15275.0..sroa_idx to double*
store double %.elt67.elt.elt105.elt113, double* %.sroa.15275.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.16276.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 120
%.sroa.16276.0..sroa_cast = bitcast i8* %.sroa.16276.0..sroa_idx to i64*
store i64 %.elt67.elt.elt107, i64* %.sroa.16276.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.17277.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 128
%.sroa.17277.0..sroa_cast = bitcast i8* %.sroa.17277.0..sroa_idx to i64*
store i64 %.elt67.elt.elt109, i64* %.sroa.17277.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.18278.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 136
%.sroa.18278.0..sroa_cast = bitcast i8* %.sroa.18278.0..sroa_idx to i64*
store i64 %66, i64* %.sroa.18278.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.19279.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 144
%.sroa.19279.0..sroa_cast = bitcast i8* %.sroa.19279.0..sroa_idx to double*
store double %.elt69.elt.elt.elt, double* %.sroa.19279.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.20280.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 152
%.sroa.20280.0..sroa_cast = bitcast i8* %.sroa.20280.0..sroa_idx to double*
store double %.elt69.elt.elt.elt123, double* %.sroa.20280.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.21281.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 160
%.sroa.21281.0..sroa_cast = bitcast i8* %.sroa.21281.0..sroa_idx to double*
store double %.elt69.elt.elt117.elt, double* %.sroa.21281.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.22282.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 168
%.sroa.22282.0..sroa_cast = bitcast i8* %.sroa.22282.0..sroa_idx to double*
store double %.elt69.elt.elt117.elt125, double* %.sroa.22282.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.23283.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 176
%.sroa.23283.0..sroa_cast = bitcast i8* %.sroa.23283.0..sroa_idx to i64*
store i64 %.elt69.elt.elt119, i64* %.sroa.23283.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.24284.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 184
%.sroa.24284.0..sroa_cast = bitcast i8* %.sroa.24284.0..sroa_idx to i64*
store i64 %.elt69.elt.elt121, i64* %.sroa.24284.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.25285.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 192
%.sroa.25285.0..sroa_cast = bitcast i8* %.sroa.25285.0..sroa_idx to i64*
store i64 %65, i64* %.sroa.25285.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.26286.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 200
%.sroa.26286.0..sroa_cast = bitcast i8* %.sroa.26286.0..sroa_idx to double*
store double %.elt71, double* %.sroa.26286.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.27287.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 208
%.sroa.27287.0..sroa_cast = bitcast i8* %.sroa.27287.0..sroa_idx to double*
store double %.elt73, double* %.sroa.27287.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.28288.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 216
%.sroa.28288.0..sroa_cast = bitcast i8* %.sroa.28288.0..sroa_idx to double*
store double %.elt75.elt.elt.elt, double* %.sroa.28288.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.29289.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 224
%.sroa.29289.0..sroa_cast = bitcast i8* %.sroa.29289.0..sroa_idx to double*
store double %.elt75.elt.elt.elt135, double* %.sroa.29289.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.30290.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 232
%.sroa.30290.0..sroa_cast = bitcast i8* %.sroa.30290.0..sroa_idx to double*
store double %.elt75.elt.elt129.elt, double* %.sroa.30290.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.31291.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 240
%.sroa.31291.0..sroa_cast = bitcast i8* %.sroa.31291.0..sroa_idx to double*
store double %.elt75.elt.elt129.elt137, double* %.sroa.31291.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.32292.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 248
%.sroa.32292.0..sroa_cast = bitcast i8* %.sroa.32292.0..sroa_idx to i64*
store i64 %.elt75.elt.elt131, i64* %.sroa.32292.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.33293.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 256
%.sroa.33293.0..sroa_cast = bitcast i8* %.sroa.33293.0..sroa_idx to i64*
store i64 %.elt75.elt.elt133, i64* %.sroa.33293.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.34294.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 264
%.sroa.34294.0..sroa_cast = bitcast i8* %.sroa.34294.0..sroa_idx to i64*
store i64 %64, i64* %.sroa.34294.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.35295.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 272
%.sroa.35295.0..sroa_cast = bitcast i8* %.sroa.35295.0..sroa_idx to double*
store double %.elt77.elt.elt.elt, double* %.sroa.35295.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.36296.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 280
%.sroa.36296.0..sroa_cast = bitcast i8* %.sroa.36296.0..sroa_idx to double*
store double %.elt77.elt.elt.elt147, double* %.sroa.36296.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.37297.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 288
%.sroa.37297.0..sroa_cast = bitcast i8* %.sroa.37297.0..sroa_idx to double*
store double %.elt77.elt.elt141.elt, double* %.sroa.37297.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.38298.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 296
%.sroa.38298.0..sroa_cast = bitcast i8* %.sroa.38298.0..sroa_idx to double*
store double %.elt77.elt.elt141.elt149, double* %.sroa.38298.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.39.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 304
%.sroa.39.0..sroa_cast = bitcast i8* %.sroa.39.0..sroa_idx to i64*
store i64 %.elt77.elt.elt143, i64* %.sroa.39.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.40.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 312
%.sroa.40.0..sroa_cast = bitcast i8* %.sroa.40.0..sroa_idx to i64*
store i64 %.elt77.elt.elt145, i64* %.sroa.40.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.41.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 320
%.sroa.41.0..sroa_cast = bitcast i8* %.sroa.41.0..sroa_idx to i64*
store i64 %63, i64* %.sroa.41.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.42.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 328
%.sroa.42.0..sroa_cast = bitcast i8* %.sroa.42.0..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %62, i8 addrspace(1)** %.sroa.42.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.43.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 336
%.sroa.43.0..sroa_cast = bitcast i8* %.sroa.43.0..sroa_idx to i64*
store i64 %61, i64* %.sroa.43.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.44.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 344
%.sroa.44.0..sroa_cast = bitcast i8* %.sroa.44.0..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %60, i8 addrspace(1)** %.sroa.44.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.45.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 352
%.sroa.45.0..sroa_cast = bitcast i8* %.sroa.45.0..sroa_idx to i64*
store i64 %59, i64* %.sroa.45.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.46.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 360
%.sroa.46.0..sroa_cast = bitcast i8* %.sroa.46.0..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %58, i8 addrspace(1)** %.sroa.46.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.47.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 368
%.sroa.47.0..sroa_cast = bitcast i8* %.sroa.47.0..sroa_idx to i64*
store i64 %57, i64* %.sroa.47.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.48.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 376
%.sroa.48.0..sroa_cast = bitcast i8* %.sroa.48.0..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %56, i8 addrspace(1)** %.sroa.48.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.49.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 384
%.sroa.49.0..sroa_cast = bitcast i8* %.sroa.49.0..sroa_idx to i64*
store i64 %55, i64* %.sroa.49.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.50.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 392
%.sroa.50.0..sroa_cast = bitcast i8* %.sroa.50.0..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %54, i8 addrspace(1)** %.sroa.50.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.51.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 400
%.sroa.51.0..sroa_cast = bitcast i8* %.sroa.51.0..sroa_idx to i64*
store i64 %53, i64* %.sroa.51.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.52.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 408
%.sroa.52.0..sroa_cast = bitcast i8* %.sroa.52.0..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %52, i8 addrspace(1)** %.sroa.52.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.53.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 416
%.sroa.53.0..sroa_cast = bitcast i8* %.sroa.53.0..sroa_idx to i64*
store i64 %51, i64* %.sroa.53.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.54.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 424
%.sroa.54.0..sroa_cast = bitcast i8* %.sroa.54.0..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %50, i8 addrspace(1)** %.sroa.54.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.55.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 432
%.sroa.55.0..sroa_cast = bitcast i8* %.sroa.55.0..sroa_idx to i64*
store i64 %49, i64* %.sroa.55.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.56.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 440
%.sroa.56.0..sroa_cast = bitcast i8* %.sroa.56.0..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %48, i8 addrspace(1)** %.sroa.56.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.57.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 448
%.sroa.57.0..sroa_cast = bitcast i8* %.sroa.57.0..sroa_idx to i64*
store i64 %47, i64* %.sroa.57.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.58.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 456
%.sroa.58.0..sroa_cast = bitcast i8* %.sroa.58.0..sroa_idx to double*
store double %.elt89, double* %.sroa.58.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.59.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 464
%.sroa.59.0..sroa_cast = bitcast i8* %.sroa.59.0..sroa_idx to double*
store double %.elt91, double* %.sroa.59.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.60.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 472
%.sroa.60.0..sroa_cast = bitcast i8* %.sroa.60.0..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %46, i8 addrspace(1)** %.sroa.60.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.61.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 480
%.sroa.61.0..sroa_cast = bitcast i8* %.sroa.61.0..sroa_idx to i64*
store i64 %45, i64* %.sroa.61.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.62.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 488
%.sroa.62.0..sroa_cast = bitcast i8* %.sroa.62.0..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %44, i8 addrspace(1)** %.sroa.62.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.63.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 496
%.sroa.63.0..sroa_cast = bitcast i8* %.sroa.63.0..sroa_idx to i64*
store i64 %43, i64* %.sroa.63.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.64.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 504
%.sroa.64.0..sroa_cast = bitcast i8* %.sroa.64.0..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %42, i8 addrspace(1)** %.sroa.64.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.65.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 512
%.sroa.65.0..sroa_cast = bitcast i8* %.sroa.65.0..sroa_idx to i64*
store i64 %41, i64* %.sroa.65.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.66.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 520
%.sroa.66.0..sroa_cast = bitcast i8* %.sroa.66.0..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %40, i8 addrspace(1)** %.sroa.66.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.67.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 528
%.sroa.67.0..sroa_cast = bitcast i8* %.sroa.67.0..sroa_idx to i64*
store i64 %39, i64* %.sroa.67.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.68.0..sroa_idx = getelementptr inbounds i8, i8* %74, i64 536
%.sroa.68.0..sroa_cast = bitcast i8* %.sroa.68.0..sroa_idx to double*
store double %.elt101, double* %.sroa.68.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%75 = call {}* @gpu_gc_pool_alloc(i64 128)
%76 = bitcast {}* %75 to i8*
%.sroa.0299.0..sroa_cast = bitcast {}* %75 to i8 addrspace(1)**
store i8 addrspace(1)* %70, i8 addrspace(1)** %.sroa.0299.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.2300.0..sroa_idx = getelementptr inbounds i8, i8* %76, i64 8
%.sroa.2300.0..sroa_cast = bitcast i8* %.sroa.2300.0..sroa_idx to i64*
store i64 %.elt9.elt18.elt, i64* %.sroa.2300.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.3301.0..sroa_idx = getelementptr inbounds i8, i8* %76, i64 16
%.sroa.3301.0..sroa_cast = bitcast i8* %.sroa.3301.0..sroa_idx to i64*
store i64 %.elt9.elt18.elt20, i64* %.sroa.3301.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.4302.0..sroa_idx = getelementptr inbounds i8, i8* %76, i64 24
%.sroa.4302.0..sroa_cast = bitcast i8* %.sroa.4302.0..sroa_idx to i64*
store i64 %.elt9.elt18.elt22, i64* %.sroa.4302.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.5303.0..sroa_idx = getelementptr inbounds i8, i8* %76, i64 32
%.sroa.5303.0..sroa_cast = bitcast i8* %.sroa.5303.0..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %69, i8 addrspace(1)** %.sroa.5303.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.6304.0..sroa_idx = getelementptr inbounds i8, i8* %76, i64 40
%.sroa.6304.0..sroa_cast = bitcast i8* %.sroa.6304.0..sroa_idx to i64*
store i64 %.elt11.elt25.elt, i64* %.sroa.6304.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.7305.0..sroa_idx = getelementptr inbounds i8, i8* %76, i64 48
%.sroa.7305.0..sroa_cast = bitcast i8* %.sroa.7305.0..sroa_idx to i64*
store i64 %.elt11.elt25.elt27, i64* %.sroa.7305.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.8306.0..sroa_idx = getelementptr inbounds i8, i8* %76, i64 56
%.sroa.8306.0..sroa_cast = bitcast i8* %.sroa.8306.0..sroa_idx to i64*
store i64 %.elt11.elt25.elt29, i64* %.sroa.8306.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.9307.0..sroa_idx = getelementptr inbounds i8, i8* %76, i64 64
%.sroa.9307.0..sroa_cast = bitcast i8* %.sroa.9307.0..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %68, i8 addrspace(1)** %.sroa.9307.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.10308.0..sroa_idx = getelementptr inbounds i8, i8* %76, i64 72
%.sroa.10308.0..sroa_cast = bitcast i8* %.sroa.10308.0..sroa_idx to i64*
store i64 %.elt13.elt32.elt, i64* %.sroa.10308.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.11309.0..sroa_idx = getelementptr inbounds i8, i8* %76, i64 80
%.sroa.11309.0..sroa_cast = bitcast i8* %.sroa.11309.0..sroa_idx to i64*
store i64 %.elt13.elt32.elt34, i64* %.sroa.11309.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.12310.0..sroa_idx = getelementptr inbounds i8, i8* %76, i64 88
%.sroa.12310.0..sroa_cast = bitcast i8* %.sroa.12310.0..sroa_idx to i64*
store i64 %.elt13.elt32.elt36, i64* %.sroa.12310.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.13311.0..sroa_idx = getelementptr inbounds i8, i8* %76, i64 96
%.sroa.13311.0..sroa_cast = bitcast i8* %.sroa.13311.0..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %67, i8 addrspace(1)** %.sroa.13311.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.14312.0..sroa_idx = getelementptr inbounds i8, i8* %76, i64 104
%.sroa.14312.0..sroa_cast = bitcast i8* %.sroa.14312.0..sroa_idx to i64*
store i64 %.elt15.elt39.elt, i64* %.sroa.14312.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.15313.0..sroa_idx = getelementptr inbounds i8, i8* %76, i64 112
%.sroa.15313.0..sroa_cast = bitcast i8* %.sroa.15313.0..sroa_idx to i64*
store i64 %.elt15.elt39.elt41, i64* %.sroa.15313.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.16314.0..sroa_idx = getelementptr inbounds i8, i8* %76, i64 120
%.sroa.16314.0..sroa_cast = bitcast i8* %.sroa.16314.0..sroa_idx to i64*
store i64 %.elt15.elt39.elt43, i64* %.sroa.16314.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%77 = call {}* @gpu_gc_pool_alloc(i64 40)
%78 = bitcast {}* %77 to i8*
%.sroa.0.0..sroa_cast = bitcast {}* %77 to double*
store double %.elt181.elt, double* %.sroa.0.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.2.0..sroa_idx = getelementptr inbounds i8, i8* %78, i64 8
%.sroa.2.0..sroa_cast = bitcast i8* %.sroa.2.0..sroa_idx to double*
store double %.elt181.elt185, double* %.sroa.2.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.3.0..sroa_idx = getelementptr inbounds i8, i8* %78, i64 16
%.sroa.3.0..sroa_cast = bitcast i8* %.sroa.3.0..sroa_idx to double*
store double %.elt181.elt187, double* %.sroa.3.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.4.0..sroa_idx = getelementptr inbounds i8, i8* %78, i64 24
%.sroa.4.0..sroa_cast = bitcast i8* %.sroa.4.0..sroa_idx to i64*
store i64 %.elt181.elt189, i64* %.sroa.4.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.5.0..sroa_idx = getelementptr inbounds i8, i8* %78, i64 32
%.sroa.5.0..sroa_cast = bitcast i8* %.sroa.5.0..sroa_idx to i64*
store i64 %.elt181.elt191, i64* %.sroa.5.0..sroa_cast, align 8, !alias.scope !6, !noalias !10
%79 = call {}* @gpu_gc_pool_alloc(i64 256)
%80 = bitcast {}* %79 to i8*
%.sroa.6.40..sroa_cast = bitcast {}* %79 to i8 addrspace(1)**
store i8 addrspace(1)* %38, i8 addrspace(1)** %.sroa.6.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.8.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 8
%.sroa.8.40..sroa_cast = bitcast i8* %.sroa.8.40..sroa_idx to i64*
store i64 %.elt183.elt.elt207.elt, i64* %.sroa.8.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.9.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 16
%.sroa.9.40..sroa_cast = bitcast i8* %.sroa.9.40..sroa_idx to i64*
store i64 %.elt183.elt.elt207.elt209, i64* %.sroa.9.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.10.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 24
%.sroa.10.40..sroa_cast = bitcast i8* %.sroa.10.40..sroa_idx to i64*
store i64 %.elt183.elt.elt207.elt211, i64* %.sroa.10.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.11.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 32
%.sroa.11.40..sroa_cast = bitcast i8* %.sroa.11.40..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %37, i8 addrspace(1)** %.sroa.11.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.12.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 40
%.sroa.12.40..sroa_cast = bitcast i8* %.sroa.12.40..sroa_idx to i64*
store i64 %.elt183.elt193.elt213.elt, i64* %.sroa.12.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.13.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 48
%.sroa.13.40..sroa_cast = bitcast i8* %.sroa.13.40..sroa_idx to i64*
store i64 %.elt183.elt193.elt213.elt215, i64* %.sroa.13.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.14.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 56
%.sroa.14.40..sroa_cast = bitcast i8* %.sroa.14.40..sroa_idx to i64*
store i64 %.elt183.elt193.elt213.elt217, i64* %.sroa.14.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.15.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 64
%.sroa.15.40..sroa_cast = bitcast i8* %.sroa.15.40..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %36, i8 addrspace(1)** %.sroa.15.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.16.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 72
%.sroa.16.40..sroa_cast = bitcast i8* %.sroa.16.40..sroa_idx to i64*
store i64 %.elt183.elt195.elt219.elt, i64* %.sroa.16.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.17.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 80
%.sroa.17.40..sroa_cast = bitcast i8* %.sroa.17.40..sroa_idx to i64*
store i64 %.elt183.elt195.elt219.elt221, i64* %.sroa.17.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.18.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 88
%.sroa.18.40..sroa_cast = bitcast i8* %.sroa.18.40..sroa_idx to i64*
store i64 %.elt183.elt195.elt219.elt223, i64* %.sroa.18.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.19.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 96
%.sroa.19.40..sroa_cast = bitcast i8* %.sroa.19.40..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %35, i8 addrspace(1)** %.sroa.19.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.20.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 104
%.sroa.20.40..sroa_cast = bitcast i8* %.sroa.20.40..sroa_idx to i64*
store i64 %.elt183.elt197.elt225.elt, i64* %.sroa.20.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.21.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 112
%.sroa.21.40..sroa_cast = bitcast i8* %.sroa.21.40..sroa_idx to i64*
store i64 %.elt183.elt197.elt225.elt227, i64* %.sroa.21.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.22.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 120
%.sroa.22.40..sroa_cast = bitcast i8* %.sroa.22.40..sroa_idx to i64*
store i64 %.elt183.elt197.elt225.elt229, i64* %.sroa.22.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.23.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 128
%.sroa.23.40..sroa_cast = bitcast i8* %.sroa.23.40..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %34, i8 addrspace(1)** %.sroa.23.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.24.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 136
%.sroa.24.40..sroa_cast = bitcast i8* %.sroa.24.40..sroa_idx to i64*
store i64 %.elt233.elt, i64* %.sroa.24.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.25.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 144
%.sroa.25.40..sroa_cast = bitcast i8* %.sroa.25.40..sroa_idx to i64*
store i64 %.elt233.elt235, i64* %.sroa.25.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.26.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 152
%.sroa.26.40..sroa_cast = bitcast i8* %.sroa.26.40..sroa_idx to i64*
store i64 %.elt233.elt237, i64* %.sroa.26.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.27.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 160
%.sroa.27.40..sroa_cast = bitcast i8* %.sroa.27.40..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %32, i8 addrspace(1)** %.sroa.27.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.28.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 168
%.sroa.28.40..sroa_cast = bitcast i8* %.sroa.28.40..sroa_idx to i64*
store i64 %.elt241.elt, i64* %.sroa.28.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.29.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 176
%.sroa.29.40..sroa_cast = bitcast i8* %.sroa.29.40..sroa_idx to i64*
store i64 %.elt241.elt243, i64* %.sroa.29.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.30.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 184
%.sroa.30.40..sroa_cast = bitcast i8* %.sroa.30.40..sroa_idx to i64*
store i64 %.elt241.elt245, i64* %.sroa.30.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.31.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 192
%.sroa.31.40..sroa_cast = bitcast i8* %.sroa.31.40..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %30, i8 addrspace(1)** %.sroa.31.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.32.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 200
%.sroa.32.40..sroa_cast = bitcast i8* %.sroa.32.40..sroa_idx to i64*
store i64 %.elt183.elt203.elt247.elt, i64* %.sroa.32.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.33.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 208
%.sroa.33.40..sroa_cast = bitcast i8* %.sroa.33.40..sroa_idx to i64*
store i64 %.elt183.elt203.elt247.elt249, i64* %.sroa.33.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.34.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 216
%.sroa.34.40..sroa_cast = bitcast i8* %.sroa.34.40..sroa_idx to i64*
store i64 %.elt183.elt203.elt247.elt251, i64* %.sroa.34.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.35.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 224
%.sroa.35.40..sroa_cast = bitcast i8* %.sroa.35.40..sroa_idx to i8 addrspace(1)**
store i8 addrspace(1)* %29, i8 addrspace(1)** %.sroa.35.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.36.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 232
%.sroa.36.40..sroa_cast = bitcast i8* %.sroa.36.40..sroa_idx to i64*
store i64 %.elt183.elt205.elt253.elt, i64* %.sroa.36.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.37.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 240
%.sroa.37.40..sroa_cast = bitcast i8* %.sroa.37.40..sroa_idx to i64*
store i64 %.elt183.elt205.elt253.elt255, i64* %.sroa.37.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
%.sroa.38.40..sroa_idx = getelementptr inbounds i8, i8* %80, i64 248
%.sroa.38.40..sroa_cast = bitcast i8* %.sroa.38.40..sroa_idx to i64*
store i64 %.elt183.elt205.elt253.elt257, i64* %.sroa.38.40..sroa_cast, align 8, !alias.scope !6, !noalias !10
store {}* %71, {}** %.sub, align 8
%81 = getelementptr inbounds [8 x {}*], [8 x {}*]* %5, i64 0, i64 1
store {}* %72, {}** %81, align 8
%82 = getelementptr inbounds [8 x {}*], [8 x {}*]* %5, i64 0, i64 2
store {}* %73, {}** %82, align 8
%83 = getelementptr inbounds [8 x {}*], [8 x {}*]* %5, i64 0, i64 3
store {}* %75, {}** %83, align 8
%84 = getelementptr inbounds [8 x {}*], [8 x {}*]* %5, i64 0, i64 4
store {}* inttoptr (i64 129626576620672 to {}*), {}** %84, align 8
%85 = getelementptr inbounds [8 x {}*], [8 x {}*]* %5, i64 0, i64 5
store {}* inttoptr (i64 129626576614160 to {}*), {}** %85, align 8
%86 = getelementptr inbounds [8 x {}*], [8 x {}*]* %5, i64 0, i64 6
store {}* %77, {}** %86, align 8
%87 = getelementptr inbounds [8 x {}*], [8 x {}*]* %5, i64 0, i64 7
store {}* %79, {}** %87, align 8
%88 = call nonnull {}* @ijl_apply_generic({}* nonnull inttoptr (i64 129626763962080 to {}*), {}** nonnull %.sub, i32 8)
call void @llvm.trap()
call void @llvm.trap()
call void asm sideeffect "exit;", ""() #2
unreachable
}
declare {}* @gpu_gc_pool_alloc(i64)
attributes #0 = { cold nounwind }
attributes #1 = { nocallback nofree nosync nounwind readnone speculatable willreturn }
attributes #2 = { nounwind }
!llvm.module.flags = !{!0, !1}
!julia.kernel = !{!2}
!nvvm.annotations = !{!3}
!0 = !{i32 2, !"Dwarf Version", i32 2}
!1 = !{i32 2, !"Debug Info Version", i32 3}
!2 = !{void ({ { [2 x i64], [1 x [2 x i64]] } }, [4 x { [1 x i8 addrspace(1)*], [3 x i64] }], { { { { [1 x i8 addrspace(1)*], [3 x i64] } } } }, { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double }, { { double, double, double, i64, i64 }, { { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] } } })* @_Z30gpu__fill_bottom_and_top_halo_16CompilerMetadataI16OffsetStaticSizeI12_1_20__1_20_E12DynamicCheckvv7NDRangeILl2E10StaticSizeI6_2__2_ES3_I8_16__16_E5TupleI5Int64S5_E13KernelOffsetsIS4_IS5_S5_EEEES4_I11OffsetArrayI7Float64Ll3E13CuTracedArrayIS8_Ll3ELl1E12_35__34__16_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__35__16_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__34__16_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__34__16_EEES4_I17BoundaryConditionI4FluxvES10_IS11_vES10_IS11_vES10_IS11_vEES4_IS10_IS11_vES10_IS11_vES10_IS11_vES10_IS11_5FieldI6CenterS13_vvvvS7_IS8_Ll3ES9_IS8_Ll3ELl1E11_34__34__1_EES8_vvvEEES4_IS4_I4FaceS13_S13_ES4_IS13_S14_S13_ES4_IS13_S13_S13_ES4_IS13_S13_S13_EE21LatitudeLongitudeGridIS8_7BoundedS16_S16_24StaticVerticalCoordinateIS7_IS8_Ll1ES9_IS8_Ll1ELl1E5_17__EES7_IS8_Ll1ES9_IS8_Ll1ELl1E5_16__EES7_IS8_Ll1ES9_IS8_Ll1ELl1E5_17__EES7_IS8_Ll1ES9_IS8_Ll1ELl1E5_16__EEES7_IS8_Ll1ES9_IS8_Ll1ELl1E5_34__EES8_S8_S8_S7_IS8_Ll1E12StepRangeLenIS8_14TwicePrecisionIS8_ES19_IS8_ES5_EES7_IS8_Ll1ES18_IS8_S19_IS8_ES19_IS8_ES5_EEvES4_I10NamedTupleI53__time___last__t___last_stage__t___iteration___stage_S4_IS8_S8_S8_S5_S5_EES20_I32__u___v___w_______U___V___b___c_S4_IS7_IS8_Ll3ES9_IS8_Ll3ELl1E12_35__34__16_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__35__16_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__34__17_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E11_34__34__1_EES12_IS14_S13_vvvvS7_IS8_Ll3ES9_IS8_Ll3ELl1E11_35__34__1_EES8_vvvES12_IS13_S14_vvvvS7_IS8_Ll3ES9_IS8_Ll3ELl1E11_34__35__1_EES8_vvvES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__34__16_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__34__16_EEEEE}
!3 = !{void ({ { [2 x i64], [1 x [2 x i64]] } }, [4 x { [1 x i8 addrspace(1)*], [3 x i64] }], { { { { [1 x i8 addrspace(1)*], [3 x i64] } } } }, { i64, i64, i64, i64, i64, i64, double, double, double, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, double, double, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, { { [2 x double], [2 x double], i64, i64 }, [1 x i64] }, [4 x { [1 x i8 addrspace(1)*], [1 x i64] }], { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double, double, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, { [1 x i8 addrspace(1)*], [1 x i64] }, double }, { { double, double, double, i64, i64 }, { { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { { [1 x i8 addrspace(1)*], [3 x i64] } }, { [1 x i8 addrspace(1)*], [3 x i64] }, { [1 x i8 addrspace(1)*], [3 x i64] } } })* @_Z30gpu__fill_bottom_and_top_halo_16CompilerMetadataI16OffsetStaticSizeI12_1_20__1_20_E12DynamicCheckvv7NDRangeILl2E10StaticSizeI6_2__2_ES3_I8_16__16_E5TupleI5Int64S5_E13KernelOffsetsIS4_IS5_S5_EEEES4_I11OffsetArrayI7Float64Ll3E13CuTracedArrayIS8_Ll3ELl1E12_35__34__16_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__35__16_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__34__16_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__34__16_EEES4_I17BoundaryConditionI4FluxvES10_IS11_vES10_IS11_vES10_IS11_vEES4_IS10_IS11_vES10_IS11_vES10_IS11_vES10_IS11_5FieldI6CenterS13_vvvvS7_IS8_Ll3ES9_IS8_Ll3ELl1E11_34__34__1_EES8_vvvEEES4_IS4_I4FaceS13_S13_ES4_IS13_S14_S13_ES4_IS13_S13_S13_ES4_IS13_S13_S13_EE21LatitudeLongitudeGridIS8_7BoundedS16_S16_24StaticVerticalCoordinateIS7_IS8_Ll1ES9_IS8_Ll1ELl1E5_17__EES7_IS8_Ll1ES9_IS8_Ll1ELl1E5_16__EES7_IS8_Ll1ES9_IS8_Ll1ELl1E5_17__EES7_IS8_Ll1ES9_IS8_Ll1ELl1E5_16__EEES7_IS8_Ll1ES9_IS8_Ll1ELl1E5_34__EES8_S8_S8_S7_IS8_Ll1E12StepRangeLenIS8_14TwicePrecisionIS8_ES19_IS8_ES5_EES7_IS8_Ll1ES18_IS8_S19_IS8_ES19_IS8_ES5_EEvES4_I10NamedTupleI53__time___last__t___last_stage__t___iteration___stage_S4_IS8_S8_S8_S5_S5_EES20_I32__u___v___w_______U___V___b___c_S4_IS7_IS8_Ll3ES9_IS8_Ll3ELl1E12_35__34__16_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__35__16_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__34__17_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E11_34__34__1_EES12_IS14_S13_vvvvS7_IS8_Ll3ES9_IS8_Ll3ELl1E11_35__34__1_EES8_vvvES12_IS13_S14_vvvvS7_IS8_Ll3ES9_IS8_Ll3ELl1E11_34__35__1_EES8_vvvES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__34__16_EES7_IS8_Ll3ES9_IS8_Ll3ELl1E12_34__34__16_EEEEE, !"kernel", i32 1}
!4 = !{i32 0, i32 1023}
!5 = !{i32 0, i32 2147483646}
!6 = !{!7, !9}
!7 = !{!"jnoalias_const", !8}
!8 = !{!"jnoalias"}
!9 = !{!"jnoalias_data", !8}
!10 = !{!11, !12, !13}
!11 = !{!"jnoalias_gcframe", !8}
!12 = !{!"jnoalias_stack", !8}
!13 = !{!"jnoalias_typemd", !8} |
llvm parse code is here llvm-project/llvm/lib/IR/Metadata.cpp Line 1141 in a15fedc
So here we would have
llvm-project/llvm/include/llvm/IR/Metadata.h Line 1580 in a15fedc
This makes |
That looks like a missing feature of the import and LLVM dialect. The import assumes the first entry of an alias scope is a self-reference (
These two things would have to be extend to support string identifiers. IUC the string identifiers should be separate from the distinct attribute since they may be merged when merging compilation units. Out of curiosity, how did you get such alias scopes? We never encountered them in real-life. |
It's emitted via Julia |
Yes a self-reference is not necessary. Form the language ref: "The first entry is the name of the scope. Note that if the name is a string then it can be combined across functions and translation units." |
Ah that explains why we never saw this :). I think it is just a missing feature in LLVM dialect. If you can generate self-references instead that would be an alternative quick fix. |
potentially, but unfortunately Julia's codegen is out of my control (I could attempt a nasty shim but at that point we might as well fix it). What if we changed the distinctattr to be optional here:
and if not set, one must set the description (representing the string name here) |
I would not use the description since it may be used to store the actual description: Maybe something like this:
with a verifier that checks that id is either a string or a distinct attribute makes sense? I am unfortunately not aware of a better way to model this. Alternatively we could have an optional distinct attribute and an optional string attribute parameter. |
For completeness, metadata nodes with self-references are an outdated mechanism of ensuring distinctness. |
@llvm/issue-subscribers-mlir-llvm Author: William Moses (wsmoses)
Unsupported alias scope node: `!7 = !{!"jnoalias_const", !8}`
|
Unsupported alias scope node:
!7 = !{!"jnoalias_const", !8}
The text was updated successfully, but these errors were encountered: