======================================================= 1 x 1 time=0.0010840892791748047 ------------------------------------------------------- define void @"julia_+_70730"(%Dual.69* noalias sret, %Dual.69*, %Dual.69*) #0 { top: %3 = getelementptr inbounds %Dual.69, %Dual.69* %1, i64 0, i32 0, i32 1, i32 0, i64 0 %4 = load double, double* %3, align 8 %5 = getelementptr inbounds %Dual.69, %Dual.69* %2, i64 0, i32 0, i32 1, i32 0, i64 0 %6 = load double, double* %5, align 8 %7 = fadd double %4, %6 %8 = getelementptr inbounds %Dual.69, %Dual.69* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %9 = load double, double* %8, align 8 %10 = getelementptr inbounds %Dual.69, %Dual.69* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %11 = load double, double* %10, align 8 %12 = fadd double %9, %11 %13 = getelementptr inbounds %Dual.69, %Dual.69* %1, i64 0, i32 1, i32 0, i64 0, i32 0 %14 = load double, double* %13, align 8 %15 = getelementptr inbounds %Dual.69, %Dual.69* %2, i64 0, i32 1, i32 0, i64 0, i32 0 %16 = load double, double* %15, align 8 %17 = fadd double %14, %16 %18 = insertelement <1 x double> undef, double %12, i32 0 %19 = getelementptr inbounds %Dual.69, %Dual.69* %1, i64 0, i32 0, i32 0 %20 = load double, double* %19, align 8 %21 = getelementptr inbounds %Dual.69, %Dual.69* %2, i64 0, i32 0, i32 0 %22 = load double, double* %21, align 8 %23 = fadd double %20, %22 %24 = getelementptr inbounds %Dual.69, %Dual.69* %0, i64 0, i32 0, i32 0 store double %23, double* %24, align 8 %25 = getelementptr inbounds %Dual.69, %Dual.69* %0, i64 0, i32 0, i32 1, i32 0, i64 0 store double %7, double* %25, align 8 %26 = getelementptr inbounds %Dual.69, %Dual.69* %0, i64 0, i32 1, i32 0, i64 0, i32 0 store double %17, double* %26, align 8 %27 = getelementptr inbounds %Dual.69, %Dual.69* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0 store <1 x double> %18, <1 x double>* %27, align 8 ret void } ======================================================= 1 x 3 time=0.0023479461669921875 ------------------------------------------------------- define void @"julia_+_70746"(%Dual.74* noalias sret, %Dual.74*, %Dual.74*) #0 { top: %.sroa.216 = alloca [24 x i8], align 8 %.sroa.220 = alloca [24 x i8], align 8 %.sroa.5.sroa.2 = alloca [24 x i8], align 8 %.sroa.211 = alloca [24 x i8], align 8 %"#temp#1.sroa.0.sroa.2" = alloca [24 x i8], align 8 %3 = getelementptr inbounds %Dual.74, %Dual.74* %1, i64 0, i32 0, i32 1, i32 0, i64 0 %4 = load double, double* %3, align 8 %5 = getelementptr inbounds %Dual.74, %Dual.74* %2, i64 0, i32 0, i32 1, i32 0, i64 0 %6 = load double, double* %5, align 8 %7 = fadd double %4, %6 %8 = insertelement <3 x double> undef, double %7, i32 0 %9 = getelementptr inbounds %Dual.74, %Dual.74* %1, i64 0, i32 0, i32 1, i32 0, i64 1 %10 = load double, double* %9, align 8 %11 = getelementptr inbounds %Dual.74, %Dual.74* %2, i64 0, i32 0, i32 1, i32 0, i64 1 %12 = load double, double* %11, align 8 %13 = fadd double %10, %12 %14 = insertelement <3 x double> %8, double %13, i32 1 %15 = getelementptr inbounds %Dual.74, %Dual.74* %1, i64 0, i32 0, i32 1, i32 0, i64 2 %16 = load double, double* %15, align 8 %17 = getelementptr inbounds %Dual.74, %Dual.74* %2, i64 0, i32 0, i32 1, i32 0, i64 2 %18 = load double, double* %17, align 8 %19 = fadd double %16, %18 %20 = insertelement <3 x double> %14, double %19, i32 2 %21 = getelementptr inbounds %Dual.74, %Dual.74* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %22 = load double, double* %21, align 8 %23 = getelementptr inbounds %Dual.74, %Dual.74* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %24 = load double, double* %23, align 8 %25 = fadd double %22, %24 %26 = insertelement <3 x double> undef, double %25, i32 0 %27 = getelementptr inbounds %Dual.74, %Dual.74* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %28 = load double, double* %27, align 8 %29 = getelementptr inbounds %Dual.74, %Dual.74* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %30 = load double, double* %29, align 8 %31 = fadd double %28, %30 %32 = insertelement <3 x double> %26, double %31, i32 1 %33 = getelementptr inbounds %Dual.74, %Dual.74* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %34 = load double, double* %33, align 8 %35 = getelementptr inbounds %Dual.74, %Dual.74* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %36 = load double, double* %35, align 8 %37 = fadd double %34, %36 %38 = insertelement <3 x double> %32, double %37, i32 2 %39 = getelementptr inbounds %Dual.74, %Dual.74* %1, i64 0, i32 1, i32 0, i64 0, i32 0 %40 = load double, double* %39, align 8 %41 = getelementptr inbounds %Dual.74, %Dual.74* %2, i64 0, i32 1, i32 0, i64 0, i32 0 %42 = load double, double* %41, align 8 %43 = fadd double %40, %42 %44 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.211, i64 0, i64 0 %45 = getelementptr inbounds [24 x i8], [24 x i8]* %"#temp#1.sroa.0.sroa.2", i64 0, i64 0 call void @llvm.memmove.p0i8.p0i8.i64(i8* %45, i8* %44, i64 24, i32 8, i1 false) %46 = getelementptr inbounds %Dual.74, %Dual.74* %1, i64 0, i32 0, i32 0 %47 = load double, double* %46, align 8 %48 = getelementptr inbounds %Dual.74, %Dual.74* %2, i64 0, i32 0, i32 0 %49 = load double, double* %48, align 8 %50 = fadd double %47, %49 %51 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.216, i64 0, i64 0 %52 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.220, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %52, i8* %51, i64 24, i32 8, i1 false) %53 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.2, i64 0, i64 0 call void @llvm.memmove.p0i8.p0i8.i64(i8* %53, i8* %45, i64 24, i32 8, i1 false) %54 = getelementptr inbounds %Dual.74, %Dual.74* %0, i64 0, i32 0, i32 0 store double %50, double* %54, align 32 %55 = bitcast %Dual.74* %0 to i8* %56 = getelementptr inbounds i8, i8* %55, i64 8 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %56, i8* %52, i64 24, i32 8, i1 false) %57 = getelementptr inbounds %Dual.74, %Dual.74* %0, i64 0, i32 0, i32 1, i32 0 store <3 x double> %20, <3 x double>* %57, align 32 %58 = getelementptr inbounds %Dual.74, %Dual.74* %0, i64 0, i32 1, i32 0, i64 0, i32 0 store double %43, double* %58, align 32 %59 = getelementptr inbounds i8, i8* %55, i64 72 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %59, i8* %53, i64 24, i32 8, i1 false) %60 = getelementptr inbounds %Dual.74, %Dual.74* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0 store <3 x double> %38, <3 x double>* %60, align 32 ret void } ======================================================= 1 x 6 time=0.008126974105834961 ------------------------------------------------------- define void @"julia_+_70763"(%Dual.79* noalias sret, %Dual.79*, %Dual.79*) #0 { top: %.sroa.224 = alloca [56 x i8], align 8 %.sroa.426 = alloca [16 x i8], align 16 %.sroa.216 = alloca [56 x i8], align 8 %.sroa.318 = alloca [16 x i8], align 16 %.sroa.220 = alloca [56 x i8], align 8 %.sroa.422 = alloca [16 x i8], align 16 %.sroa.5.sroa.2 = alloca [56 x i8], align 8 %.sroa.5.sroa.4 = alloca [16 x i8], align 16 %.sroa.211 = alloca [56 x i8], align 8 %.sroa.3 = alloca [16 x i8], align 16 %.sroa.0.sroa.2 = alloca [56 x i8], align 8 %.sroa.0.sroa.4 = alloca [16 x i8], align 16 %"#temp#1.sroa.0.sroa.2" = alloca [56 x i8], align 8 %"#temp#1.sroa.0.sroa.4" = alloca [16 x i8], align 16 %"#temp#2.sroa.2" = alloca [16 x i8], align 16 %3 = getelementptr inbounds %Dual.79, %Dual.79* %1, i64 0, i32 0, i32 1, i32 0, i64 0 %4 = load double, double* %3, align 8 %5 = getelementptr inbounds %Dual.79, %Dual.79* %2, i64 0, i32 0, i32 1, i32 0, i64 0 %6 = load double, double* %5, align 8 %7 = fadd double %4, %6 %8 = insertelement <6 x double> undef, double %7, i32 0 %9 = getelementptr inbounds %Dual.79, %Dual.79* %1, i64 0, i32 0, i32 1, i32 0, i64 1 %10 = load double, double* %9, align 8 %11 = getelementptr inbounds %Dual.79, %Dual.79* %2, i64 0, i32 0, i32 1, i32 0, i64 1 %12 = load double, double* %11, align 8 %13 = fadd double %10, %12 %14 = insertelement <6 x double> %8, double %13, i32 1 %15 = getelementptr inbounds %Dual.79, %Dual.79* %1, i64 0, i32 0, i32 1, i32 0, i64 2 %16 = load double, double* %15, align 8 %17 = getelementptr inbounds %Dual.79, %Dual.79* %2, i64 0, i32 0, i32 1, i32 0, i64 2 %18 = load double, double* %17, align 8 %19 = fadd double %16, %18 %20 = insertelement <6 x double> %14, double %19, i32 2 %21 = getelementptr inbounds %Dual.79, %Dual.79* %1, i64 0, i32 0, i32 1, i32 0, i64 3 %22 = load double, double* %21, align 8 %23 = getelementptr inbounds %Dual.79, %Dual.79* %2, i64 0, i32 0, i32 1, i32 0, i64 3 %24 = load double, double* %23, align 8 %25 = fadd double %22, %24 %26 = insertelement <6 x double> %20, double %25, i32 3 %27 = getelementptr inbounds %Dual.79, %Dual.79* %1, i64 0, i32 0, i32 1, i32 0, i64 4 %28 = load double, double* %27, align 8 %29 = getelementptr inbounds %Dual.79, %Dual.79* %2, i64 0, i32 0, i32 1, i32 0, i64 4 %30 = load double, double* %29, align 8 %31 = fadd double %28, %30 %32 = insertelement <6 x double> %26, double %31, i32 4 %33 = getelementptr inbounds %Dual.79, %Dual.79* %1, i64 0, i32 0, i32 1, i32 0, i64 5 %34 = load double, double* %33, align 8 %35 = getelementptr inbounds %Dual.79, %Dual.79* %2, i64 0, i32 0, i32 1, i32 0, i64 5 %36 = load double, double* %35, align 8 %37 = fadd double %34, %36 %38 = insertelement <6 x double> %32, double %37, i32 5 %39 = getelementptr inbounds %Dual.79, %Dual.79* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %40 = load double, double* %39, align 8 %41 = getelementptr inbounds %Dual.79, %Dual.79* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %42 = load double, double* %41, align 8 %43 = fadd double %40, %42 %44 = insertelement <6 x double> undef, double %43, i32 0 %45 = getelementptr inbounds %Dual.79, %Dual.79* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %46 = load double, double* %45, align 8 %47 = getelementptr inbounds %Dual.79, %Dual.79* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %48 = load double, double* %47, align 8 %49 = fadd double %46, %48 %50 = insertelement <6 x double> %44, double %49, i32 1 %51 = getelementptr inbounds %Dual.79, %Dual.79* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %52 = load double, double* %51, align 8 %53 = getelementptr inbounds %Dual.79, %Dual.79* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %54 = load double, double* %53, align 8 %55 = fadd double %52, %54 %56 = insertelement <6 x double> %50, double %55, i32 2 %57 = getelementptr inbounds %Dual.79, %Dual.79* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 3 %58 = load double, double* %57, align 8 %59 = getelementptr inbounds %Dual.79, %Dual.79* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 3 %60 = load double, double* %59, align 8 %61 = fadd double %58, %60 %62 = insertelement <6 x double> %56, double %61, i32 3 %63 = getelementptr inbounds %Dual.79, %Dual.79* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 4 %64 = load double, double* %63, align 8 %65 = getelementptr inbounds %Dual.79, %Dual.79* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 4 %66 = load double, double* %65, align 8 %67 = fadd double %64, %66 %68 = insertelement <6 x double> %62, double %67, i32 4 %69 = getelementptr inbounds %Dual.79, %Dual.79* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 5 %70 = load double, double* %69, align 8 %71 = getelementptr inbounds %Dual.79, %Dual.79* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 5 %72 = load double, double* %71, align 8 %73 = fadd double %70, %72 %74 = insertelement <6 x double> %68, double %73, i32 5 %75 = getelementptr inbounds %Dual.79, %Dual.79* %1, i64 0, i32 1, i32 0, i64 0, i32 0 %76 = load double, double* %75, align 8 %77 = getelementptr inbounds %Dual.79, %Dual.79* %2, i64 0, i32 1, i32 0, i64 0, i32 0 %78 = load double, double* %77, align 8 %79 = fadd double %76, %78 %80 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.211, i64 0, i64 0 %81 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.0.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %81, i8* %80, i64 56, i32 8, i1 false) %82 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.3, i64 0, i64 0 %83 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.0.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %83, i8* %82, i64 16, i32 16, i1 false) %84 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#1.sroa.0.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %84, i8* %81, i64 56, i32 8, i1 false) %85 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#1.sroa.0.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %85, i8* %83, i64 16, i32 16, i1 false) %86 = getelementptr inbounds %Dual.79, %Dual.79* %1, i64 0, i32 0, i32 0 %87 = load double, double* %86, align 8 %88 = getelementptr inbounds %Dual.79, %Dual.79* %2, i64 0, i32 0, i32 0 %89 = load double, double* %88, align 8 %90 = fadd double %87, %89 %91 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#2.sroa.2", i64 0, i64 0 %92 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.318, i64 0, i64 0 call void @llvm.memmove.p0i8.p0i8.i64(i8* %92, i8* %91, i64 16, i32 16, i1 false) %93 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.216, i64 0, i64 0 %94 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.220, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %94, i8* %93, i64 56, i32 8, i1 false) %95 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.422, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %95, i8* %92, i64 16, i32 16, i1 false) %96 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.224, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %96, i8* %84, i64 56, i32 8, i1 false) %97 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.426, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %97, i8* %85, i64 16, i32 16, i1 false) %98 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %98, i8* %96, i64 56, i32 8, i1 false) %99 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %99, i8* %97, i64 16, i32 16, i1 false) %100 = getelementptr inbounds %Dual.79, %Dual.79* %0, i64 0, i32 0, i32 0 store double %90, double* %100, align 64 %101 = bitcast %Dual.79* %0 to i8* %102 = getelementptr inbounds i8, i8* %101, i64 8 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %102, i8* %94, i64 56, i32 8, i1 false) %103 = getelementptr inbounds %Dual.79, %Dual.79* %0, i64 0, i32 0, i32 1, i32 0 store <6 x double> %38, <6 x double>* %103, align 64 %104 = getelementptr inbounds %Dual.79, %Dual.79* %0, i64 0, i32 0, i32 1, i32 0, i64 6 %105 = bitcast double* %104 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %105, i8* %95, i64 16, i32 16, i1 false) %106 = getelementptr inbounds %Dual.79, %Dual.79* %0, i64 0, i32 1, i32 0, i64 0, i32 0 store double %79, double* %106, align 64 %107 = getelementptr inbounds i8, i8* %101, i64 136 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %107, i8* %98, i64 56, i32 8, i1 false) %108 = getelementptr inbounds %Dual.79, %Dual.79* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0 store <6 x double> %74, <6 x double>* %108, align 64 %109 = getelementptr inbounds %Dual.79, %Dual.79* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 6 %110 = bitcast double* %109 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %110, i8* %99, i64 16, i32 16, i1 false) ret void } ======================================================= 1 x 9 time=0.019503116607666016 ------------------------------------------------------- define void @"julia_+_70780"(%Dual.84* noalias sret, %Dual.84*, %Dual.84*) #0 { top: %.sroa.224 = alloca [120 x i8], align 8 %.sroa.426 = alloca [56 x i8], align 8 %.sroa.216 = alloca [120 x i8], align 8 %.sroa.318 = alloca [56 x i8], align 8 %.sroa.220 = alloca [120 x i8], align 8 %.sroa.422 = alloca [56 x i8], align 8 %.sroa.5.sroa.2 = alloca [120 x i8], align 8 %.sroa.5.sroa.4 = alloca [56 x i8], align 8 %.sroa.211 = alloca [120 x i8], align 8 %.sroa.3 = alloca [56 x i8], align 8 %.sroa.0.sroa.2 = alloca [120 x i8], align 8 %.sroa.0.sroa.4 = alloca [56 x i8], align 8 %"#temp#1.sroa.0.sroa.2" = alloca [120 x i8], align 8 %"#temp#1.sroa.0.sroa.4" = alloca [56 x i8], align 8 %"#temp#2.sroa.2" = alloca [56 x i8], align 8 %3 = getelementptr inbounds %Dual.84, %Dual.84* %1, i64 0, i32 0, i32 1, i32 0, i64 0 %4 = load double, double* %3, align 8 %5 = getelementptr inbounds %Dual.84, %Dual.84* %2, i64 0, i32 0, i32 1, i32 0, i64 0 %6 = load double, double* %5, align 8 %7 = fadd double %4, %6 %8 = insertelement <9 x double> undef, double %7, i32 0 %9 = getelementptr inbounds %Dual.84, %Dual.84* %1, i64 0, i32 0, i32 1, i32 0, i64 1 %10 = load double, double* %9, align 8 %11 = getelementptr inbounds %Dual.84, %Dual.84* %2, i64 0, i32 0, i32 1, i32 0, i64 1 %12 = load double, double* %11, align 8 %13 = fadd double %10, %12 %14 = insertelement <9 x double> %8, double %13, i32 1 %15 = getelementptr inbounds %Dual.84, %Dual.84* %1, i64 0, i32 0, i32 1, i32 0, i64 2 %16 = load double, double* %15, align 8 %17 = getelementptr inbounds %Dual.84, %Dual.84* %2, i64 0, i32 0, i32 1, i32 0, i64 2 %18 = load double, double* %17, align 8 %19 = fadd double %16, %18 %20 = insertelement <9 x double> %14, double %19, i32 2 %21 = getelementptr inbounds %Dual.84, %Dual.84* %1, i64 0, i32 0, i32 1, i32 0, i64 3 %22 = load double, double* %21, align 8 %23 = getelementptr inbounds %Dual.84, %Dual.84* %2, i64 0, i32 0, i32 1, i32 0, i64 3 %24 = load double, double* %23, align 8 %25 = fadd double %22, %24 %26 = insertelement <9 x double> %20, double %25, i32 3 %27 = getelementptr inbounds %Dual.84, %Dual.84* %1, i64 0, i32 0, i32 1, i32 0, i64 4 %28 = load double, double* %27, align 8 %29 = getelementptr inbounds %Dual.84, %Dual.84* %2, i64 0, i32 0, i32 1, i32 0, i64 4 %30 = load double, double* %29, align 8 %31 = fadd double %28, %30 %32 = insertelement <9 x double> %26, double %31, i32 4 %33 = getelementptr inbounds %Dual.84, %Dual.84* %1, i64 0, i32 0, i32 1, i32 0, i64 5 %34 = load double, double* %33, align 8 %35 = getelementptr inbounds %Dual.84, %Dual.84* %2, i64 0, i32 0, i32 1, i32 0, i64 5 %36 = load double, double* %35, align 8 %37 = fadd double %34, %36 %38 = insertelement <9 x double> %32, double %37, i32 5 %39 = getelementptr inbounds %Dual.84, %Dual.84* %1, i64 0, i32 0, i32 1, i32 0, i64 6 %40 = load double, double* %39, align 8 %41 = getelementptr inbounds %Dual.84, %Dual.84* %2, i64 0, i32 0, i32 1, i32 0, i64 6 %42 = load double, double* %41, align 8 %43 = fadd double %40, %42 %44 = insertelement <9 x double> %38, double %43, i32 6 %45 = getelementptr inbounds %Dual.84, %Dual.84* %1, i64 0, i32 0, i32 1, i32 0, i64 7 %46 = load double, double* %45, align 8 %47 = getelementptr inbounds %Dual.84, %Dual.84* %2, i64 0, i32 0, i32 1, i32 0, i64 7 %48 = load double, double* %47, align 8 %49 = fadd double %46, %48 %50 = insertelement <9 x double> %44, double %49, i32 7 %51 = getelementptr inbounds %Dual.84, %Dual.84* %1, i64 0, i32 0, i32 1, i32 0, i64 8 %52 = load double, double* %51, align 8 %53 = getelementptr inbounds %Dual.84, %Dual.84* %2, i64 0, i32 0, i32 1, i32 0, i64 8 %54 = load double, double* %53, align 8 %55 = fadd double %52, %54 %56 = insertelement <9 x double> %50, double %55, i32 8 %57 = getelementptr inbounds %Dual.84, %Dual.84* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %58 = load double, double* %57, align 8 %59 = getelementptr inbounds %Dual.84, %Dual.84* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %60 = load double, double* %59, align 8 %61 = fadd double %58, %60 %62 = insertelement <9 x double> undef, double %61, i32 0 %63 = getelementptr inbounds %Dual.84, %Dual.84* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %64 = load double, double* %63, align 8 %65 = getelementptr inbounds %Dual.84, %Dual.84* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %66 = load double, double* %65, align 8 %67 = fadd double %64, %66 %68 = insertelement <9 x double> %62, double %67, i32 1 %69 = getelementptr inbounds %Dual.84, %Dual.84* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %70 = load double, double* %69, align 8 %71 = getelementptr inbounds %Dual.84, %Dual.84* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %72 = load double, double* %71, align 8 %73 = fadd double %70, %72 %74 = insertelement <9 x double> %68, double %73, i32 2 %75 = getelementptr inbounds %Dual.84, %Dual.84* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 3 %76 = load double, double* %75, align 8 %77 = getelementptr inbounds %Dual.84, %Dual.84* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 3 %78 = load double, double* %77, align 8 %79 = fadd double %76, %78 %80 = insertelement <9 x double> %74, double %79, i32 3 %81 = getelementptr inbounds %Dual.84, %Dual.84* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 4 %82 = load double, double* %81, align 8 %83 = getelementptr inbounds %Dual.84, %Dual.84* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 4 %84 = load double, double* %83, align 8 %85 = fadd double %82, %84 %86 = insertelement <9 x double> %80, double %85, i32 4 %87 = getelementptr inbounds %Dual.84, %Dual.84* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 5 %88 = load double, double* %87, align 8 %89 = getelementptr inbounds %Dual.84, %Dual.84* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 5 %90 = load double, double* %89, align 8 %91 = fadd double %88, %90 %92 = insertelement <9 x double> %86, double %91, i32 5 %93 = getelementptr inbounds %Dual.84, %Dual.84* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 6 %94 = load double, double* %93, align 8 %95 = getelementptr inbounds %Dual.84, %Dual.84* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 6 %96 = load double, double* %95, align 8 %97 = fadd double %94, %96 %98 = insertelement <9 x double> %92, double %97, i32 6 %99 = getelementptr inbounds %Dual.84, %Dual.84* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 7 %100 = load double, double* %99, align 8 %101 = getelementptr inbounds %Dual.84, %Dual.84* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 7 %102 = load double, double* %101, align 8 %103 = fadd double %100, %102 %104 = insertelement <9 x double> %98, double %103, i32 7 %105 = getelementptr inbounds %Dual.84, %Dual.84* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 8 %106 = load double, double* %105, align 8 %107 = getelementptr inbounds %Dual.84, %Dual.84* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 8 %108 = load double, double* %107, align 8 %109 = fadd double %106, %108 %110 = insertelement <9 x double> %104, double %109, i32 8 %111 = getelementptr inbounds %Dual.84, %Dual.84* %1, i64 0, i32 1, i32 0, i64 0, i32 0 %112 = load double, double* %111, align 8 %113 = getelementptr inbounds %Dual.84, %Dual.84* %2, i64 0, i32 1, i32 0, i64 0, i32 0 %114 = load double, double* %113, align 8 %115 = fadd double %112, %114 %116 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.211, i64 0, i64 0 %117 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.0.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %117, i8* %116, i64 120, i32 8, i1 false) %118 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.3, i64 0, i64 0 %119 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.0.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %119, i8* %118, i64 56, i32 8, i1 false) %120 = getelementptr inbounds [120 x i8], [120 x i8]* %"#temp#1.sroa.0.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %120, i8* %117, i64 120, i32 8, i1 false) %121 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#1.sroa.0.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %121, i8* %119, i64 56, i32 8, i1 false) %122 = getelementptr inbounds %Dual.84, %Dual.84* %1, i64 0, i32 0, i32 0 %123 = load double, double* %122, align 8 %124 = getelementptr inbounds %Dual.84, %Dual.84* %2, i64 0, i32 0, i32 0 %125 = load double, double* %124, align 8 %126 = fadd double %123, %125 %127 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#2.sroa.2", i64 0, i64 0 %128 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.318, i64 0, i64 0 call void @llvm.memmove.p0i8.p0i8.i64(i8* %128, i8* %127, i64 56, i32 8, i1 false) %129 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.216, i64 0, i64 0 %130 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.220, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %130, i8* %129, i64 120, i32 8, i1 false) %131 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.422, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %131, i8* %128, i64 56, i32 8, i1 false) %132 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.224, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %132, i8* %120, i64 120, i32 8, i1 false) %133 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.426, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %133, i8* %121, i64 56, i32 8, i1 false) %134 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %134, i8* %132, i64 120, i32 8, i1 false) %135 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %135, i8* %133, i64 56, i32 8, i1 false) %136 = getelementptr inbounds %Dual.84, %Dual.84* %0, i64 0, i32 0, i32 0 store double %126, double* %136, align 128 %137 = bitcast %Dual.84* %0 to i8* %138 = getelementptr inbounds i8, i8* %137, i64 8 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %138, i8* %130, i64 120, i32 8, i1 false) %139 = getelementptr inbounds %Dual.84, %Dual.84* %0, i64 0, i32 0, i32 1, i32 0 store <9 x double> %56, <9 x double>* %139, align 128 %140 = getelementptr inbounds %Dual.84, %Dual.84* %0, i64 0, i32 0, i32 1, i32 0, i64 9 %141 = bitcast double* %140 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %141, i8* %131, i64 56, i32 8, i1 false) %142 = getelementptr inbounds %Dual.84, %Dual.84* %0, i64 0, i32 1, i32 0, i64 0, i32 0 store double %115, double* %142, align 128 %143 = getelementptr inbounds i8, i8* %137, i64 264 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %143, i8* %134, i64 120, i32 8, i1 false) %144 = getelementptr inbounds %Dual.84, %Dual.84* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0 store <9 x double> %110, <9 x double>* %144, align 128 %145 = getelementptr inbounds %Dual.84, %Dual.84* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 9 %146 = bitcast double* %145 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %146, i8* %135, i64 56, i32 8, i1 false) ret void } ======================================================= 3 x 1 time=0.0022430419921875 ------------------------------------------------------- define void @"julia_+_70787"(%Dual.87* noalias sret, %Dual.87*, %Dual.87*) #0 { top: %3 = getelementptr inbounds %Dual.87, %Dual.87* %1, i64 0, i32 0, i32 1, i32 0, i64 0 %4 = load double, double* %3, align 8 %5 = getelementptr inbounds %Dual.87, %Dual.87* %2, i64 0, i32 0, i32 1, i32 0, i64 0 %6 = load double, double* %5, align 8 %7 = fadd double %4, %6 %8 = getelementptr inbounds %Dual.87, %Dual.87* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %9 = load double, double* %8, align 8 %10 = getelementptr inbounds %Dual.87, %Dual.87* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %11 = load double, double* %10, align 8 %12 = fadd double %9, %11 %13 = getelementptr inbounds %Dual.87, %Dual.87* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %14 = load double, double* %13, align 8 %15 = getelementptr inbounds %Dual.87, %Dual.87* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %16 = load double, double* %15, align 8 %17 = fadd double %14, %16 %18 = getelementptr inbounds %Dual.87, %Dual.87* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %19 = load double, double* %18, align 8 %20 = getelementptr inbounds %Dual.87, %Dual.87* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %21 = load double, double* %20, align 8 %22 = fadd double %19, %21 %23 = getelementptr inbounds %Dual.87, %Dual.87* %1, i64 0, i32 1, i32 0, i64 0, i32 0 %24 = load double, double* %23, align 8 %25 = getelementptr inbounds %Dual.87, %Dual.87* %2, i64 0, i32 1, i32 0, i64 0, i32 0 %26 = load double, double* %25, align 8 %27 = fadd double %24, %26 %28 = insertelement <1 x double> undef, double %12, i32 0 %29 = getelementptr inbounds %Dual.87, %Dual.87* %1, i64 0, i32 1, i32 0, i64 1, i32 0 %30 = load double, double* %29, align 8 %31 = getelementptr inbounds %Dual.87, %Dual.87* %2, i64 0, i32 1, i32 0, i64 1, i32 0 %32 = load double, double* %31, align 8 %33 = fadd double %30, %32 %34 = insertelement <1 x double> undef, double %17, i32 0 %35 = getelementptr inbounds %Dual.87, %Dual.87* %1, i64 0, i32 1, i32 0, i64 2, i32 0 %36 = load double, double* %35, align 8 %37 = getelementptr inbounds %Dual.87, %Dual.87* %2, i64 0, i32 1, i32 0, i64 2, i32 0 %38 = load double, double* %37, align 8 %39 = fadd double %36, %38 %40 = insertelement <1 x double> undef, double %22, i32 0 %41 = getelementptr inbounds %Dual.87, %Dual.87* %1, i64 0, i32 0, i32 0 %42 = load double, double* %41, align 8 %43 = getelementptr inbounds %Dual.87, %Dual.87* %2, i64 0, i32 0, i32 0 %44 = load double, double* %43, align 8 %45 = fadd double %42, %44 %46 = getelementptr inbounds %Dual.87, %Dual.87* %0, i64 0, i32 0, i32 0 store double %45, double* %46, align 8 %47 = getelementptr inbounds %Dual.87, %Dual.87* %0, i64 0, i32 0, i32 1, i32 0, i64 0 store double %7, double* %47, align 8 %48 = getelementptr inbounds %Dual.87, %Dual.87* %0, i64 0, i32 1, i32 0, i64 0, i32 0 store double %27, double* %48, align 8 %49 = getelementptr inbounds %Dual.87, %Dual.87* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0 store <1 x double> %28, <1 x double>* %49, align 8 %50 = getelementptr inbounds %Dual.87, %Dual.87* %0, i64 0, i32 1, i32 0, i64 1, i32 0 store double %33, double* %50, align 8 %51 = getelementptr inbounds %Dual.87, %Dual.87* %0, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0 store <1 x double> %34, <1 x double>* %51, align 8 %52 = getelementptr inbounds %Dual.87, %Dual.87* %0, i64 0, i32 1, i32 0, i64 2, i32 0 store double %39, double* %52, align 8 %53 = getelementptr inbounds %Dual.87, %Dual.87* %0, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0 store <1 x double> %40, <1 x double>* %53, align 8 ret void } ======================================================= 3 x 3 time=0.00943613052368164 ------------------------------------------------------- define void @"julia_+_70794"(%Dual.89* noalias sret, %Dual.89*, %Dual.89*) #0 { top: %.sroa.252 = alloca [24 x i8], align 8 %.sroa.6 = alloca [24 x i8], align 8 %.sroa.10 = alloca [24 x i8], align 8 %.sroa.244 = alloca [24 x i8], align 8 %.sroa.248 = alloca [24 x i8], align 8 %.sroa.5.sroa.257 = alloca [24 x i8], align 8 %.sroa.5.sroa.6 = alloca [24 x i8], align 8 %.sroa.5.sroa.10 = alloca [24 x i8], align 8 %.sroa.237 = alloca [24 x i8], align 8 %.sroa.228 = alloca [24 x i8], align 8 %.sroa.216 = alloca [24 x i8], align 8 %.sroa.219 = alloca [24 x i8], align 8 %.sroa.5.sroa.2 = alloca [24 x i8], align 8 %.sroa.6.sroa.2 = alloca [24 x i8], align 8 %"#temp#3.sroa.2" = alloca [24 x i8], align 8 %"#temp#3.sroa.5.sroa.2" = alloca [24 x i8], align 8 %"#temp#3.sroa.6.sroa.2" = alloca [24 x i8], align 8 %3 = getelementptr inbounds %Dual.89, %Dual.89* %1, i64 0, i32 0, i32 1, i32 0, i64 0 %4 = load double, double* %3, align 8 %5 = getelementptr inbounds %Dual.89, %Dual.89* %2, i64 0, i32 0, i32 1, i32 0, i64 0 %6 = load double, double* %5, align 8 %7 = fadd double %4, %6 %8 = insertelement <3 x double> undef, double %7, i32 0 %9 = getelementptr inbounds %Dual.89, %Dual.89* %1, i64 0, i32 0, i32 1, i32 0, i64 1 %10 = load double, double* %9, align 8 %11 = getelementptr inbounds %Dual.89, %Dual.89* %2, i64 0, i32 0, i32 1, i32 0, i64 1 %12 = load double, double* %11, align 8 %13 = fadd double %10, %12 %14 = insertelement <3 x double> %8, double %13, i32 1 %15 = getelementptr inbounds %Dual.89, %Dual.89* %1, i64 0, i32 0, i32 1, i32 0, i64 2 %16 = load double, double* %15, align 8 %17 = getelementptr inbounds %Dual.89, %Dual.89* %2, i64 0, i32 0, i32 1, i32 0, i64 2 %18 = load double, double* %17, align 8 %19 = fadd double %16, %18 %20 = insertelement <3 x double> %14, double %19, i32 2 %21 = getelementptr inbounds %Dual.89, %Dual.89* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %22 = load double, double* %21, align 8 %23 = getelementptr inbounds %Dual.89, %Dual.89* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %24 = load double, double* %23, align 8 %25 = fadd double %22, %24 %26 = insertelement <3 x double> undef, double %25, i32 0 %27 = getelementptr inbounds %Dual.89, %Dual.89* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %28 = load double, double* %27, align 8 %29 = getelementptr inbounds %Dual.89, %Dual.89* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %30 = load double, double* %29, align 8 %31 = fadd double %28, %30 %32 = insertelement <3 x double> %26, double %31, i32 1 %33 = getelementptr inbounds %Dual.89, %Dual.89* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %34 = load double, double* %33, align 8 %35 = getelementptr inbounds %Dual.89, %Dual.89* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %36 = load double, double* %35, align 8 %37 = fadd double %34, %36 %38 = insertelement <3 x double> %32, double %37, i32 2 %39 = getelementptr inbounds %Dual.89, %Dual.89* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %40 = load double, double* %39, align 8 %41 = getelementptr inbounds %Dual.89, %Dual.89* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %42 = load double, double* %41, align 8 %43 = fadd double %40, %42 %44 = insertelement <3 x double> undef, double %43, i32 0 %45 = getelementptr inbounds %Dual.89, %Dual.89* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 1 %46 = load double, double* %45, align 8 %47 = getelementptr inbounds %Dual.89, %Dual.89* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 1 %48 = load double, double* %47, align 8 %49 = fadd double %46, %48 %50 = insertelement <3 x double> %44, double %49, i32 1 %51 = getelementptr inbounds %Dual.89, %Dual.89* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 2 %52 = load double, double* %51, align 8 %53 = getelementptr inbounds %Dual.89, %Dual.89* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 2 %54 = load double, double* %53, align 8 %55 = fadd double %52, %54 %56 = insertelement <3 x double> %50, double %55, i32 2 %57 = getelementptr inbounds %Dual.89, %Dual.89* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %58 = load double, double* %57, align 8 %59 = getelementptr inbounds %Dual.89, %Dual.89* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %60 = load double, double* %59, align 8 %61 = fadd double %58, %60 %62 = insertelement <3 x double> undef, double %61, i32 0 %63 = getelementptr inbounds %Dual.89, %Dual.89* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 1 %64 = load double, double* %63, align 8 %65 = getelementptr inbounds %Dual.89, %Dual.89* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 1 %66 = load double, double* %65, align 8 %67 = fadd double %64, %66 %68 = insertelement <3 x double> %62, double %67, i32 1 %69 = getelementptr inbounds %Dual.89, %Dual.89* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 2 %70 = load double, double* %69, align 8 %71 = getelementptr inbounds %Dual.89, %Dual.89* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 2 %72 = load double, double* %71, align 8 %73 = fadd double %70, %72 %74 = insertelement <3 x double> %68, double %73, i32 2 %75 = getelementptr inbounds %Dual.89, %Dual.89* %1, i64 0, i32 1, i32 0, i64 0, i32 0 %76 = load double, double* %75, align 8 %77 = getelementptr inbounds %Dual.89, %Dual.89* %2, i64 0, i32 1, i32 0, i64 0, i32 0 %78 = load double, double* %77, align 8 %79 = fadd double %76, %78 %80 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.216, i64 0, i64 0 %81 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.219, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %81, i8* %80, i64 24, i32 8, i1 false) %82 = getelementptr inbounds %Dual.89, %Dual.89* %1, i64 0, i32 1, i32 0, i64 1, i32 0 %83 = load double, double* %82, align 8 %84 = getelementptr inbounds %Dual.89, %Dual.89* %2, i64 0, i32 1, i32 0, i64 1, i32 0 %85 = load double, double* %84, align 8 %86 = fadd double %83, %85 %87 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.228, i64 0, i64 0 %88 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %88, i8* %87, i64 24, i32 8, i1 false) %89 = getelementptr inbounds %Dual.89, %Dual.89* %1, i64 0, i32 1, i32 0, i64 2, i32 0 %90 = load double, double* %89, align 8 %91 = getelementptr inbounds %Dual.89, %Dual.89* %2, i64 0, i32 1, i32 0, i64 2, i32 0 %92 = load double, double* %91, align 8 %93 = fadd double %90, %92 %94 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.237, i64 0, i64 0 %95 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.6.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %95, i8* %94, i64 24, i32 8, i1 false) %96 = getelementptr inbounds [24 x i8], [24 x i8]* %"#temp#3.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %96, i8* %81, i64 24, i32 8, i1 false) %97 = getelementptr inbounds [24 x i8], [24 x i8]* %"#temp#3.sroa.5.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %97, i8* %88, i64 24, i32 8, i1 false) %98 = getelementptr inbounds [24 x i8], [24 x i8]* %"#temp#3.sroa.6.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %98, i8* %95, i64 24, i32 8, i1 false) %99 = getelementptr inbounds %Dual.89, %Dual.89* %1, i64 0, i32 0, i32 0 %100 = load double, double* %99, align 8 %101 = getelementptr inbounds %Dual.89, %Dual.89* %2, i64 0, i32 0, i32 0 %102 = load double, double* %101, align 8 %103 = fadd double %100, %102 %104 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.244, i64 0, i64 0 %105 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.248, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %105, i8* %104, i64 24, i32 8, i1 false) %106 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.252, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %106, i8* %96, i64 24, i32 8, i1 false) %107 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.6, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %107, i8* %97, i64 24, i32 8, i1 false) %108 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.10, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %108, i8* %98, i64 24, i32 8, i1 false) %109 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.257, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %109, i8* %106, i64 24, i32 8, i1 false) %110 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.6, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %110, i8* %107, i64 24, i32 8, i1 false) %111 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.10, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %111, i8* %108, i64 24, i32 8, i1 false) %112 = getelementptr inbounds %Dual.89, %Dual.89* %0, i64 0, i32 0, i32 0 store double %103, double* %112, align 32 %113 = bitcast %Dual.89* %0 to i8* %114 = getelementptr inbounds i8, i8* %113, i64 8 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %114, i8* %105, i64 24, i32 8, i1 false) %115 = getelementptr inbounds %Dual.89, %Dual.89* %0, i64 0, i32 0, i32 1, i32 0 store <3 x double> %20, <3 x double>* %115, align 32 %116 = getelementptr inbounds %Dual.89, %Dual.89* %0, i64 0, i32 1, i32 0, i64 0, i32 0 store double %79, double* %116, align 32 %117 = getelementptr inbounds i8, i8* %113, i64 72 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %117, i8* %109, i64 24, i32 8, i1 false) %118 = getelementptr inbounds %Dual.89, %Dual.89* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0 store <3 x double> %38, <3 x double>* %118, align 32 %119 = getelementptr inbounds %Dual.89, %Dual.89* %0, i64 0, i32 1, i32 0, i64 1, i32 0 store double %86, double* %119, align 32 %120 = getelementptr inbounds i8, i8* %113, i64 136 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %120, i8* %110, i64 24, i32 8, i1 false) %121 = getelementptr inbounds %Dual.89, %Dual.89* %0, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0 store <3 x double> %56, <3 x double>* %121, align 32 %122 = getelementptr inbounds %Dual.89, %Dual.89* %0, i64 0, i32 1, i32 0, i64 2, i32 0 store double %93, double* %122, align 32 %123 = getelementptr inbounds i8, i8* %113, i64 200 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %123, i8* %111, i64 24, i32 8, i1 false) %124 = getelementptr inbounds %Dual.89, %Dual.89* %0, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0 store <3 x double> %74, <3 x double>* %124, align 32 ret void } ======================================================= 3 x 6 time=0.016421079635620117 ------------------------------------------------------- define void @"julia_+_70801"(%Dual.91* noalias sret, %Dual.91*, %Dual.91*) #0 { top: %.sroa.252 = alloca [56 x i8], align 8 %.sroa.454 = alloca [16 x i8], align 16 %.sroa.6 = alloca [56 x i8], align 8 %.sroa.8 = alloca [16 x i8], align 16 %.sroa.10 = alloca [56 x i8], align 8 %.sroa.12 = alloca [16 x i8], align 16 %.sroa.244 = alloca [56 x i8], align 8 %.sroa.346 = alloca [16 x i8], align 16 %.sroa.248 = alloca [56 x i8], align 8 %.sroa.450 = alloca [16 x i8], align 16 %.sroa.5.sroa.257 = alloca [56 x i8], align 8 %.sroa.5.sroa.459 = alloca [16 x i8], align 16 %.sroa.5.sroa.6 = alloca [56 x i8], align 8 %.sroa.5.sroa.8 = alloca [16 x i8], align 16 %.sroa.5.sroa.10 = alloca [56 x i8], align 8 %.sroa.5.sroa.12 = alloca [16 x i8], align 16 %.sroa.237 = alloca [56 x i8], align 8 %.sroa.339 = alloca [16 x i8], align 16 %.sroa.228 = alloca [56 x i8], align 8 %.sroa.330 = alloca [16 x i8], align 16 %.sroa.216 = alloca [56 x i8], align 8 %.sroa.3 = alloca [16 x i8], align 16 %.sroa.219 = alloca [56 x i8], align 8 %.sroa.421 = alloca [16 x i8], align 16 %.sroa.5.sroa.2 = alloca [56 x i8], align 8 %.sroa.5.sroa.4 = alloca [16 x i8], align 16 %.sroa.6.sroa.2 = alloca [56 x i8], align 8 %.sroa.6.sroa.4 = alloca [16 x i8], align 16 %"#temp#3.sroa.2" = alloca [56 x i8], align 8 %"#temp#3.sroa.4" = alloca [16 x i8], align 16 %"#temp#3.sroa.5.sroa.2" = alloca [56 x i8], align 8 %"#temp#3.sroa.5.sroa.4" = alloca [16 x i8], align 16 %"#temp#3.sroa.6.sroa.2" = alloca [56 x i8], align 8 %"#temp#3.sroa.6.sroa.4" = alloca [16 x i8], align 16 %"#temp#4.sroa.2" = alloca [16 x i8], align 16 %3 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 0, i32 1, i32 0, i64 0 %4 = load double, double* %3, align 8 %5 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 0, i32 1, i32 0, i64 0 %6 = load double, double* %5, align 8 %7 = fadd double %4, %6 %8 = insertelement <6 x double> undef, double %7, i32 0 %9 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 0, i32 1, i32 0, i64 1 %10 = load double, double* %9, align 8 %11 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 0, i32 1, i32 0, i64 1 %12 = load double, double* %11, align 8 %13 = fadd double %10, %12 %14 = insertelement <6 x double> %8, double %13, i32 1 %15 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 0, i32 1, i32 0, i64 2 %16 = load double, double* %15, align 8 %17 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 0, i32 1, i32 0, i64 2 %18 = load double, double* %17, align 8 %19 = fadd double %16, %18 %20 = insertelement <6 x double> %14, double %19, i32 2 %21 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 0, i32 1, i32 0, i64 3 %22 = load double, double* %21, align 8 %23 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 0, i32 1, i32 0, i64 3 %24 = load double, double* %23, align 8 %25 = fadd double %22, %24 %26 = insertelement <6 x double> %20, double %25, i32 3 %27 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 0, i32 1, i32 0, i64 4 %28 = load double, double* %27, align 8 %29 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 0, i32 1, i32 0, i64 4 %30 = load double, double* %29, align 8 %31 = fadd double %28, %30 %32 = insertelement <6 x double> %26, double %31, i32 4 %33 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 0, i32 1, i32 0, i64 5 %34 = load double, double* %33, align 8 %35 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 0, i32 1, i32 0, i64 5 %36 = load double, double* %35, align 8 %37 = fadd double %34, %36 %38 = insertelement <6 x double> %32, double %37, i32 5 %39 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %40 = load double, double* %39, align 8 %41 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %42 = load double, double* %41, align 8 %43 = fadd double %40, %42 %44 = insertelement <6 x double> undef, double %43, i32 0 %45 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %46 = load double, double* %45, align 8 %47 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %48 = load double, double* %47, align 8 %49 = fadd double %46, %48 %50 = insertelement <6 x double> %44, double %49, i32 1 %51 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %52 = load double, double* %51, align 8 %53 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %54 = load double, double* %53, align 8 %55 = fadd double %52, %54 %56 = insertelement <6 x double> %50, double %55, i32 2 %57 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 3 %58 = load double, double* %57, align 8 %59 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 3 %60 = load double, double* %59, align 8 %61 = fadd double %58, %60 %62 = insertelement <6 x double> %56, double %61, i32 3 %63 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 4 %64 = load double, double* %63, align 8 %65 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 4 %66 = load double, double* %65, align 8 %67 = fadd double %64, %66 %68 = insertelement <6 x double> %62, double %67, i32 4 %69 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 5 %70 = load double, double* %69, align 8 %71 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 5 %72 = load double, double* %71, align 8 %73 = fadd double %70, %72 %74 = insertelement <6 x double> %68, double %73, i32 5 %75 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %76 = load double, double* %75, align 8 %77 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %78 = load double, double* %77, align 8 %79 = fadd double %76, %78 %80 = insertelement <6 x double> undef, double %79, i32 0 %81 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 1 %82 = load double, double* %81, align 8 %83 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 1 %84 = load double, double* %83, align 8 %85 = fadd double %82, %84 %86 = insertelement <6 x double> %80, double %85, i32 1 %87 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 2 %88 = load double, double* %87, align 8 %89 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 2 %90 = load double, double* %89, align 8 %91 = fadd double %88, %90 %92 = insertelement <6 x double> %86, double %91, i32 2 %93 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 3 %94 = load double, double* %93, align 8 %95 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 3 %96 = load double, double* %95, align 8 %97 = fadd double %94, %96 %98 = insertelement <6 x double> %92, double %97, i32 3 %99 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 4 %100 = load double, double* %99, align 8 %101 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 4 %102 = load double, double* %101, align 8 %103 = fadd double %100, %102 %104 = insertelement <6 x double> %98, double %103, i32 4 %105 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 5 %106 = load double, double* %105, align 8 %107 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 5 %108 = load double, double* %107, align 8 %109 = fadd double %106, %108 %110 = insertelement <6 x double> %104, double %109, i32 5 %111 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %112 = load double, double* %111, align 8 %113 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %114 = load double, double* %113, align 8 %115 = fadd double %112, %114 %116 = insertelement <6 x double> undef, double %115, i32 0 %117 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 1 %118 = load double, double* %117, align 8 %119 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 1 %120 = load double, double* %119, align 8 %121 = fadd double %118, %120 %122 = insertelement <6 x double> %116, double %121, i32 1 %123 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 2 %124 = load double, double* %123, align 8 %125 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 2 %126 = load double, double* %125, align 8 %127 = fadd double %124, %126 %128 = insertelement <6 x double> %122, double %127, i32 2 %129 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 3 %130 = load double, double* %129, align 8 %131 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 3 %132 = load double, double* %131, align 8 %133 = fadd double %130, %132 %134 = insertelement <6 x double> %128, double %133, i32 3 %135 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 4 %136 = load double, double* %135, align 8 %137 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 4 %138 = load double, double* %137, align 8 %139 = fadd double %136, %138 %140 = insertelement <6 x double> %134, double %139, i32 4 %141 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 5 %142 = load double, double* %141, align 8 %143 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 5 %144 = load double, double* %143, align 8 %145 = fadd double %142, %144 %146 = insertelement <6 x double> %140, double %145, i32 5 %147 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 0, i32 0 %148 = load double, double* %147, align 8 %149 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 0, i32 0 %150 = load double, double* %149, align 8 %151 = fadd double %148, %150 %152 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.216, i64 0, i64 0 %153 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.219, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %153, i8* %152, i64 56, i32 8, i1 false) %154 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.3, i64 0, i64 0 %155 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.421, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %155, i8* %154, i64 16, i32 16, i1 false) %156 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 1, i32 0 %157 = load double, double* %156, align 8 %158 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 1, i32 0 %159 = load double, double* %158, align 8 %160 = fadd double %157, %159 %161 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.228, i64 0, i64 0 %162 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %162, i8* %161, i64 56, i32 8, i1 false) %163 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.330, i64 0, i64 0 %164 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %164, i8* %163, i64 16, i32 16, i1 false) %165 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 1, i32 0, i64 2, i32 0 %166 = load double, double* %165, align 8 %167 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 1, i32 0, i64 2, i32 0 %168 = load double, double* %167, align 8 %169 = fadd double %166, %168 %170 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.237, i64 0, i64 0 %171 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.6.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %171, i8* %170, i64 56, i32 8, i1 false) %172 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.339, i64 0, i64 0 %173 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.6.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %173, i8* %172, i64 16, i32 16, i1 false) %174 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#3.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %174, i8* %153, i64 56, i32 8, i1 false) %175 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#3.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %175, i8* %155, i64 16, i32 16, i1 false) %176 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#3.sroa.5.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %176, i8* %162, i64 56, i32 8, i1 false) %177 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#3.sroa.5.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %177, i8* %164, i64 16, i32 16, i1 false) %178 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#3.sroa.6.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %178, i8* %171, i64 56, i32 8, i1 false) %179 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#3.sroa.6.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %179, i8* %173, i64 16, i32 16, i1 false) %180 = getelementptr inbounds %Dual.91, %Dual.91* %1, i64 0, i32 0, i32 0 %181 = load double, double* %180, align 8 %182 = getelementptr inbounds %Dual.91, %Dual.91* %2, i64 0, i32 0, i32 0 %183 = load double, double* %182, align 8 %184 = fadd double %181, %183 %185 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#4.sroa.2", i64 0, i64 0 %186 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.346, i64 0, i64 0 call void @llvm.memmove.p0i8.p0i8.i64(i8* %186, i8* %185, i64 16, i32 16, i1 false) %187 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.244, i64 0, i64 0 %188 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.248, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %188, i8* %187, i64 56, i32 8, i1 false) %189 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.450, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %189, i8* %186, i64 16, i32 16, i1 false) %190 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.252, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %190, i8* %174, i64 56, i32 8, i1 false) %191 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.454, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %191, i8* %175, i64 16, i32 16, i1 false) %192 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.6, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %192, i8* %176, i64 56, i32 8, i1 false) %193 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.8, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %193, i8* %177, i64 16, i32 16, i1 false) %194 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.10, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %194, i8* %178, i64 56, i32 8, i1 false) %195 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.12, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %195, i8* %179, i64 16, i32 16, i1 false) %196 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.257, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %196, i8* %190, i64 56, i32 8, i1 false) %197 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.459, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %197, i8* %191, i64 16, i32 16, i1 false) %198 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.6, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %198, i8* %192, i64 56, i32 8, i1 false) %199 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.8, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %199, i8* %193, i64 16, i32 16, i1 false) %200 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.10, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %200, i8* %194, i64 56, i32 8, i1 false) %201 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.12, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %201, i8* %195, i64 16, i32 16, i1 false) %202 = getelementptr inbounds %Dual.91, %Dual.91* %0, i64 0, i32 0, i32 0 store double %184, double* %202, align 64 %203 = bitcast %Dual.91* %0 to i8* %204 = getelementptr inbounds i8, i8* %203, i64 8 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %204, i8* %188, i64 56, i32 8, i1 false) %205 = getelementptr inbounds %Dual.91, %Dual.91* %0, i64 0, i32 0, i32 1, i32 0 store <6 x double> %38, <6 x double>* %205, align 64 %206 = getelementptr inbounds %Dual.91, %Dual.91* %0, i64 0, i32 0, i32 1, i32 0, i64 6 %207 = bitcast double* %206 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %207, i8* %189, i64 16, i32 16, i1 false) %208 = getelementptr inbounds %Dual.91, %Dual.91* %0, i64 0, i32 1, i32 0, i64 0, i32 0 store double %151, double* %208, align 64 %209 = getelementptr inbounds i8, i8* %203, i64 136 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %209, i8* %196, i64 56, i32 8, i1 false) %210 = getelementptr inbounds %Dual.91, %Dual.91* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0 store <6 x double> %74, <6 x double>* %210, align 64 %211 = getelementptr inbounds %Dual.91, %Dual.91* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 6 %212 = bitcast double* %211 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %212, i8* %197, i64 16, i32 16, i1 false) %213 = getelementptr inbounds %Dual.91, %Dual.91* %0, i64 0, i32 1, i32 0, i64 1, i32 0 store double %160, double* %213, align 64 %214 = getelementptr inbounds i8, i8* %203, i64 264 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %214, i8* %198, i64 56, i32 8, i1 false) %215 = getelementptr inbounds %Dual.91, %Dual.91* %0, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0 store <6 x double> %110, <6 x double>* %215, align 64 %216 = getelementptr inbounds %Dual.91, %Dual.91* %0, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 6 %217 = bitcast double* %216 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %217, i8* %199, i64 16, i32 16, i1 false) %218 = getelementptr inbounds %Dual.91, %Dual.91* %0, i64 0, i32 1, i32 0, i64 2, i32 0 store double %169, double* %218, align 64 %219 = getelementptr inbounds i8, i8* %203, i64 392 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %219, i8* %200, i64 56, i32 8, i1 false) %220 = getelementptr inbounds %Dual.91, %Dual.91* %0, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0 store <6 x double> %146, <6 x double>* %220, align 64 %221 = getelementptr inbounds %Dual.91, %Dual.91* %0, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 6 %222 = bitcast double* %221 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %222, i8* %201, i64 16, i32 16, i1 false) ret void } ======================================================= 3 x 9 time=0.040534019470214844 ------------------------------------------------------- define void @"julia_+_70808"(%Dual.93* noalias sret, %Dual.93*, %Dual.93*) #0 { top: %.sroa.252 = alloca [120 x i8], align 8 %.sroa.454 = alloca [56 x i8], align 8 %.sroa.6 = alloca [120 x i8], align 8 %.sroa.8 = alloca [56 x i8], align 8 %.sroa.10 = alloca [120 x i8], align 8 %.sroa.12 = alloca [56 x i8], align 8 %.sroa.244 = alloca [120 x i8], align 8 %.sroa.346 = alloca [56 x i8], align 8 %.sroa.248 = alloca [120 x i8], align 8 %.sroa.450 = alloca [56 x i8], align 8 %.sroa.5.sroa.257 = alloca [120 x i8], align 8 %.sroa.5.sroa.459 = alloca [56 x i8], align 8 %.sroa.5.sroa.6 = alloca [120 x i8], align 8 %.sroa.5.sroa.8 = alloca [56 x i8], align 8 %.sroa.5.sroa.10 = alloca [120 x i8], align 8 %.sroa.5.sroa.12 = alloca [56 x i8], align 8 %.sroa.237 = alloca [120 x i8], align 8 %.sroa.339 = alloca [56 x i8], align 8 %.sroa.228 = alloca [120 x i8], align 8 %.sroa.330 = alloca [56 x i8], align 8 %.sroa.216 = alloca [120 x i8], align 8 %.sroa.3 = alloca [56 x i8], align 8 %.sroa.219 = alloca [120 x i8], align 8 %.sroa.421 = alloca [56 x i8], align 8 %.sroa.5.sroa.2 = alloca [120 x i8], align 8 %.sroa.5.sroa.4 = alloca [56 x i8], align 8 %.sroa.6.sroa.2 = alloca [120 x i8], align 8 %.sroa.6.sroa.4 = alloca [56 x i8], align 8 %"#temp#3.sroa.2" = alloca [120 x i8], align 8 %"#temp#3.sroa.4" = alloca [56 x i8], align 8 %"#temp#3.sroa.5.sroa.2" = alloca [120 x i8], align 8 %"#temp#3.sroa.5.sroa.4" = alloca [56 x i8], align 8 %"#temp#3.sroa.6.sroa.2" = alloca [120 x i8], align 8 %"#temp#3.sroa.6.sroa.4" = alloca [56 x i8], align 8 %"#temp#4.sroa.2" = alloca [56 x i8], align 8 %3 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 0, i32 1, i32 0, i64 0 %4 = load double, double* %3, align 8 %5 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 0, i32 1, i32 0, i64 0 %6 = load double, double* %5, align 8 %7 = fadd double %4, %6 %8 = insertelement <9 x double> undef, double %7, i32 0 %9 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 0, i32 1, i32 0, i64 1 %10 = load double, double* %9, align 8 %11 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 0, i32 1, i32 0, i64 1 %12 = load double, double* %11, align 8 %13 = fadd double %10, %12 %14 = insertelement <9 x double> %8, double %13, i32 1 %15 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 0, i32 1, i32 0, i64 2 %16 = load double, double* %15, align 8 %17 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 0, i32 1, i32 0, i64 2 %18 = load double, double* %17, align 8 %19 = fadd double %16, %18 %20 = insertelement <9 x double> %14, double %19, i32 2 %21 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 0, i32 1, i32 0, i64 3 %22 = load double, double* %21, align 8 %23 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 0, i32 1, i32 0, i64 3 %24 = load double, double* %23, align 8 %25 = fadd double %22, %24 %26 = insertelement <9 x double> %20, double %25, i32 3 %27 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 0, i32 1, i32 0, i64 4 %28 = load double, double* %27, align 8 %29 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 0, i32 1, i32 0, i64 4 %30 = load double, double* %29, align 8 %31 = fadd double %28, %30 %32 = insertelement <9 x double> %26, double %31, i32 4 %33 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 0, i32 1, i32 0, i64 5 %34 = load double, double* %33, align 8 %35 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 0, i32 1, i32 0, i64 5 %36 = load double, double* %35, align 8 %37 = fadd double %34, %36 %38 = insertelement <9 x double> %32, double %37, i32 5 %39 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 0, i32 1, i32 0, i64 6 %40 = load double, double* %39, align 8 %41 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 0, i32 1, i32 0, i64 6 %42 = load double, double* %41, align 8 %43 = fadd double %40, %42 %44 = insertelement <9 x double> %38, double %43, i32 6 %45 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 0, i32 1, i32 0, i64 7 %46 = load double, double* %45, align 8 %47 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 0, i32 1, i32 0, i64 7 %48 = load double, double* %47, align 8 %49 = fadd double %46, %48 %50 = insertelement <9 x double> %44, double %49, i32 7 %51 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 0, i32 1, i32 0, i64 8 %52 = load double, double* %51, align 8 %53 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 0, i32 1, i32 0, i64 8 %54 = load double, double* %53, align 8 %55 = fadd double %52, %54 %56 = insertelement <9 x double> %50, double %55, i32 8 %57 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %58 = load double, double* %57, align 8 %59 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %60 = load double, double* %59, align 8 %61 = fadd double %58, %60 %62 = insertelement <9 x double> undef, double %61, i32 0 %63 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %64 = load double, double* %63, align 8 %65 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %66 = load double, double* %65, align 8 %67 = fadd double %64, %66 %68 = insertelement <9 x double> %62, double %67, i32 1 %69 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %70 = load double, double* %69, align 8 %71 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %72 = load double, double* %71, align 8 %73 = fadd double %70, %72 %74 = insertelement <9 x double> %68, double %73, i32 2 %75 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 3 %76 = load double, double* %75, align 8 %77 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 3 %78 = load double, double* %77, align 8 %79 = fadd double %76, %78 %80 = insertelement <9 x double> %74, double %79, i32 3 %81 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 4 %82 = load double, double* %81, align 8 %83 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 4 %84 = load double, double* %83, align 8 %85 = fadd double %82, %84 %86 = insertelement <9 x double> %80, double %85, i32 4 %87 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 5 %88 = load double, double* %87, align 8 %89 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 5 %90 = load double, double* %89, align 8 %91 = fadd double %88, %90 %92 = insertelement <9 x double> %86, double %91, i32 5 %93 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 6 %94 = load double, double* %93, align 8 %95 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 6 %96 = load double, double* %95, align 8 %97 = fadd double %94, %96 %98 = insertelement <9 x double> %92, double %97, i32 6 %99 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 7 %100 = load double, double* %99, align 8 %101 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 7 %102 = load double, double* %101, align 8 %103 = fadd double %100, %102 %104 = insertelement <9 x double> %98, double %103, i32 7 %105 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 8 %106 = load double, double* %105, align 8 %107 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 8 %108 = load double, double* %107, align 8 %109 = fadd double %106, %108 %110 = insertelement <9 x double> %104, double %109, i32 8 %111 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %112 = load double, double* %111, align 8 %113 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %114 = load double, double* %113, align 8 %115 = fadd double %112, %114 %116 = insertelement <9 x double> undef, double %115, i32 0 %117 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 1 %118 = load double, double* %117, align 8 %119 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 1 %120 = load double, double* %119, align 8 %121 = fadd double %118, %120 %122 = insertelement <9 x double> %116, double %121, i32 1 %123 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 2 %124 = load double, double* %123, align 8 %125 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 2 %126 = load double, double* %125, align 8 %127 = fadd double %124, %126 %128 = insertelement <9 x double> %122, double %127, i32 2 %129 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 3 %130 = load double, double* %129, align 8 %131 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 3 %132 = load double, double* %131, align 8 %133 = fadd double %130, %132 %134 = insertelement <9 x double> %128, double %133, i32 3 %135 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 4 %136 = load double, double* %135, align 8 %137 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 4 %138 = load double, double* %137, align 8 %139 = fadd double %136, %138 %140 = insertelement <9 x double> %134, double %139, i32 4 %141 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 5 %142 = load double, double* %141, align 8 %143 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 5 %144 = load double, double* %143, align 8 %145 = fadd double %142, %144 %146 = insertelement <9 x double> %140, double %145, i32 5 %147 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 6 %148 = load double, double* %147, align 8 %149 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 6 %150 = load double, double* %149, align 8 %151 = fadd double %148, %150 %152 = insertelement <9 x double> %146, double %151, i32 6 %153 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 7 %154 = load double, double* %153, align 8 %155 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 7 %156 = load double, double* %155, align 8 %157 = fadd double %154, %156 %158 = insertelement <9 x double> %152, double %157, i32 7 %159 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 8 %160 = load double, double* %159, align 8 %161 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 8 %162 = load double, double* %161, align 8 %163 = fadd double %160, %162 %164 = insertelement <9 x double> %158, double %163, i32 8 %165 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %166 = load double, double* %165, align 8 %167 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %168 = load double, double* %167, align 8 %169 = fadd double %166, %168 %170 = insertelement <9 x double> undef, double %169, i32 0 %171 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 1 %172 = load double, double* %171, align 8 %173 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 1 %174 = load double, double* %173, align 8 %175 = fadd double %172, %174 %176 = insertelement <9 x double> %170, double %175, i32 1 %177 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 2 %178 = load double, double* %177, align 8 %179 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 2 %180 = load double, double* %179, align 8 %181 = fadd double %178, %180 %182 = insertelement <9 x double> %176, double %181, i32 2 %183 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 3 %184 = load double, double* %183, align 8 %185 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 3 %186 = load double, double* %185, align 8 %187 = fadd double %184, %186 %188 = insertelement <9 x double> %182, double %187, i32 3 %189 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 4 %190 = load double, double* %189, align 8 %191 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 4 %192 = load double, double* %191, align 8 %193 = fadd double %190, %192 %194 = insertelement <9 x double> %188, double %193, i32 4 %195 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 5 %196 = load double, double* %195, align 8 %197 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 5 %198 = load double, double* %197, align 8 %199 = fadd double %196, %198 %200 = insertelement <9 x double> %194, double %199, i32 5 %201 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 6 %202 = load double, double* %201, align 8 %203 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 6 %204 = load double, double* %203, align 8 %205 = fadd double %202, %204 %206 = insertelement <9 x double> %200, double %205, i32 6 %207 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 7 %208 = load double, double* %207, align 8 %209 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 7 %210 = load double, double* %209, align 8 %211 = fadd double %208, %210 %212 = insertelement <9 x double> %206, double %211, i32 7 %213 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 8 %214 = load double, double* %213, align 8 %215 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 8 %216 = load double, double* %215, align 8 %217 = fadd double %214, %216 %218 = insertelement <9 x double> %212, double %217, i32 8 %219 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 0, i32 0 %220 = load double, double* %219, align 8 %221 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 0, i32 0 %222 = load double, double* %221, align 8 %223 = fadd double %220, %222 %224 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.216, i64 0, i64 0 %225 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.219, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %225, i8* %224, i64 120, i32 8, i1 false) %226 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.3, i64 0, i64 0 %227 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.421, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %227, i8* %226, i64 56, i32 8, i1 false) %228 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 1, i32 0 %229 = load double, double* %228, align 8 %230 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 1, i32 0 %231 = load double, double* %230, align 8 %232 = fadd double %229, %231 %233 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.228, i64 0, i64 0 %234 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %234, i8* %233, i64 120, i32 8, i1 false) %235 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.330, i64 0, i64 0 %236 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %236, i8* %235, i64 56, i32 8, i1 false) %237 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 1, i32 0, i64 2, i32 0 %238 = load double, double* %237, align 8 %239 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 1, i32 0, i64 2, i32 0 %240 = load double, double* %239, align 8 %241 = fadd double %238, %240 %242 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.237, i64 0, i64 0 %243 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.6.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %243, i8* %242, i64 120, i32 8, i1 false) %244 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.339, i64 0, i64 0 %245 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.6.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %245, i8* %244, i64 56, i32 8, i1 false) %246 = getelementptr inbounds [120 x i8], [120 x i8]* %"#temp#3.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %246, i8* %225, i64 120, i32 8, i1 false) %247 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#3.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %247, i8* %227, i64 56, i32 8, i1 false) %248 = getelementptr inbounds [120 x i8], [120 x i8]* %"#temp#3.sroa.5.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %248, i8* %234, i64 120, i32 8, i1 false) %249 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#3.sroa.5.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %249, i8* %236, i64 56, i32 8, i1 false) %250 = getelementptr inbounds [120 x i8], [120 x i8]* %"#temp#3.sroa.6.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %250, i8* %243, i64 120, i32 8, i1 false) %251 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#3.sroa.6.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %251, i8* %245, i64 56, i32 8, i1 false) %252 = getelementptr inbounds %Dual.93, %Dual.93* %1, i64 0, i32 0, i32 0 %253 = load double, double* %252, align 8 %254 = getelementptr inbounds %Dual.93, %Dual.93* %2, i64 0, i32 0, i32 0 %255 = load double, double* %254, align 8 %256 = fadd double %253, %255 %257 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#4.sroa.2", i64 0, i64 0 %258 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.346, i64 0, i64 0 call void @llvm.memmove.p0i8.p0i8.i64(i8* %258, i8* %257, i64 56, i32 8, i1 false) %259 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.244, i64 0, i64 0 %260 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.248, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %260, i8* %259, i64 120, i32 8, i1 false) %261 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.450, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %261, i8* %258, i64 56, i32 8, i1 false) %262 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.252, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %262, i8* %246, i64 120, i32 8, i1 false) %263 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.454, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %263, i8* %247, i64 56, i32 8, i1 false) %264 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.6, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %264, i8* %248, i64 120, i32 8, i1 false) %265 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.8, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %265, i8* %249, i64 56, i32 8, i1 false) %266 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.10, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %266, i8* %250, i64 120, i32 8, i1 false) %267 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.12, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %267, i8* %251, i64 56, i32 8, i1 false) %268 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.257, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %268, i8* %262, i64 120, i32 8, i1 false) %269 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.459, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %269, i8* %263, i64 56, i32 8, i1 false) %270 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.6, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %270, i8* %264, i64 120, i32 8, i1 false) %271 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.8, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %271, i8* %265, i64 56, i32 8, i1 false) %272 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.10, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %272, i8* %266, i64 120, i32 8, i1 false) %273 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.12, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %273, i8* %267, i64 56, i32 8, i1 false) %274 = getelementptr inbounds %Dual.93, %Dual.93* %0, i64 0, i32 0, i32 0 store double %256, double* %274, align 128 %275 = bitcast %Dual.93* %0 to i8* %276 = getelementptr inbounds i8, i8* %275, i64 8 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %276, i8* %260, i64 120, i32 8, i1 false) %277 = getelementptr inbounds %Dual.93, %Dual.93* %0, i64 0, i32 0, i32 1, i32 0 store <9 x double> %56, <9 x double>* %277, align 128 %278 = getelementptr inbounds %Dual.93, %Dual.93* %0, i64 0, i32 0, i32 1, i32 0, i64 9 %279 = bitcast double* %278 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %279, i8* %261, i64 56, i32 8, i1 false) %280 = getelementptr inbounds %Dual.93, %Dual.93* %0, i64 0, i32 1, i32 0, i64 0, i32 0 store double %223, double* %280, align 128 %281 = getelementptr inbounds i8, i8* %275, i64 264 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %281, i8* %268, i64 120, i32 8, i1 false) %282 = getelementptr inbounds %Dual.93, %Dual.93* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0 store <9 x double> %110, <9 x double>* %282, align 128 %283 = getelementptr inbounds %Dual.93, %Dual.93* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 9 %284 = bitcast double* %283 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %284, i8* %269, i64 56, i32 8, i1 false) %285 = getelementptr inbounds %Dual.93, %Dual.93* %0, i64 0, i32 1, i32 0, i64 1, i32 0 store double %232, double* %285, align 128 %286 = getelementptr inbounds i8, i8* %275, i64 520 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %286, i8* %270, i64 120, i32 8, i1 false) %287 = getelementptr inbounds %Dual.93, %Dual.93* %0, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0 store <9 x double> %164, <9 x double>* %287, align 128 %288 = getelementptr inbounds %Dual.93, %Dual.93* %0, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 9 %289 = bitcast double* %288 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %289, i8* %271, i64 56, i32 8, i1 false) %290 = getelementptr inbounds %Dual.93, %Dual.93* %0, i64 0, i32 1, i32 0, i64 2, i32 0 store double %241, double* %290, align 128 %291 = getelementptr inbounds i8, i8* %275, i64 776 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %291, i8* %272, i64 120, i32 8, i1 false) %292 = getelementptr inbounds %Dual.93, %Dual.93* %0, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0 store <9 x double> %218, <9 x double>* %292, align 128 %293 = getelementptr inbounds %Dual.93, %Dual.93* %0, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 9 %294 = bitcast double* %293 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %294, i8* %273, i64 56, i32 8, i1 false) ret void } ======================================================= 6 x 1 time=0.003960132598876953 ------------------------------------------------------- define void @"julia_+_70817"(%Dual.95* noalias sret, %Dual.95*, %Dual.95*) #0 { top: %3 = getelementptr inbounds %Dual.95, %Dual.95* %1, i64 0, i32 0, i32 1, i32 0, i64 0 %4 = load double, double* %3, align 8 %5 = getelementptr inbounds %Dual.95, %Dual.95* %2, i64 0, i32 0, i32 1, i32 0, i64 0 %6 = load double, double* %5, align 8 %7 = fadd double %4, %6 %8 = getelementptr inbounds %Dual.95, %Dual.95* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %9 = load double, double* %8, align 8 %10 = getelementptr inbounds %Dual.95, %Dual.95* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %11 = load double, double* %10, align 8 %12 = fadd double %9, %11 %13 = getelementptr inbounds %Dual.95, %Dual.95* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %14 = load double, double* %13, align 8 %15 = getelementptr inbounds %Dual.95, %Dual.95* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %16 = load double, double* %15, align 8 %17 = fadd double %14, %16 %18 = getelementptr inbounds %Dual.95, %Dual.95* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %19 = load double, double* %18, align 8 %20 = getelementptr inbounds %Dual.95, %Dual.95* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %21 = load double, double* %20, align 8 %22 = fadd double %19, %21 %23 = getelementptr inbounds %Dual.95, %Dual.95* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 0 %24 = load double, double* %23, align 8 %25 = getelementptr inbounds %Dual.95, %Dual.95* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 0 %26 = load double, double* %25, align 8 %27 = fadd double %24, %26 %28 = getelementptr inbounds %Dual.95, %Dual.95* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 0 %29 = load double, double* %28, align 8 %30 = getelementptr inbounds %Dual.95, %Dual.95* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 0 %31 = load double, double* %30, align 8 %32 = fadd double %29, %31 %33 = getelementptr inbounds %Dual.95, %Dual.95* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 0 %34 = load double, double* %33, align 8 %35 = getelementptr inbounds %Dual.95, %Dual.95* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 0 %36 = load double, double* %35, align 8 %37 = fadd double %34, %36 %38 = getelementptr inbounds %Dual.95, %Dual.95* %1, i64 0, i32 1, i32 0, i64 0, i32 0 %39 = load double, double* %38, align 8 %40 = getelementptr inbounds %Dual.95, %Dual.95* %2, i64 0, i32 1, i32 0, i64 0, i32 0 %41 = load double, double* %40, align 8 %42 = fadd double %39, %41 %43 = insertelement <1 x double> undef, double %12, i32 0 %44 = getelementptr inbounds %Dual.95, %Dual.95* %1, i64 0, i32 1, i32 0, i64 1, i32 0 %45 = load double, double* %44, align 8 %46 = getelementptr inbounds %Dual.95, %Dual.95* %2, i64 0, i32 1, i32 0, i64 1, i32 0 %47 = load double, double* %46, align 8 %48 = fadd double %45, %47 %49 = insertelement <1 x double> undef, double %17, i32 0 %50 = getelementptr inbounds %Dual.95, %Dual.95* %1, i64 0, i32 1, i32 0, i64 2, i32 0 %51 = load double, double* %50, align 8 %52 = getelementptr inbounds %Dual.95, %Dual.95* %2, i64 0, i32 1, i32 0, i64 2, i32 0 %53 = load double, double* %52, align 8 %54 = fadd double %51, %53 %55 = insertelement <1 x double> undef, double %22, i32 0 %56 = getelementptr inbounds %Dual.95, %Dual.95* %1, i64 0, i32 1, i32 0, i64 3, i32 0 %57 = load double, double* %56, align 8 %58 = getelementptr inbounds %Dual.95, %Dual.95* %2, i64 0, i32 1, i32 0, i64 3, i32 0 %59 = load double, double* %58, align 8 %60 = fadd double %57, %59 %61 = insertelement <1 x double> undef, double %27, i32 0 %62 = getelementptr inbounds %Dual.95, %Dual.95* %1, i64 0, i32 1, i32 0, i64 4, i32 0 %63 = load double, double* %62, align 8 %64 = getelementptr inbounds %Dual.95, %Dual.95* %2, i64 0, i32 1, i32 0, i64 4, i32 0 %65 = load double, double* %64, align 8 %66 = fadd double %63, %65 %67 = insertelement <1 x double> undef, double %32, i32 0 %68 = getelementptr inbounds %Dual.95, %Dual.95* %1, i64 0, i32 1, i32 0, i64 5, i32 0 %69 = load double, double* %68, align 8 %70 = getelementptr inbounds %Dual.95, %Dual.95* %2, i64 0, i32 1, i32 0, i64 5, i32 0 %71 = load double, double* %70, align 8 %72 = fadd double %69, %71 %73 = insertelement <1 x double> undef, double %37, i32 0 %74 = getelementptr inbounds %Dual.95, %Dual.95* %1, i64 0, i32 0, i32 0 %75 = load double, double* %74, align 8 %76 = getelementptr inbounds %Dual.95, %Dual.95* %2, i64 0, i32 0, i32 0 %77 = load double, double* %76, align 8 %78 = fadd double %75, %77 %79 = getelementptr inbounds %Dual.95, %Dual.95* %0, i64 0, i32 0, i32 0 store double %78, double* %79, align 8 %80 = getelementptr inbounds %Dual.95, %Dual.95* %0, i64 0, i32 0, i32 1, i32 0, i64 0 store double %7, double* %80, align 8 %81 = getelementptr inbounds %Dual.95, %Dual.95* %0, i64 0, i32 1, i32 0, i64 0, i32 0 store double %42, double* %81, align 8 %82 = getelementptr inbounds %Dual.95, %Dual.95* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0 store <1 x double> %43, <1 x double>* %82, align 8 %83 = getelementptr inbounds %Dual.95, %Dual.95* %0, i64 0, i32 1, i32 0, i64 1, i32 0 store double %48, double* %83, align 8 %84 = getelementptr inbounds %Dual.95, %Dual.95* %0, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0 store <1 x double> %49, <1 x double>* %84, align 8 %85 = getelementptr inbounds %Dual.95, %Dual.95* %0, i64 0, i32 1, i32 0, i64 2, i32 0 store double %54, double* %85, align 8 %86 = getelementptr inbounds %Dual.95, %Dual.95* %0, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0 store <1 x double> %55, <1 x double>* %86, align 8 %87 = getelementptr inbounds %Dual.95, %Dual.95* %0, i64 0, i32 1, i32 0, i64 3, i32 0 store double %60, double* %87, align 8 %88 = getelementptr inbounds %Dual.95, %Dual.95* %0, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0 store <1 x double> %61, <1 x double>* %88, align 8 %89 = getelementptr inbounds %Dual.95, %Dual.95* %0, i64 0, i32 1, i32 0, i64 4, i32 0 store double %66, double* %89, align 8 %90 = getelementptr inbounds %Dual.95, %Dual.95* %0, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0 store <1 x double> %67, <1 x double>* %90, align 8 %91 = getelementptr inbounds %Dual.95, %Dual.95* %0, i64 0, i32 1, i32 0, i64 5, i32 0 store double %72, double* %91, align 8 %92 = getelementptr inbounds %Dual.95, %Dual.95* %0, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0 store <1 x double> %73, <1 x double>* %92, align 8 ret void } ======================================================= 6 x 3 time=0.013447999954223633 ------------------------------------------------------- define void @"julia_+_70826"(%Dual.97* noalias sret, %Dual.97*, %Dual.97*) #0 { top: %.sroa.288 = alloca [24 x i8], align 8 %.sroa.6 = alloca [24 x i8], align 8 %.sroa.10 = alloca [24 x i8], align 8 %.sroa.14 = alloca [24 x i8], align 8 %.sroa.18 = alloca [24 x i8], align 8 %.sroa.22 = alloca [24 x i8], align 8 %.sroa.280 = alloca [24 x i8], align 8 %.sroa.284 = alloca [24 x i8], align 8 %.sroa.5.sroa.293 = alloca [24 x i8], align 8 %.sroa.5.sroa.6 = alloca [24 x i8], align 8 %.sroa.5.sroa.10 = alloca [24 x i8], align 8 %.sroa.5.sroa.14 = alloca [24 x i8], align 8 %.sroa.5.sroa.18 = alloca [24 x i8], align 8 %.sroa.5.sroa.22 = alloca [24 x i8], align 8 %.sroa.273 = alloca [24 x i8], align 8 %.sroa.264 = alloca [24 x i8], align 8 %.sroa.255 = alloca [24 x i8], align 8 %.sroa.246 = alloca [24 x i8], align 8 %.sroa.237 = alloca [24 x i8], align 8 %.sroa.225 = alloca [24 x i8], align 8 %.sroa.228 = alloca [24 x i8], align 8 %.sroa.5.sroa.2 = alloca [24 x i8], align 8 %.sroa.6.sroa.2 = alloca [24 x i8], align 8 %.sroa.7.sroa.2 = alloca [24 x i8], align 8 %.sroa.8.sroa.2 = alloca [24 x i8], align 8 %.sroa.9.sroa.2 = alloca [24 x i8], align 8 %"#temp#6.sroa.2" = alloca [24 x i8], align 8 %"#temp#6.sroa.5.sroa.2" = alloca [24 x i8], align 8 %"#temp#6.sroa.6.sroa.2" = alloca [24 x i8], align 8 %"#temp#6.sroa.7.sroa.2" = alloca [24 x i8], align 8 %"#temp#6.sroa.8.sroa.2" = alloca [24 x i8], align 8 %"#temp#6.sroa.9.sroa.2" = alloca [24 x i8], align 8 %3 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 0, i32 1, i32 0, i64 0 %4 = load double, double* %3, align 8 %5 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 0, i32 1, i32 0, i64 0 %6 = load double, double* %5, align 8 %7 = fadd double %4, %6 %8 = insertelement <3 x double> undef, double %7, i32 0 %9 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 0, i32 1, i32 0, i64 1 %10 = load double, double* %9, align 8 %11 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 0, i32 1, i32 0, i64 1 %12 = load double, double* %11, align 8 %13 = fadd double %10, %12 %14 = insertelement <3 x double> %8, double %13, i32 1 %15 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 0, i32 1, i32 0, i64 2 %16 = load double, double* %15, align 8 %17 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 0, i32 1, i32 0, i64 2 %18 = load double, double* %17, align 8 %19 = fadd double %16, %18 %20 = insertelement <3 x double> %14, double %19, i32 2 %21 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %22 = load double, double* %21, align 8 %23 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %24 = load double, double* %23, align 8 %25 = fadd double %22, %24 %26 = insertelement <3 x double> undef, double %25, i32 0 %27 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %28 = load double, double* %27, align 8 %29 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %30 = load double, double* %29, align 8 %31 = fadd double %28, %30 %32 = insertelement <3 x double> %26, double %31, i32 1 %33 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %34 = load double, double* %33, align 8 %35 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %36 = load double, double* %35, align 8 %37 = fadd double %34, %36 %38 = insertelement <3 x double> %32, double %37, i32 2 %39 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %40 = load double, double* %39, align 8 %41 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %42 = load double, double* %41, align 8 %43 = fadd double %40, %42 %44 = insertelement <3 x double> undef, double %43, i32 0 %45 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 1 %46 = load double, double* %45, align 8 %47 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 1 %48 = load double, double* %47, align 8 %49 = fadd double %46, %48 %50 = insertelement <3 x double> %44, double %49, i32 1 %51 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 2 %52 = load double, double* %51, align 8 %53 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 2 %54 = load double, double* %53, align 8 %55 = fadd double %52, %54 %56 = insertelement <3 x double> %50, double %55, i32 2 %57 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %58 = load double, double* %57, align 8 %59 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %60 = load double, double* %59, align 8 %61 = fadd double %58, %60 %62 = insertelement <3 x double> undef, double %61, i32 0 %63 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 1 %64 = load double, double* %63, align 8 %65 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 1 %66 = load double, double* %65, align 8 %67 = fadd double %64, %66 %68 = insertelement <3 x double> %62, double %67, i32 1 %69 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 2 %70 = load double, double* %69, align 8 %71 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 2 %72 = load double, double* %71, align 8 %73 = fadd double %70, %72 %74 = insertelement <3 x double> %68, double %73, i32 2 %75 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 0 %76 = load double, double* %75, align 8 %77 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 0 %78 = load double, double* %77, align 8 %79 = fadd double %76, %78 %80 = insertelement <3 x double> undef, double %79, i32 0 %81 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 1 %82 = load double, double* %81, align 8 %83 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 1 %84 = load double, double* %83, align 8 %85 = fadd double %82, %84 %86 = insertelement <3 x double> %80, double %85, i32 1 %87 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 2 %88 = load double, double* %87, align 8 %89 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 2 %90 = load double, double* %89, align 8 %91 = fadd double %88, %90 %92 = insertelement <3 x double> %86, double %91, i32 2 %93 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 0 %94 = load double, double* %93, align 8 %95 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 0 %96 = load double, double* %95, align 8 %97 = fadd double %94, %96 %98 = insertelement <3 x double> undef, double %97, i32 0 %99 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 1 %100 = load double, double* %99, align 8 %101 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 1 %102 = load double, double* %101, align 8 %103 = fadd double %100, %102 %104 = insertelement <3 x double> %98, double %103, i32 1 %105 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 2 %106 = load double, double* %105, align 8 %107 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 2 %108 = load double, double* %107, align 8 %109 = fadd double %106, %108 %110 = insertelement <3 x double> %104, double %109, i32 2 %111 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 0 %112 = load double, double* %111, align 8 %113 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 0 %114 = load double, double* %113, align 8 %115 = fadd double %112, %114 %116 = insertelement <3 x double> undef, double %115, i32 0 %117 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 1 %118 = load double, double* %117, align 8 %119 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 1 %120 = load double, double* %119, align 8 %121 = fadd double %118, %120 %122 = insertelement <3 x double> %116, double %121, i32 1 %123 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 2 %124 = load double, double* %123, align 8 %125 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 2 %126 = load double, double* %125, align 8 %127 = fadd double %124, %126 %128 = insertelement <3 x double> %122, double %127, i32 2 %129 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 0, i32 0 %130 = load double, double* %129, align 8 %131 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 0, i32 0 %132 = load double, double* %131, align 8 %133 = fadd double %130, %132 %134 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.225, i64 0, i64 0 %135 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.228, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %135, i8* %134, i64 24, i32 8, i1 false) %136 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 1, i32 0 %137 = load double, double* %136, align 8 %138 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 1, i32 0 %139 = load double, double* %138, align 8 %140 = fadd double %137, %139 %141 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.237, i64 0, i64 0 %142 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %142, i8* %141, i64 24, i32 8, i1 false) %143 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 2, i32 0 %144 = load double, double* %143, align 8 %145 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 2, i32 0 %146 = load double, double* %145, align 8 %147 = fadd double %144, %146 %148 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.246, i64 0, i64 0 %149 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.6.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %149, i8* %148, i64 24, i32 8, i1 false) %150 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 3, i32 0 %151 = load double, double* %150, align 8 %152 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 3, i32 0 %153 = load double, double* %152, align 8 %154 = fadd double %151, %153 %155 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.255, i64 0, i64 0 %156 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.7.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %156, i8* %155, i64 24, i32 8, i1 false) %157 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 4, i32 0 %158 = load double, double* %157, align 8 %159 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 4, i32 0 %160 = load double, double* %159, align 8 %161 = fadd double %158, %160 %162 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.264, i64 0, i64 0 %163 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.8.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %163, i8* %162, i64 24, i32 8, i1 false) %164 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 1, i32 0, i64 5, i32 0 %165 = load double, double* %164, align 8 %166 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 1, i32 0, i64 5, i32 0 %167 = load double, double* %166, align 8 %168 = fadd double %165, %167 %169 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.273, i64 0, i64 0 %170 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.9.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %170, i8* %169, i64 24, i32 8, i1 false) %171 = getelementptr inbounds [24 x i8], [24 x i8]* %"#temp#6.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %171, i8* %135, i64 24, i32 8, i1 false) %172 = getelementptr inbounds [24 x i8], [24 x i8]* %"#temp#6.sroa.5.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %172, i8* %142, i64 24, i32 8, i1 false) %173 = getelementptr inbounds [24 x i8], [24 x i8]* %"#temp#6.sroa.6.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %173, i8* %149, i64 24, i32 8, i1 false) %174 = getelementptr inbounds [24 x i8], [24 x i8]* %"#temp#6.sroa.7.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %174, i8* %156, i64 24, i32 8, i1 false) %175 = getelementptr inbounds [24 x i8], [24 x i8]* %"#temp#6.sroa.8.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %175, i8* %163, i64 24, i32 8, i1 false) %176 = getelementptr inbounds [24 x i8], [24 x i8]* %"#temp#6.sroa.9.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %176, i8* %170, i64 24, i32 8, i1 false) %177 = getelementptr inbounds %Dual.97, %Dual.97* %1, i64 0, i32 0, i32 0 %178 = load double, double* %177, align 8 %179 = getelementptr inbounds %Dual.97, %Dual.97* %2, i64 0, i32 0, i32 0 %180 = load double, double* %179, align 8 %181 = fadd double %178, %180 %182 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.280, i64 0, i64 0 %183 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.284, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %183, i8* %182, i64 24, i32 8, i1 false) %184 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.288, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %184, i8* %171, i64 24, i32 8, i1 false) %185 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.6, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %185, i8* %172, i64 24, i32 8, i1 false) %186 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.10, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %186, i8* %173, i64 24, i32 8, i1 false) %187 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.14, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %187, i8* %174, i64 24, i32 8, i1 false) %188 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.18, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %188, i8* %175, i64 24, i32 8, i1 false) %189 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.22, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %189, i8* %176, i64 24, i32 8, i1 false) %190 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.293, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %190, i8* %184, i64 24, i32 8, i1 false) %191 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.6, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %191, i8* %185, i64 24, i32 8, i1 false) %192 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.10, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %192, i8* %186, i64 24, i32 8, i1 false) %193 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.14, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %193, i8* %187, i64 24, i32 8, i1 false) %194 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.18, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %194, i8* %188, i64 24, i32 8, i1 false) %195 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.22, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %195, i8* %189, i64 24, i32 8, i1 false) %196 = getelementptr inbounds %Dual.97, %Dual.97* %0, i64 0, i32 0, i32 0 store double %181, double* %196, align 32 %197 = bitcast %Dual.97* %0 to i8* %198 = getelementptr inbounds i8, i8* %197, i64 8 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %198, i8* %183, i64 24, i32 8, i1 false) %199 = getelementptr inbounds %Dual.97, %Dual.97* %0, i64 0, i32 0, i32 1, i32 0 store <3 x double> %20, <3 x double>* %199, align 32 %200 = getelementptr inbounds %Dual.97, %Dual.97* %0, i64 0, i32 1, i32 0, i64 0, i32 0 store double %133, double* %200, align 32 %201 = getelementptr inbounds i8, i8* %197, i64 72 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %201, i8* %190, i64 24, i32 8, i1 false) %202 = getelementptr inbounds %Dual.97, %Dual.97* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0 store <3 x double> %38, <3 x double>* %202, align 32 %203 = getelementptr inbounds %Dual.97, %Dual.97* %0, i64 0, i32 1, i32 0, i64 1, i32 0 store double %140, double* %203, align 32 %204 = getelementptr inbounds i8, i8* %197, i64 136 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %204, i8* %191, i64 24, i32 8, i1 false) %205 = getelementptr inbounds %Dual.97, %Dual.97* %0, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0 store <3 x double> %56, <3 x double>* %205, align 32 %206 = getelementptr inbounds %Dual.97, %Dual.97* %0, i64 0, i32 1, i32 0, i64 2, i32 0 store double %147, double* %206, align 32 %207 = getelementptr inbounds i8, i8* %197, i64 200 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %207, i8* %192, i64 24, i32 8, i1 false) %208 = getelementptr inbounds %Dual.97, %Dual.97* %0, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0 store <3 x double> %74, <3 x double>* %208, align 32 %209 = getelementptr inbounds %Dual.97, %Dual.97* %0, i64 0, i32 1, i32 0, i64 3, i32 0 store double %154, double* %209, align 32 %210 = getelementptr inbounds i8, i8* %197, i64 264 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %210, i8* %193, i64 24, i32 8, i1 false) %211 = getelementptr inbounds %Dual.97, %Dual.97* %0, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0 store <3 x double> %92, <3 x double>* %211, align 32 %212 = getelementptr inbounds %Dual.97, %Dual.97* %0, i64 0, i32 1, i32 0, i64 4, i32 0 store double %161, double* %212, align 32 %213 = getelementptr inbounds i8, i8* %197, i64 328 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %213, i8* %194, i64 24, i32 8, i1 false) %214 = getelementptr inbounds %Dual.97, %Dual.97* %0, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0 store <3 x double> %110, <3 x double>* %214, align 32 %215 = getelementptr inbounds %Dual.97, %Dual.97* %0, i64 0, i32 1, i32 0, i64 5, i32 0 store double %168, double* %215, align 32 %216 = getelementptr inbounds i8, i8* %197, i64 392 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %216, i8* %195, i64 24, i32 8, i1 false) %217 = getelementptr inbounds %Dual.97, %Dual.97* %0, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0 store <3 x double> %128, <3 x double>* %217, align 32 ret void } ======================================================= 6 x 6 time=0.03327798843383789 ------------------------------------------------------- define void @"julia_+_70835"(%Dual.99* noalias sret, %Dual.99*, %Dual.99*) #0 { top: %.sroa.288 = alloca [56 x i8], align 8 %.sroa.490 = alloca [16 x i8], align 16 %.sroa.6 = alloca [56 x i8], align 8 %.sroa.8 = alloca [16 x i8], align 16 %.sroa.10 = alloca [56 x i8], align 8 %.sroa.12 = alloca [16 x i8], align 16 %.sroa.14 = alloca [56 x i8], align 8 %.sroa.16 = alloca [16 x i8], align 16 %.sroa.18 = alloca [56 x i8], align 8 %.sroa.20 = alloca [16 x i8], align 16 %.sroa.22 = alloca [56 x i8], align 8 %.sroa.24 = alloca [16 x i8], align 16 %.sroa.280 = alloca [56 x i8], align 8 %.sroa.382 = alloca [16 x i8], align 16 %.sroa.284 = alloca [56 x i8], align 8 %.sroa.486 = alloca [16 x i8], align 16 %.sroa.5.sroa.293 = alloca [56 x i8], align 8 %.sroa.5.sroa.495 = alloca [16 x i8], align 16 %.sroa.5.sroa.6 = alloca [56 x i8], align 8 %.sroa.5.sroa.8 = alloca [16 x i8], align 16 %.sroa.5.sroa.10 = alloca [56 x i8], align 8 %.sroa.5.sroa.12 = alloca [16 x i8], align 16 %.sroa.5.sroa.14 = alloca [56 x i8], align 8 %.sroa.5.sroa.16 = alloca [16 x i8], align 16 %.sroa.5.sroa.18 = alloca [56 x i8], align 8 %.sroa.5.sroa.20 = alloca [16 x i8], align 16 %.sroa.5.sroa.22 = alloca [56 x i8], align 8 %.sroa.5.sroa.24 = alloca [16 x i8], align 16 %.sroa.273 = alloca [56 x i8], align 8 %.sroa.375 = alloca [16 x i8], align 16 %.sroa.264 = alloca [56 x i8], align 8 %.sroa.366 = alloca [16 x i8], align 16 %.sroa.255 = alloca [56 x i8], align 8 %.sroa.357 = alloca [16 x i8], align 16 %.sroa.246 = alloca [56 x i8], align 8 %.sroa.348 = alloca [16 x i8], align 16 %.sroa.237 = alloca [56 x i8], align 8 %.sroa.339 = alloca [16 x i8], align 16 %.sroa.225 = alloca [56 x i8], align 8 %.sroa.3 = alloca [16 x i8], align 16 %.sroa.228 = alloca [56 x i8], align 8 %.sroa.430 = alloca [16 x i8], align 16 %.sroa.5.sroa.2 = alloca [56 x i8], align 8 %.sroa.5.sroa.4 = alloca [16 x i8], align 16 %.sroa.6.sroa.2 = alloca [56 x i8], align 8 %.sroa.6.sroa.4 = alloca [16 x i8], align 16 %.sroa.7.sroa.2 = alloca [56 x i8], align 8 %.sroa.7.sroa.4 = alloca [16 x i8], align 16 %.sroa.8.sroa.2 = alloca [56 x i8], align 8 %.sroa.8.sroa.4 = alloca [16 x i8], align 16 %.sroa.9.sroa.2 = alloca [56 x i8], align 8 %.sroa.9.sroa.4 = alloca [16 x i8], align 16 %"#temp#6.sroa.2" = alloca [56 x i8], align 8 %"#temp#6.sroa.4" = alloca [16 x i8], align 16 %"#temp#6.sroa.5.sroa.2" = alloca [56 x i8], align 8 %"#temp#6.sroa.5.sroa.4" = alloca [16 x i8], align 16 %"#temp#6.sroa.6.sroa.2" = alloca [56 x i8], align 8 %"#temp#6.sroa.6.sroa.4" = alloca [16 x i8], align 16 %"#temp#6.sroa.7.sroa.2" = alloca [56 x i8], align 8 %"#temp#6.sroa.7.sroa.4" = alloca [16 x i8], align 16 %"#temp#6.sroa.8.sroa.2" = alloca [56 x i8], align 8 %"#temp#6.sroa.8.sroa.4" = alloca [16 x i8], align 16 %"#temp#6.sroa.9.sroa.2" = alloca [56 x i8], align 8 %"#temp#6.sroa.9.sroa.4" = alloca [16 x i8], align 16 %"#temp#7.sroa.2" = alloca [16 x i8], align 16 %3 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 0, i32 1, i32 0, i64 0 %4 = load double, double* %3, align 8 %5 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 0, i32 1, i32 0, i64 0 %6 = load double, double* %5, align 8 %7 = fadd double %4, %6 %8 = insertelement <6 x double> undef, double %7, i32 0 %9 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 0, i32 1, i32 0, i64 1 %10 = load double, double* %9, align 8 %11 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 0, i32 1, i32 0, i64 1 %12 = load double, double* %11, align 8 %13 = fadd double %10, %12 %14 = insertelement <6 x double> %8, double %13, i32 1 %15 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 0, i32 1, i32 0, i64 2 %16 = load double, double* %15, align 8 %17 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 0, i32 1, i32 0, i64 2 %18 = load double, double* %17, align 8 %19 = fadd double %16, %18 %20 = insertelement <6 x double> %14, double %19, i32 2 %21 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 0, i32 1, i32 0, i64 3 %22 = load double, double* %21, align 8 %23 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 0, i32 1, i32 0, i64 3 %24 = load double, double* %23, align 8 %25 = fadd double %22, %24 %26 = insertelement <6 x double> %20, double %25, i32 3 %27 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 0, i32 1, i32 0, i64 4 %28 = load double, double* %27, align 8 %29 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 0, i32 1, i32 0, i64 4 %30 = load double, double* %29, align 8 %31 = fadd double %28, %30 %32 = insertelement <6 x double> %26, double %31, i32 4 %33 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 0, i32 1, i32 0, i64 5 %34 = load double, double* %33, align 8 %35 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 0, i32 1, i32 0, i64 5 %36 = load double, double* %35, align 8 %37 = fadd double %34, %36 %38 = insertelement <6 x double> %32, double %37, i32 5 %39 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %40 = load double, double* %39, align 8 %41 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %42 = load double, double* %41, align 8 %43 = fadd double %40, %42 %44 = insertelement <6 x double> undef, double %43, i32 0 %45 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %46 = load double, double* %45, align 8 %47 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %48 = load double, double* %47, align 8 %49 = fadd double %46, %48 %50 = insertelement <6 x double> %44, double %49, i32 1 %51 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %52 = load double, double* %51, align 8 %53 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %54 = load double, double* %53, align 8 %55 = fadd double %52, %54 %56 = insertelement <6 x double> %50, double %55, i32 2 %57 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 3 %58 = load double, double* %57, align 8 %59 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 3 %60 = load double, double* %59, align 8 %61 = fadd double %58, %60 %62 = insertelement <6 x double> %56, double %61, i32 3 %63 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 4 %64 = load double, double* %63, align 8 %65 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 4 %66 = load double, double* %65, align 8 %67 = fadd double %64, %66 %68 = insertelement <6 x double> %62, double %67, i32 4 %69 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 5 %70 = load double, double* %69, align 8 %71 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 5 %72 = load double, double* %71, align 8 %73 = fadd double %70, %72 %74 = insertelement <6 x double> %68, double %73, i32 5 %75 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %76 = load double, double* %75, align 8 %77 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %78 = load double, double* %77, align 8 %79 = fadd double %76, %78 %80 = insertelement <6 x double> undef, double %79, i32 0 %81 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 1 %82 = load double, double* %81, align 8 %83 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 1 %84 = load double, double* %83, align 8 %85 = fadd double %82, %84 %86 = insertelement <6 x double> %80, double %85, i32 1 %87 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 2 %88 = load double, double* %87, align 8 %89 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 2 %90 = load double, double* %89, align 8 %91 = fadd double %88, %90 %92 = insertelement <6 x double> %86, double %91, i32 2 %93 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 3 %94 = load double, double* %93, align 8 %95 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 3 %96 = load double, double* %95, align 8 %97 = fadd double %94, %96 %98 = insertelement <6 x double> %92, double %97, i32 3 %99 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 4 %100 = load double, double* %99, align 8 %101 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 4 %102 = load double, double* %101, align 8 %103 = fadd double %100, %102 %104 = insertelement <6 x double> %98, double %103, i32 4 %105 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 5 %106 = load double, double* %105, align 8 %107 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 5 %108 = load double, double* %107, align 8 %109 = fadd double %106, %108 %110 = insertelement <6 x double> %104, double %109, i32 5 %111 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %112 = load double, double* %111, align 8 %113 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %114 = load double, double* %113, align 8 %115 = fadd double %112, %114 %116 = insertelement <6 x double> undef, double %115, i32 0 %117 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 1 %118 = load double, double* %117, align 8 %119 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 1 %120 = load double, double* %119, align 8 %121 = fadd double %118, %120 %122 = insertelement <6 x double> %116, double %121, i32 1 %123 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 2 %124 = load double, double* %123, align 8 %125 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 2 %126 = load double, double* %125, align 8 %127 = fadd double %124, %126 %128 = insertelement <6 x double> %122, double %127, i32 2 %129 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 3 %130 = load double, double* %129, align 8 %131 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 3 %132 = load double, double* %131, align 8 %133 = fadd double %130, %132 %134 = insertelement <6 x double> %128, double %133, i32 3 %135 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 4 %136 = load double, double* %135, align 8 %137 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 4 %138 = load double, double* %137, align 8 %139 = fadd double %136, %138 %140 = insertelement <6 x double> %134, double %139, i32 4 %141 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 5 %142 = load double, double* %141, align 8 %143 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 5 %144 = load double, double* %143, align 8 %145 = fadd double %142, %144 %146 = insertelement <6 x double> %140, double %145, i32 5 %147 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 0 %148 = load double, double* %147, align 8 %149 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 0 %150 = load double, double* %149, align 8 %151 = fadd double %148, %150 %152 = insertelement <6 x double> undef, double %151, i32 0 %153 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 1 %154 = load double, double* %153, align 8 %155 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 1 %156 = load double, double* %155, align 8 %157 = fadd double %154, %156 %158 = insertelement <6 x double> %152, double %157, i32 1 %159 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 2 %160 = load double, double* %159, align 8 %161 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 2 %162 = load double, double* %161, align 8 %163 = fadd double %160, %162 %164 = insertelement <6 x double> %158, double %163, i32 2 %165 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 3 %166 = load double, double* %165, align 8 %167 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 3 %168 = load double, double* %167, align 8 %169 = fadd double %166, %168 %170 = insertelement <6 x double> %164, double %169, i32 3 %171 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 4 %172 = load double, double* %171, align 8 %173 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 4 %174 = load double, double* %173, align 8 %175 = fadd double %172, %174 %176 = insertelement <6 x double> %170, double %175, i32 4 %177 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 5 %178 = load double, double* %177, align 8 %179 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 5 %180 = load double, double* %179, align 8 %181 = fadd double %178, %180 %182 = insertelement <6 x double> %176, double %181, i32 5 %183 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 0 %184 = load double, double* %183, align 8 %185 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 0 %186 = load double, double* %185, align 8 %187 = fadd double %184, %186 %188 = insertelement <6 x double> undef, double %187, i32 0 %189 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 1 %190 = load double, double* %189, align 8 %191 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 1 %192 = load double, double* %191, align 8 %193 = fadd double %190, %192 %194 = insertelement <6 x double> %188, double %193, i32 1 %195 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 2 %196 = load double, double* %195, align 8 %197 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 2 %198 = load double, double* %197, align 8 %199 = fadd double %196, %198 %200 = insertelement <6 x double> %194, double %199, i32 2 %201 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 3 %202 = load double, double* %201, align 8 %203 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 3 %204 = load double, double* %203, align 8 %205 = fadd double %202, %204 %206 = insertelement <6 x double> %200, double %205, i32 3 %207 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 4 %208 = load double, double* %207, align 8 %209 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 4 %210 = load double, double* %209, align 8 %211 = fadd double %208, %210 %212 = insertelement <6 x double> %206, double %211, i32 4 %213 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 5 %214 = load double, double* %213, align 8 %215 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 5 %216 = load double, double* %215, align 8 %217 = fadd double %214, %216 %218 = insertelement <6 x double> %212, double %217, i32 5 %219 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 0 %220 = load double, double* %219, align 8 %221 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 0 %222 = load double, double* %221, align 8 %223 = fadd double %220, %222 %224 = insertelement <6 x double> undef, double %223, i32 0 %225 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 1 %226 = load double, double* %225, align 8 %227 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 1 %228 = load double, double* %227, align 8 %229 = fadd double %226, %228 %230 = insertelement <6 x double> %224, double %229, i32 1 %231 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 2 %232 = load double, double* %231, align 8 %233 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 2 %234 = load double, double* %233, align 8 %235 = fadd double %232, %234 %236 = insertelement <6 x double> %230, double %235, i32 2 %237 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 3 %238 = load double, double* %237, align 8 %239 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 3 %240 = load double, double* %239, align 8 %241 = fadd double %238, %240 %242 = insertelement <6 x double> %236, double %241, i32 3 %243 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 4 %244 = load double, double* %243, align 8 %245 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 4 %246 = load double, double* %245, align 8 %247 = fadd double %244, %246 %248 = insertelement <6 x double> %242, double %247, i32 4 %249 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 5 %250 = load double, double* %249, align 8 %251 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 5 %252 = load double, double* %251, align 8 %253 = fadd double %250, %252 %254 = insertelement <6 x double> %248, double %253, i32 5 %255 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 0, i32 0 %256 = load double, double* %255, align 8 %257 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 0, i32 0 %258 = load double, double* %257, align 8 %259 = fadd double %256, %258 %260 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.225, i64 0, i64 0 %261 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.228, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %261, i8* %260, i64 56, i32 8, i1 false) %262 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.3, i64 0, i64 0 %263 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.430, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %263, i8* %262, i64 16, i32 16, i1 false) %264 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 1, i32 0 %265 = load double, double* %264, align 8 %266 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 1, i32 0 %267 = load double, double* %266, align 8 %268 = fadd double %265, %267 %269 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.237, i64 0, i64 0 %270 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %270, i8* %269, i64 56, i32 8, i1 false) %271 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.339, i64 0, i64 0 %272 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %272, i8* %271, i64 16, i32 16, i1 false) %273 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 2, i32 0 %274 = load double, double* %273, align 8 %275 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 2, i32 0 %276 = load double, double* %275, align 8 %277 = fadd double %274, %276 %278 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.246, i64 0, i64 0 %279 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.6.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %279, i8* %278, i64 56, i32 8, i1 false) %280 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.348, i64 0, i64 0 %281 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.6.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %281, i8* %280, i64 16, i32 16, i1 false) %282 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 3, i32 0 %283 = load double, double* %282, align 8 %284 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 3, i32 0 %285 = load double, double* %284, align 8 %286 = fadd double %283, %285 %287 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.255, i64 0, i64 0 %288 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.7.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %288, i8* %287, i64 56, i32 8, i1 false) %289 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.357, i64 0, i64 0 %290 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.7.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %290, i8* %289, i64 16, i32 16, i1 false) %291 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 4, i32 0 %292 = load double, double* %291, align 8 %293 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 4, i32 0 %294 = load double, double* %293, align 8 %295 = fadd double %292, %294 %296 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.264, i64 0, i64 0 %297 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.8.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %297, i8* %296, i64 56, i32 8, i1 false) %298 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.366, i64 0, i64 0 %299 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.8.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %299, i8* %298, i64 16, i32 16, i1 false) %300 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 1, i32 0, i64 5, i32 0 %301 = load double, double* %300, align 8 %302 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 1, i32 0, i64 5, i32 0 %303 = load double, double* %302, align 8 %304 = fadd double %301, %303 %305 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.273, i64 0, i64 0 %306 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.9.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %306, i8* %305, i64 56, i32 8, i1 false) %307 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.375, i64 0, i64 0 %308 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.9.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %308, i8* %307, i64 16, i32 16, i1 false) %309 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#6.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %309, i8* %261, i64 56, i32 8, i1 false) %310 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#6.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %310, i8* %263, i64 16, i32 16, i1 false) %311 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#6.sroa.5.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %311, i8* %270, i64 56, i32 8, i1 false) %312 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#6.sroa.5.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %312, i8* %272, i64 16, i32 16, i1 false) %313 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#6.sroa.6.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %313, i8* %279, i64 56, i32 8, i1 false) %314 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#6.sroa.6.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %314, i8* %281, i64 16, i32 16, i1 false) %315 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#6.sroa.7.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %315, i8* %288, i64 56, i32 8, i1 false) %316 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#6.sroa.7.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %316, i8* %290, i64 16, i32 16, i1 false) %317 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#6.sroa.8.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %317, i8* %297, i64 56, i32 8, i1 false) %318 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#6.sroa.8.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %318, i8* %299, i64 16, i32 16, i1 false) %319 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#6.sroa.9.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %319, i8* %306, i64 56, i32 8, i1 false) %320 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#6.sroa.9.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %320, i8* %308, i64 16, i32 16, i1 false) %321 = getelementptr inbounds %Dual.99, %Dual.99* %1, i64 0, i32 0, i32 0 %322 = load double, double* %321, align 8 %323 = getelementptr inbounds %Dual.99, %Dual.99* %2, i64 0, i32 0, i32 0 %324 = load double, double* %323, align 8 %325 = fadd double %322, %324 %326 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#7.sroa.2", i64 0, i64 0 %327 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.382, i64 0, i64 0 call void @llvm.memmove.p0i8.p0i8.i64(i8* %327, i8* %326, i64 16, i32 16, i1 false) %328 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.280, i64 0, i64 0 %329 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.284, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %329, i8* %328, i64 56, i32 8, i1 false) %330 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.486, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %330, i8* %327, i64 16, i32 16, i1 false) %331 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.288, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %331, i8* %309, i64 56, i32 8, i1 false) %332 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.490, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %332, i8* %310, i64 16, i32 16, i1 false) %333 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.6, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %333, i8* %311, i64 56, i32 8, i1 false) %334 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.8, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %334, i8* %312, i64 16, i32 16, i1 false) %335 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.10, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %335, i8* %313, i64 56, i32 8, i1 false) %336 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.12, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %336, i8* %314, i64 16, i32 16, i1 false) %337 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.14, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %337, i8* %315, i64 56, i32 8, i1 false) %338 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.16, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %338, i8* %316, i64 16, i32 16, i1 false) %339 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.18, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %339, i8* %317, i64 56, i32 8, i1 false) %340 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.20, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %340, i8* %318, i64 16, i32 16, i1 false) %341 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.22, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %341, i8* %319, i64 56, i32 8, i1 false) %342 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.24, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %342, i8* %320, i64 16, i32 16, i1 false) %343 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.293, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %343, i8* %331, i64 56, i32 8, i1 false) %344 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.495, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %344, i8* %332, i64 16, i32 16, i1 false) %345 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.6, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %345, i8* %333, i64 56, i32 8, i1 false) %346 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.8, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %346, i8* %334, i64 16, i32 16, i1 false) %347 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.10, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %347, i8* %335, i64 56, i32 8, i1 false) %348 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.12, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %348, i8* %336, i64 16, i32 16, i1 false) %349 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.14, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %349, i8* %337, i64 56, i32 8, i1 false) %350 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.16, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %350, i8* %338, i64 16, i32 16, i1 false) %351 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.18, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %351, i8* %339, i64 56, i32 8, i1 false) %352 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.20, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %352, i8* %340, i64 16, i32 16, i1 false) %353 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.22, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %353, i8* %341, i64 56, i32 8, i1 false) %354 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.24, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %354, i8* %342, i64 16, i32 16, i1 false) %355 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 0, i32 0 store double %325, double* %355, align 64 %356 = bitcast %Dual.99* %0 to i8* %357 = getelementptr inbounds i8, i8* %356, i64 8 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %357, i8* %329, i64 56, i32 8, i1 false) %358 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 0, i32 1, i32 0 store <6 x double> %38, <6 x double>* %358, align 64 %359 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 0, i32 1, i32 0, i64 6 %360 = bitcast double* %359 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %360, i8* %330, i64 16, i32 16, i1 false) %361 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 1, i32 0, i64 0, i32 0 store double %259, double* %361, align 64 %362 = getelementptr inbounds i8, i8* %356, i64 136 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %362, i8* %343, i64 56, i32 8, i1 false) %363 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0 store <6 x double> %74, <6 x double>* %363, align 64 %364 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 6 %365 = bitcast double* %364 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %365, i8* %344, i64 16, i32 16, i1 false) %366 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 1, i32 0, i64 1, i32 0 store double %268, double* %366, align 64 %367 = getelementptr inbounds i8, i8* %356, i64 264 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %367, i8* %345, i64 56, i32 8, i1 false) %368 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0 store <6 x double> %110, <6 x double>* %368, align 64 %369 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 6 %370 = bitcast double* %369 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %370, i8* %346, i64 16, i32 16, i1 false) %371 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 1, i32 0, i64 2, i32 0 store double %277, double* %371, align 64 %372 = getelementptr inbounds i8, i8* %356, i64 392 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %372, i8* %347, i64 56, i32 8, i1 false) %373 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0 store <6 x double> %146, <6 x double>* %373, align 64 %374 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 6 %375 = bitcast double* %374 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %375, i8* %348, i64 16, i32 16, i1 false) %376 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 1, i32 0, i64 3, i32 0 store double %286, double* %376, align 64 %377 = getelementptr inbounds i8, i8* %356, i64 520 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %377, i8* %349, i64 56, i32 8, i1 false) %378 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0 store <6 x double> %182, <6 x double>* %378, align 64 %379 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 6 %380 = bitcast double* %379 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %380, i8* %350, i64 16, i32 16, i1 false) %381 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 1, i32 0, i64 4, i32 0 store double %295, double* %381, align 64 %382 = getelementptr inbounds i8, i8* %356, i64 648 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %382, i8* %351, i64 56, i32 8, i1 false) %383 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0 store <6 x double> %218, <6 x double>* %383, align 64 %384 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 6 %385 = bitcast double* %384 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %385, i8* %352, i64 16, i32 16, i1 false) %386 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 1, i32 0, i64 5, i32 0 store double %304, double* %386, align 64 %387 = getelementptr inbounds i8, i8* %356, i64 776 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %387, i8* %353, i64 56, i32 8, i1 false) %388 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0 store <6 x double> %254, <6 x double>* %388, align 64 %389 = getelementptr inbounds %Dual.99, %Dual.99* %0, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 6 %390 = bitcast double* %389 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %390, i8* %354, i64 16, i32 16, i1 false) ret void } ======================================================= 6 x 9 time=0.07274603843688965 ------------------------------------------------------- define void @"julia_+_70844"(%Dual.101* noalias sret, %Dual.101*, %Dual.101*) #0 { top: %.sroa.288 = alloca [120 x i8], align 8 %.sroa.490 = alloca [56 x i8], align 8 %.sroa.6 = alloca [120 x i8], align 8 %.sroa.8 = alloca [56 x i8], align 8 %.sroa.10 = alloca [120 x i8], align 8 %.sroa.12 = alloca [56 x i8], align 8 %.sroa.14 = alloca [120 x i8], align 8 %.sroa.16 = alloca [56 x i8], align 8 %.sroa.18 = alloca [120 x i8], align 8 %.sroa.20 = alloca [56 x i8], align 8 %.sroa.22 = alloca [120 x i8], align 8 %.sroa.24 = alloca [56 x i8], align 8 %.sroa.280 = alloca [120 x i8], align 8 %.sroa.382 = alloca [56 x i8], align 8 %.sroa.284 = alloca [120 x i8], align 8 %.sroa.486 = alloca [56 x i8], align 8 %.sroa.5.sroa.293 = alloca [120 x i8], align 8 %.sroa.5.sroa.495 = alloca [56 x i8], align 8 %.sroa.5.sroa.6 = alloca [120 x i8], align 8 %.sroa.5.sroa.8 = alloca [56 x i8], align 8 %.sroa.5.sroa.10 = alloca [120 x i8], align 8 %.sroa.5.sroa.12 = alloca [56 x i8], align 8 %.sroa.5.sroa.14 = alloca [120 x i8], align 8 %.sroa.5.sroa.16 = alloca [56 x i8], align 8 %.sroa.5.sroa.18 = alloca [120 x i8], align 8 %.sroa.5.sroa.20 = alloca [56 x i8], align 8 %.sroa.5.sroa.22 = alloca [120 x i8], align 8 %.sroa.5.sroa.24 = alloca [56 x i8], align 8 %.sroa.273 = alloca [120 x i8], align 8 %.sroa.375 = alloca [56 x i8], align 8 %.sroa.264 = alloca [120 x i8], align 8 %.sroa.366 = alloca [56 x i8], align 8 %.sroa.255 = alloca [120 x i8], align 8 %.sroa.357 = alloca [56 x i8], align 8 %.sroa.246 = alloca [120 x i8], align 8 %.sroa.348 = alloca [56 x i8], align 8 %.sroa.237 = alloca [120 x i8], align 8 %.sroa.339 = alloca [56 x i8], align 8 %.sroa.225 = alloca [120 x i8], align 8 %.sroa.3 = alloca [56 x i8], align 8 %.sroa.228 = alloca [120 x i8], align 8 %.sroa.430 = alloca [56 x i8], align 8 %.sroa.5.sroa.2 = alloca [120 x i8], align 8 %.sroa.5.sroa.4 = alloca [56 x i8], align 8 %.sroa.6.sroa.2 = alloca [120 x i8], align 8 %.sroa.6.sroa.4 = alloca [56 x i8], align 8 %.sroa.7.sroa.2 = alloca [120 x i8], align 8 %.sroa.7.sroa.4 = alloca [56 x i8], align 8 %.sroa.8.sroa.2 = alloca [120 x i8], align 8 %.sroa.8.sroa.4 = alloca [56 x i8], align 8 %.sroa.9.sroa.2 = alloca [120 x i8], align 8 %.sroa.9.sroa.4 = alloca [56 x i8], align 8 %"#temp#6.sroa.2" = alloca [120 x i8], align 8 %"#temp#6.sroa.4" = alloca [56 x i8], align 8 %"#temp#6.sroa.5.sroa.2" = alloca [120 x i8], align 8 %"#temp#6.sroa.5.sroa.4" = alloca [56 x i8], align 8 %"#temp#6.sroa.6.sroa.2" = alloca [120 x i8], align 8 %"#temp#6.sroa.6.sroa.4" = alloca [56 x i8], align 8 %"#temp#6.sroa.7.sroa.2" = alloca [120 x i8], align 8 %"#temp#6.sroa.7.sroa.4" = alloca [56 x i8], align 8 %"#temp#6.sroa.8.sroa.2" = alloca [120 x i8], align 8 %"#temp#6.sroa.8.sroa.4" = alloca [56 x i8], align 8 %"#temp#6.sroa.9.sroa.2" = alloca [120 x i8], align 8 %"#temp#6.sroa.9.sroa.4" = alloca [56 x i8], align 8 %"#temp#7.sroa.2" = alloca [56 x i8], align 8 %3 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 0, i32 1, i32 0, i64 0 %4 = load double, double* %3, align 8 %5 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 0, i32 1, i32 0, i64 0 %6 = load double, double* %5, align 8 %7 = fadd double %4, %6 %8 = insertelement <9 x double> undef, double %7, i32 0 %9 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 0, i32 1, i32 0, i64 1 %10 = load double, double* %9, align 8 %11 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 0, i32 1, i32 0, i64 1 %12 = load double, double* %11, align 8 %13 = fadd double %10, %12 %14 = insertelement <9 x double> %8, double %13, i32 1 %15 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 0, i32 1, i32 0, i64 2 %16 = load double, double* %15, align 8 %17 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 0, i32 1, i32 0, i64 2 %18 = load double, double* %17, align 8 %19 = fadd double %16, %18 %20 = insertelement <9 x double> %14, double %19, i32 2 %21 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 0, i32 1, i32 0, i64 3 %22 = load double, double* %21, align 8 %23 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 0, i32 1, i32 0, i64 3 %24 = load double, double* %23, align 8 %25 = fadd double %22, %24 %26 = insertelement <9 x double> %20, double %25, i32 3 %27 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 0, i32 1, i32 0, i64 4 %28 = load double, double* %27, align 8 %29 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 0, i32 1, i32 0, i64 4 %30 = load double, double* %29, align 8 %31 = fadd double %28, %30 %32 = insertelement <9 x double> %26, double %31, i32 4 %33 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 0, i32 1, i32 0, i64 5 %34 = load double, double* %33, align 8 %35 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 0, i32 1, i32 0, i64 5 %36 = load double, double* %35, align 8 %37 = fadd double %34, %36 %38 = insertelement <9 x double> %32, double %37, i32 5 %39 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 0, i32 1, i32 0, i64 6 %40 = load double, double* %39, align 8 %41 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 0, i32 1, i32 0, i64 6 %42 = load double, double* %41, align 8 %43 = fadd double %40, %42 %44 = insertelement <9 x double> %38, double %43, i32 6 %45 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 0, i32 1, i32 0, i64 7 %46 = load double, double* %45, align 8 %47 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 0, i32 1, i32 0, i64 7 %48 = load double, double* %47, align 8 %49 = fadd double %46, %48 %50 = insertelement <9 x double> %44, double %49, i32 7 %51 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 0, i32 1, i32 0, i64 8 %52 = load double, double* %51, align 8 %53 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 0, i32 1, i32 0, i64 8 %54 = load double, double* %53, align 8 %55 = fadd double %52, %54 %56 = insertelement <9 x double> %50, double %55, i32 8 %57 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %58 = load double, double* %57, align 8 %59 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %60 = load double, double* %59, align 8 %61 = fadd double %58, %60 %62 = insertelement <9 x double> undef, double %61, i32 0 %63 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %64 = load double, double* %63, align 8 %65 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %66 = load double, double* %65, align 8 %67 = fadd double %64, %66 %68 = insertelement <9 x double> %62, double %67, i32 1 %69 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %70 = load double, double* %69, align 8 %71 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %72 = load double, double* %71, align 8 %73 = fadd double %70, %72 %74 = insertelement <9 x double> %68, double %73, i32 2 %75 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 3 %76 = load double, double* %75, align 8 %77 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 3 %78 = load double, double* %77, align 8 %79 = fadd double %76, %78 %80 = insertelement <9 x double> %74, double %79, i32 3 %81 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 4 %82 = load double, double* %81, align 8 %83 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 4 %84 = load double, double* %83, align 8 %85 = fadd double %82, %84 %86 = insertelement <9 x double> %80, double %85, i32 4 %87 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 5 %88 = load double, double* %87, align 8 %89 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 5 %90 = load double, double* %89, align 8 %91 = fadd double %88, %90 %92 = insertelement <9 x double> %86, double %91, i32 5 %93 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 6 %94 = load double, double* %93, align 8 %95 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 6 %96 = load double, double* %95, align 8 %97 = fadd double %94, %96 %98 = insertelement <9 x double> %92, double %97, i32 6 %99 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 7 %100 = load double, double* %99, align 8 %101 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 7 %102 = load double, double* %101, align 8 %103 = fadd double %100, %102 %104 = insertelement <9 x double> %98, double %103, i32 7 %105 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 8 %106 = load double, double* %105, align 8 %107 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 8 %108 = load double, double* %107, align 8 %109 = fadd double %106, %108 %110 = insertelement <9 x double> %104, double %109, i32 8 %111 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %112 = load double, double* %111, align 8 %113 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %114 = load double, double* %113, align 8 %115 = fadd double %112, %114 %116 = insertelement <9 x double> undef, double %115, i32 0 %117 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 1 %118 = load double, double* %117, align 8 %119 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 1 %120 = load double, double* %119, align 8 %121 = fadd double %118, %120 %122 = insertelement <9 x double> %116, double %121, i32 1 %123 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 2 %124 = load double, double* %123, align 8 %125 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 2 %126 = load double, double* %125, align 8 %127 = fadd double %124, %126 %128 = insertelement <9 x double> %122, double %127, i32 2 %129 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 3 %130 = load double, double* %129, align 8 %131 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 3 %132 = load double, double* %131, align 8 %133 = fadd double %130, %132 %134 = insertelement <9 x double> %128, double %133, i32 3 %135 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 4 %136 = load double, double* %135, align 8 %137 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 4 %138 = load double, double* %137, align 8 %139 = fadd double %136, %138 %140 = insertelement <9 x double> %134, double %139, i32 4 %141 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 5 %142 = load double, double* %141, align 8 %143 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 5 %144 = load double, double* %143, align 8 %145 = fadd double %142, %144 %146 = insertelement <9 x double> %140, double %145, i32 5 %147 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 6 %148 = load double, double* %147, align 8 %149 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 6 %150 = load double, double* %149, align 8 %151 = fadd double %148, %150 %152 = insertelement <9 x double> %146, double %151, i32 6 %153 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 7 %154 = load double, double* %153, align 8 %155 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 7 %156 = load double, double* %155, align 8 %157 = fadd double %154, %156 %158 = insertelement <9 x double> %152, double %157, i32 7 %159 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 8 %160 = load double, double* %159, align 8 %161 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 8 %162 = load double, double* %161, align 8 %163 = fadd double %160, %162 %164 = insertelement <9 x double> %158, double %163, i32 8 %165 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %166 = load double, double* %165, align 8 %167 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %168 = load double, double* %167, align 8 %169 = fadd double %166, %168 %170 = insertelement <9 x double> undef, double %169, i32 0 %171 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 1 %172 = load double, double* %171, align 8 %173 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 1 %174 = load double, double* %173, align 8 %175 = fadd double %172, %174 %176 = insertelement <9 x double> %170, double %175, i32 1 %177 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 2 %178 = load double, double* %177, align 8 %179 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 2 %180 = load double, double* %179, align 8 %181 = fadd double %178, %180 %182 = insertelement <9 x double> %176, double %181, i32 2 %183 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 3 %184 = load double, double* %183, align 8 %185 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 3 %186 = load double, double* %185, align 8 %187 = fadd double %184, %186 %188 = insertelement <9 x double> %182, double %187, i32 3 %189 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 4 %190 = load double, double* %189, align 8 %191 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 4 %192 = load double, double* %191, align 8 %193 = fadd double %190, %192 %194 = insertelement <9 x double> %188, double %193, i32 4 %195 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 5 %196 = load double, double* %195, align 8 %197 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 5 %198 = load double, double* %197, align 8 %199 = fadd double %196, %198 %200 = insertelement <9 x double> %194, double %199, i32 5 %201 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 6 %202 = load double, double* %201, align 8 %203 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 6 %204 = load double, double* %203, align 8 %205 = fadd double %202, %204 %206 = insertelement <9 x double> %200, double %205, i32 6 %207 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 7 %208 = load double, double* %207, align 8 %209 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 7 %210 = load double, double* %209, align 8 %211 = fadd double %208, %210 %212 = insertelement <9 x double> %206, double %211, i32 7 %213 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 8 %214 = load double, double* %213, align 8 %215 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 8 %216 = load double, double* %215, align 8 %217 = fadd double %214, %216 %218 = insertelement <9 x double> %212, double %217, i32 8 %219 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 0 %220 = load double, double* %219, align 8 %221 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 0 %222 = load double, double* %221, align 8 %223 = fadd double %220, %222 %224 = insertelement <9 x double> undef, double %223, i32 0 %225 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 1 %226 = load double, double* %225, align 8 %227 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 1 %228 = load double, double* %227, align 8 %229 = fadd double %226, %228 %230 = insertelement <9 x double> %224, double %229, i32 1 %231 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 2 %232 = load double, double* %231, align 8 %233 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 2 %234 = load double, double* %233, align 8 %235 = fadd double %232, %234 %236 = insertelement <9 x double> %230, double %235, i32 2 %237 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 3 %238 = load double, double* %237, align 8 %239 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 3 %240 = load double, double* %239, align 8 %241 = fadd double %238, %240 %242 = insertelement <9 x double> %236, double %241, i32 3 %243 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 4 %244 = load double, double* %243, align 8 %245 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 4 %246 = load double, double* %245, align 8 %247 = fadd double %244, %246 %248 = insertelement <9 x double> %242, double %247, i32 4 %249 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 5 %250 = load double, double* %249, align 8 %251 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 5 %252 = load double, double* %251, align 8 %253 = fadd double %250, %252 %254 = insertelement <9 x double> %248, double %253, i32 5 %255 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 6 %256 = load double, double* %255, align 8 %257 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 6 %258 = load double, double* %257, align 8 %259 = fadd double %256, %258 %260 = insertelement <9 x double> %254, double %259, i32 6 %261 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 7 %262 = load double, double* %261, align 8 %263 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 7 %264 = load double, double* %263, align 8 %265 = fadd double %262, %264 %266 = insertelement <9 x double> %260, double %265, i32 7 %267 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 8 %268 = load double, double* %267, align 8 %269 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 8 %270 = load double, double* %269, align 8 %271 = fadd double %268, %270 %272 = insertelement <9 x double> %266, double %271, i32 8 %273 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 0 %274 = load double, double* %273, align 8 %275 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 0 %276 = load double, double* %275, align 8 %277 = fadd double %274, %276 %278 = insertelement <9 x double> undef, double %277, i32 0 %279 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 1 %280 = load double, double* %279, align 8 %281 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 1 %282 = load double, double* %281, align 8 %283 = fadd double %280, %282 %284 = insertelement <9 x double> %278, double %283, i32 1 %285 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 2 %286 = load double, double* %285, align 8 %287 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 2 %288 = load double, double* %287, align 8 %289 = fadd double %286, %288 %290 = insertelement <9 x double> %284, double %289, i32 2 %291 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 3 %292 = load double, double* %291, align 8 %293 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 3 %294 = load double, double* %293, align 8 %295 = fadd double %292, %294 %296 = insertelement <9 x double> %290, double %295, i32 3 %297 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 4 %298 = load double, double* %297, align 8 %299 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 4 %300 = load double, double* %299, align 8 %301 = fadd double %298, %300 %302 = insertelement <9 x double> %296, double %301, i32 4 %303 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 5 %304 = load double, double* %303, align 8 %305 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 5 %306 = load double, double* %305, align 8 %307 = fadd double %304, %306 %308 = insertelement <9 x double> %302, double %307, i32 5 %309 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 6 %310 = load double, double* %309, align 8 %311 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 6 %312 = load double, double* %311, align 8 %313 = fadd double %310, %312 %314 = insertelement <9 x double> %308, double %313, i32 6 %315 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 7 %316 = load double, double* %315, align 8 %317 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 7 %318 = load double, double* %317, align 8 %319 = fadd double %316, %318 %320 = insertelement <9 x double> %314, double %319, i32 7 %321 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 8 %322 = load double, double* %321, align 8 %323 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 8 %324 = load double, double* %323, align 8 %325 = fadd double %322, %324 %326 = insertelement <9 x double> %320, double %325, i32 8 %327 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 0 %328 = load double, double* %327, align 8 %329 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 0 %330 = load double, double* %329, align 8 %331 = fadd double %328, %330 %332 = insertelement <9 x double> undef, double %331, i32 0 %333 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 1 %334 = load double, double* %333, align 8 %335 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 1 %336 = load double, double* %335, align 8 %337 = fadd double %334, %336 %338 = insertelement <9 x double> %332, double %337, i32 1 %339 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 2 %340 = load double, double* %339, align 8 %341 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 2 %342 = load double, double* %341, align 8 %343 = fadd double %340, %342 %344 = insertelement <9 x double> %338, double %343, i32 2 %345 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 3 %346 = load double, double* %345, align 8 %347 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 3 %348 = load double, double* %347, align 8 %349 = fadd double %346, %348 %350 = insertelement <9 x double> %344, double %349, i32 3 %351 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 4 %352 = load double, double* %351, align 8 %353 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 4 %354 = load double, double* %353, align 8 %355 = fadd double %352, %354 %356 = insertelement <9 x double> %350, double %355, i32 4 %357 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 5 %358 = load double, double* %357, align 8 %359 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 5 %360 = load double, double* %359, align 8 %361 = fadd double %358, %360 %362 = insertelement <9 x double> %356, double %361, i32 5 %363 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 6 %364 = load double, double* %363, align 8 %365 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 6 %366 = load double, double* %365, align 8 %367 = fadd double %364, %366 %368 = insertelement <9 x double> %362, double %367, i32 6 %369 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 7 %370 = load double, double* %369, align 8 %371 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 7 %372 = load double, double* %371, align 8 %373 = fadd double %370, %372 %374 = insertelement <9 x double> %368, double %373, i32 7 %375 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 8 %376 = load double, double* %375, align 8 %377 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 8 %378 = load double, double* %377, align 8 %379 = fadd double %376, %378 %380 = insertelement <9 x double> %374, double %379, i32 8 %381 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 0, i32 0 %382 = load double, double* %381, align 8 %383 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 0, i32 0 %384 = load double, double* %383, align 8 %385 = fadd double %382, %384 %386 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.225, i64 0, i64 0 %387 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.228, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %387, i8* %386, i64 120, i32 8, i1 false) %388 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.3, i64 0, i64 0 %389 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.430, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %389, i8* %388, i64 56, i32 8, i1 false) %390 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 1, i32 0 %391 = load double, double* %390, align 8 %392 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 1, i32 0 %393 = load double, double* %392, align 8 %394 = fadd double %391, %393 %395 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.237, i64 0, i64 0 %396 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %396, i8* %395, i64 120, i32 8, i1 false) %397 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.339, i64 0, i64 0 %398 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %398, i8* %397, i64 56, i32 8, i1 false) %399 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 2, i32 0 %400 = load double, double* %399, align 8 %401 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 2, i32 0 %402 = load double, double* %401, align 8 %403 = fadd double %400, %402 %404 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.246, i64 0, i64 0 %405 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.6.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %405, i8* %404, i64 120, i32 8, i1 false) %406 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.348, i64 0, i64 0 %407 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.6.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %407, i8* %406, i64 56, i32 8, i1 false) %408 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 3, i32 0 %409 = load double, double* %408, align 8 %410 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 3, i32 0 %411 = load double, double* %410, align 8 %412 = fadd double %409, %411 %413 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.255, i64 0, i64 0 %414 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.7.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %414, i8* %413, i64 120, i32 8, i1 false) %415 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.357, i64 0, i64 0 %416 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.7.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %416, i8* %415, i64 56, i32 8, i1 false) %417 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 4, i32 0 %418 = load double, double* %417, align 8 %419 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 4, i32 0 %420 = load double, double* %419, align 8 %421 = fadd double %418, %420 %422 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.264, i64 0, i64 0 %423 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.8.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %423, i8* %422, i64 120, i32 8, i1 false) %424 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.366, i64 0, i64 0 %425 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.8.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %425, i8* %424, i64 56, i32 8, i1 false) %426 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 1, i32 0, i64 5, i32 0 %427 = load double, double* %426, align 8 %428 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 1, i32 0, i64 5, i32 0 %429 = load double, double* %428, align 8 %430 = fadd double %427, %429 %431 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.273, i64 0, i64 0 %432 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.9.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %432, i8* %431, i64 120, i32 8, i1 false) %433 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.375, i64 0, i64 0 %434 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.9.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %434, i8* %433, i64 56, i32 8, i1 false) %435 = getelementptr inbounds [120 x i8], [120 x i8]* %"#temp#6.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %435, i8* %387, i64 120, i32 8, i1 false) %436 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#6.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %436, i8* %389, i64 56, i32 8, i1 false) %437 = getelementptr inbounds [120 x i8], [120 x i8]* %"#temp#6.sroa.5.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %437, i8* %396, i64 120, i32 8, i1 false) %438 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#6.sroa.5.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %438, i8* %398, i64 56, i32 8, i1 false) %439 = getelementptr inbounds [120 x i8], [120 x i8]* %"#temp#6.sroa.6.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %439, i8* %405, i64 120, i32 8, i1 false) %440 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#6.sroa.6.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %440, i8* %407, i64 56, i32 8, i1 false) %441 = getelementptr inbounds [120 x i8], [120 x i8]* %"#temp#6.sroa.7.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %441, i8* %414, i64 120, i32 8, i1 false) %442 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#6.sroa.7.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %442, i8* %416, i64 56, i32 8, i1 false) %443 = getelementptr inbounds [120 x i8], [120 x i8]* %"#temp#6.sroa.8.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %443, i8* %423, i64 120, i32 8, i1 false) %444 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#6.sroa.8.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %444, i8* %425, i64 56, i32 8, i1 false) %445 = getelementptr inbounds [120 x i8], [120 x i8]* %"#temp#6.sroa.9.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %445, i8* %432, i64 120, i32 8, i1 false) %446 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#6.sroa.9.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %446, i8* %434, i64 56, i32 8, i1 false) %447 = getelementptr inbounds %Dual.101, %Dual.101* %1, i64 0, i32 0, i32 0 %448 = load double, double* %447, align 8 %449 = getelementptr inbounds %Dual.101, %Dual.101* %2, i64 0, i32 0, i32 0 %450 = load double, double* %449, align 8 %451 = fadd double %448, %450 %452 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#7.sroa.2", i64 0, i64 0 %453 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.382, i64 0, i64 0 call void @llvm.memmove.p0i8.p0i8.i64(i8* %453, i8* %452, i64 56, i32 8, i1 false) %454 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.280, i64 0, i64 0 %455 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.284, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %455, i8* %454, i64 120, i32 8, i1 false) %456 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.486, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %456, i8* %453, i64 56, i32 8, i1 false) %457 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.288, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %457, i8* %435, i64 120, i32 8, i1 false) %458 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.490, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %458, i8* %436, i64 56, i32 8, i1 false) %459 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.6, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %459, i8* %437, i64 120, i32 8, i1 false) %460 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.8, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %460, i8* %438, i64 56, i32 8, i1 false) %461 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.10, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %461, i8* %439, i64 120, i32 8, i1 false) %462 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.12, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %462, i8* %440, i64 56, i32 8, i1 false) %463 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.14, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %463, i8* %441, i64 120, i32 8, i1 false) %464 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.16, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %464, i8* %442, i64 56, i32 8, i1 false) %465 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.18, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %465, i8* %443, i64 120, i32 8, i1 false) %466 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.20, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %466, i8* %444, i64 56, i32 8, i1 false) %467 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.22, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %467, i8* %445, i64 120, i32 8, i1 false) %468 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.24, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %468, i8* %446, i64 56, i32 8, i1 false) %469 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.293, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %469, i8* %457, i64 120, i32 8, i1 false) %470 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.495, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %470, i8* %458, i64 56, i32 8, i1 false) %471 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.6, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %471, i8* %459, i64 120, i32 8, i1 false) %472 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.8, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %472, i8* %460, i64 56, i32 8, i1 false) %473 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.10, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %473, i8* %461, i64 120, i32 8, i1 false) %474 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.12, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %474, i8* %462, i64 56, i32 8, i1 false) %475 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.14, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %475, i8* %463, i64 120, i32 8, i1 false) %476 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.16, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %476, i8* %464, i64 56, i32 8, i1 false) %477 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.18, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %477, i8* %465, i64 120, i32 8, i1 false) %478 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.20, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %478, i8* %466, i64 56, i32 8, i1 false) %479 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.22, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %479, i8* %467, i64 120, i32 8, i1 false) %480 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.24, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %480, i8* %468, i64 56, i32 8, i1 false) %481 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 0, i32 0 store double %451, double* %481, align 128 %482 = bitcast %Dual.101* %0 to i8* %483 = getelementptr inbounds i8, i8* %482, i64 8 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %483, i8* %455, i64 120, i32 8, i1 false) %484 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 0, i32 1, i32 0 store <9 x double> %56, <9 x double>* %484, align 128 %485 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 0, i32 1, i32 0, i64 9 %486 = bitcast double* %485 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %486, i8* %456, i64 56, i32 8, i1 false) %487 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 1, i32 0, i64 0, i32 0 store double %385, double* %487, align 128 %488 = getelementptr inbounds i8, i8* %482, i64 264 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %488, i8* %469, i64 120, i32 8, i1 false) %489 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0 store <9 x double> %110, <9 x double>* %489, align 128 %490 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 9 %491 = bitcast double* %490 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %491, i8* %470, i64 56, i32 8, i1 false) %492 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 1, i32 0, i64 1, i32 0 store double %394, double* %492, align 128 %493 = getelementptr inbounds i8, i8* %482, i64 520 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %493, i8* %471, i64 120, i32 8, i1 false) %494 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0 store <9 x double> %164, <9 x double>* %494, align 128 %495 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 9 %496 = bitcast double* %495 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %496, i8* %472, i64 56, i32 8, i1 false) %497 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 1, i32 0, i64 2, i32 0 store double %403, double* %497, align 128 %498 = getelementptr inbounds i8, i8* %482, i64 776 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %498, i8* %473, i64 120, i32 8, i1 false) %499 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0 store <9 x double> %218, <9 x double>* %499, align 128 %500 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 9 %501 = bitcast double* %500 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %501, i8* %474, i64 56, i32 8, i1 false) %502 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 1, i32 0, i64 3, i32 0 store double %412, double* %502, align 128 %503 = getelementptr inbounds i8, i8* %482, i64 1032 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %503, i8* %475, i64 120, i32 8, i1 false) %504 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0 store <9 x double> %272, <9 x double>* %504, align 128 %505 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 9 %506 = bitcast double* %505 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %506, i8* %476, i64 56, i32 8, i1 false) %507 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 1, i32 0, i64 4, i32 0 store double %421, double* %507, align 128 %508 = getelementptr inbounds i8, i8* %482, i64 1288 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %508, i8* %477, i64 120, i32 8, i1 false) %509 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0 store <9 x double> %326, <9 x double>* %509, align 128 %510 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 9 %511 = bitcast double* %510 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %511, i8* %478, i64 56, i32 8, i1 false) %512 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 1, i32 0, i64 5, i32 0 store double %430, double* %512, align 128 %513 = getelementptr inbounds i8, i8* %482, i64 1544 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %513, i8* %479, i64 120, i32 8, i1 false) %514 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0 store <9 x double> %380, <9 x double>* %514, align 128 %515 = getelementptr inbounds %Dual.101, %Dual.101* %0, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 9 %516 = bitcast double* %515 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %516, i8* %480, i64 56, i32 8, i1 false) ret void } ======================================================= 9 x 1 time=0.008133172988891602 ------------------------------------------------------- define void @"julia_+_70853"(%Dual.103* noalias sret, %Dual.103*, %Dual.103*) #0 { top: %3 = getelementptr inbounds %Dual.103, %Dual.103* %1, i64 0, i32 0, i32 1, i32 0, i64 0 %4 = load double, double* %3, align 8 %5 = getelementptr inbounds %Dual.103, %Dual.103* %2, i64 0, i32 0, i32 1, i32 0, i64 0 %6 = load double, double* %5, align 8 %7 = fadd double %4, %6 %8 = getelementptr inbounds %Dual.103, %Dual.103* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %9 = load double, double* %8, align 8 %10 = getelementptr inbounds %Dual.103, %Dual.103* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %11 = load double, double* %10, align 8 %12 = fadd double %9, %11 %13 = getelementptr inbounds %Dual.103, %Dual.103* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %14 = load double, double* %13, align 8 %15 = getelementptr inbounds %Dual.103, %Dual.103* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %16 = load double, double* %15, align 8 %17 = fadd double %14, %16 %18 = getelementptr inbounds %Dual.103, %Dual.103* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %19 = load double, double* %18, align 8 %20 = getelementptr inbounds %Dual.103, %Dual.103* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %21 = load double, double* %20, align 8 %22 = fadd double %19, %21 %23 = getelementptr inbounds %Dual.103, %Dual.103* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 0 %24 = load double, double* %23, align 8 %25 = getelementptr inbounds %Dual.103, %Dual.103* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 0 %26 = load double, double* %25, align 8 %27 = fadd double %24, %26 %28 = getelementptr inbounds %Dual.103, %Dual.103* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 0 %29 = load double, double* %28, align 8 %30 = getelementptr inbounds %Dual.103, %Dual.103* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 0 %31 = load double, double* %30, align 8 %32 = fadd double %29, %31 %33 = getelementptr inbounds %Dual.103, %Dual.103* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 0 %34 = load double, double* %33, align 8 %35 = getelementptr inbounds %Dual.103, %Dual.103* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 0 %36 = load double, double* %35, align 8 %37 = fadd double %34, %36 %38 = getelementptr inbounds %Dual.103, %Dual.103* %1, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 0 %39 = load double, double* %38, align 8 %40 = getelementptr inbounds %Dual.103, %Dual.103* %2, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 0 %41 = load double, double* %40, align 8 %42 = fadd double %39, %41 %43 = getelementptr inbounds %Dual.103, %Dual.103* %1, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 0 %44 = load double, double* %43, align 8 %45 = getelementptr inbounds %Dual.103, %Dual.103* %2, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 0 %46 = load double, double* %45, align 8 %47 = fadd double %44, %46 %48 = getelementptr inbounds %Dual.103, %Dual.103* %1, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 0 %49 = load double, double* %48, align 8 %50 = getelementptr inbounds %Dual.103, %Dual.103* %2, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 0 %51 = load double, double* %50, align 8 %52 = fadd double %49, %51 %53 = getelementptr inbounds %Dual.103, %Dual.103* %1, i64 0, i32 1, i32 0, i64 0, i32 0 %54 = load double, double* %53, align 8 %55 = getelementptr inbounds %Dual.103, %Dual.103* %2, i64 0, i32 1, i32 0, i64 0, i32 0 %56 = load double, double* %55, align 8 %57 = fadd double %54, %56 %58 = insertelement <1 x double> undef, double %12, i32 0 %59 = getelementptr inbounds %Dual.103, %Dual.103* %1, i64 0, i32 1, i32 0, i64 1, i32 0 %60 = load double, double* %59, align 8 %61 = getelementptr inbounds %Dual.103, %Dual.103* %2, i64 0, i32 1, i32 0, i64 1, i32 0 %62 = load double, double* %61, align 8 %63 = fadd double %60, %62 %64 = insertelement <1 x double> undef, double %17, i32 0 %65 = getelementptr inbounds %Dual.103, %Dual.103* %1, i64 0, i32 1, i32 0, i64 2, i32 0 %66 = load double, double* %65, align 8 %67 = getelementptr inbounds %Dual.103, %Dual.103* %2, i64 0, i32 1, i32 0, i64 2, i32 0 %68 = load double, double* %67, align 8 %69 = fadd double %66, %68 %70 = insertelement <1 x double> undef, double %22, i32 0 %71 = getelementptr inbounds %Dual.103, %Dual.103* %1, i64 0, i32 1, i32 0, i64 3, i32 0 %72 = load double, double* %71, align 8 %73 = getelementptr inbounds %Dual.103, %Dual.103* %2, i64 0, i32 1, i32 0, i64 3, i32 0 %74 = load double, double* %73, align 8 %75 = fadd double %72, %74 %76 = insertelement <1 x double> undef, double %27, i32 0 %77 = getelementptr inbounds %Dual.103, %Dual.103* %1, i64 0, i32 1, i32 0, i64 4, i32 0 %78 = load double, double* %77, align 8 %79 = getelementptr inbounds %Dual.103, %Dual.103* %2, i64 0, i32 1, i32 0, i64 4, i32 0 %80 = load double, double* %79, align 8 %81 = fadd double %78, %80 %82 = insertelement <1 x double> undef, double %32, i32 0 %83 = getelementptr inbounds %Dual.103, %Dual.103* %1, i64 0, i32 1, i32 0, i64 5, i32 0 %84 = load double, double* %83, align 8 %85 = getelementptr inbounds %Dual.103, %Dual.103* %2, i64 0, i32 1, i32 0, i64 5, i32 0 %86 = load double, double* %85, align 8 %87 = fadd double %84, %86 %88 = insertelement <1 x double> undef, double %37, i32 0 %89 = getelementptr inbounds %Dual.103, %Dual.103* %1, i64 0, i32 1, i32 0, i64 6, i32 0 %90 = load double, double* %89, align 8 %91 = getelementptr inbounds %Dual.103, %Dual.103* %2, i64 0, i32 1, i32 0, i64 6, i32 0 %92 = load double, double* %91, align 8 %93 = fadd double %90, %92 %94 = insertelement <1 x double> undef, double %42, i32 0 %95 = getelementptr inbounds %Dual.103, %Dual.103* %1, i64 0, i32 1, i32 0, i64 7, i32 0 %96 = load double, double* %95, align 8 %97 = getelementptr inbounds %Dual.103, %Dual.103* %2, i64 0, i32 1, i32 0, i64 7, i32 0 %98 = load double, double* %97, align 8 %99 = fadd double %96, %98 %100 = insertelement <1 x double> undef, double %47, i32 0 %101 = getelementptr inbounds %Dual.103, %Dual.103* %1, i64 0, i32 1, i32 0, i64 8, i32 0 %102 = load double, double* %101, align 8 %103 = getelementptr inbounds %Dual.103, %Dual.103* %2, i64 0, i32 1, i32 0, i64 8, i32 0 %104 = load double, double* %103, align 8 %105 = fadd double %102, %104 %106 = insertelement <1 x double> undef, double %52, i32 0 %107 = getelementptr inbounds %Dual.103, %Dual.103* %1, i64 0, i32 0, i32 0 %108 = load double, double* %107, align 8 %109 = getelementptr inbounds %Dual.103, %Dual.103* %2, i64 0, i32 0, i32 0 %110 = load double, double* %109, align 8 %111 = fadd double %108, %110 %112 = getelementptr inbounds %Dual.103, %Dual.103* %0, i64 0, i32 0, i32 0 store double %111, double* %112, align 8 %113 = getelementptr inbounds %Dual.103, %Dual.103* %0, i64 0, i32 0, i32 1, i32 0, i64 0 store double %7, double* %113, align 8 %114 = getelementptr inbounds %Dual.103, %Dual.103* %0, i64 0, i32 1, i32 0, i64 0, i32 0 store double %57, double* %114, align 8 %115 = getelementptr inbounds %Dual.103, %Dual.103* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0 store <1 x double> %58, <1 x double>* %115, align 8 %116 = getelementptr inbounds %Dual.103, %Dual.103* %0, i64 0, i32 1, i32 0, i64 1, i32 0 store double %63, double* %116, align 8 %117 = getelementptr inbounds %Dual.103, %Dual.103* %0, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0 store <1 x double> %64, <1 x double>* %117, align 8 %118 = getelementptr inbounds %Dual.103, %Dual.103* %0, i64 0, i32 1, i32 0, i64 2, i32 0 store double %69, double* %118, align 8 %119 = getelementptr inbounds %Dual.103, %Dual.103* %0, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0 store <1 x double> %70, <1 x double>* %119, align 8 %120 = getelementptr inbounds %Dual.103, %Dual.103* %0, i64 0, i32 1, i32 0, i64 3, i32 0 store double %75, double* %120, align 8 %121 = getelementptr inbounds %Dual.103, %Dual.103* %0, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0 store <1 x double> %76, <1 x double>* %121, align 8 %122 = getelementptr inbounds %Dual.103, %Dual.103* %0, i64 0, i32 1, i32 0, i64 4, i32 0 store double %81, double* %122, align 8 %123 = getelementptr inbounds %Dual.103, %Dual.103* %0, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0 store <1 x double> %82, <1 x double>* %123, align 8 %124 = getelementptr inbounds %Dual.103, %Dual.103* %0, i64 0, i32 1, i32 0, i64 5, i32 0 store double %87, double* %124, align 8 %125 = getelementptr inbounds %Dual.103, %Dual.103* %0, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0 store <1 x double> %88, <1 x double>* %125, align 8 %126 = getelementptr inbounds %Dual.103, %Dual.103* %0, i64 0, i32 1, i32 0, i64 6, i32 0 store double %93, double* %126, align 8 %127 = getelementptr inbounds %Dual.103, %Dual.103* %0, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0 store <1 x double> %94, <1 x double>* %127, align 8 %128 = getelementptr inbounds %Dual.103, %Dual.103* %0, i64 0, i32 1, i32 0, i64 7, i32 0 store double %99, double* %128, align 8 %129 = getelementptr inbounds %Dual.103, %Dual.103* %0, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0 store <1 x double> %100, <1 x double>* %129, align 8 %130 = getelementptr inbounds %Dual.103, %Dual.103* %0, i64 0, i32 1, i32 0, i64 8, i32 0 store double %105, double* %130, align 8 %131 = getelementptr inbounds %Dual.103, %Dual.103* %0, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0 store <1 x double> %106, <1 x double>* %131, align 8 ret void } ======================================================= 9 x 3 time=0.023211956024169922 ------------------------------------------------------- define void @"julia_+_70862"(%Dual.105* noalias sret, %Dual.105*, %Dual.105*) #0 { top: %.sroa.2124 = alloca [24 x i8], align 8 %.sroa.6 = alloca [24 x i8], align 8 %.sroa.10 = alloca [24 x i8], align 8 %.sroa.14 = alloca [24 x i8], align 8 %.sroa.18 = alloca [24 x i8], align 8 %.sroa.22 = alloca [24 x i8], align 8 %.sroa.26 = alloca [24 x i8], align 8 %.sroa.30 = alloca [24 x i8], align 8 %.sroa.34 = alloca [24 x i8], align 8 %.sroa.2116 = alloca [24 x i8], align 8 %.sroa.2120 = alloca [24 x i8], align 8 %.sroa.5.sroa.2129 = alloca [24 x i8], align 8 %.sroa.5.sroa.6 = alloca [24 x i8], align 8 %.sroa.5.sroa.10 = alloca [24 x i8], align 8 %.sroa.5.sroa.14 = alloca [24 x i8], align 8 %.sroa.5.sroa.18 = alloca [24 x i8], align 8 %.sroa.5.sroa.22 = alloca [24 x i8], align 8 %.sroa.5.sroa.26 = alloca [24 x i8], align 8 %.sroa.5.sroa.30 = alloca [24 x i8], align 8 %.sroa.5.sroa.34 = alloca [24 x i8], align 8 %.sroa.2109 = alloca [24 x i8], align 8 %.sroa.2100 = alloca [24 x i8], align 8 %.sroa.291 = alloca [24 x i8], align 8 %.sroa.282 = alloca [24 x i8], align 8 %.sroa.273 = alloca [24 x i8], align 8 %.sroa.264 = alloca [24 x i8], align 8 %.sroa.255 = alloca [24 x i8], align 8 %.sroa.246 = alloca [24 x i8], align 8 %.sroa.234 = alloca [24 x i8], align 8 %.sroa.237 = alloca [24 x i8], align 8 %.sroa.5.sroa.2 = alloca [24 x i8], align 8 %.sroa.6.sroa.2 = alloca [24 x i8], align 8 %.sroa.7.sroa.2 = alloca [24 x i8], align 8 %.sroa.8.sroa.2 = alloca [24 x i8], align 8 %.sroa.9.sroa.2 = alloca [24 x i8], align 8 %.sroa.10.sroa.2 = alloca [24 x i8], align 8 %.sroa.11.sroa.2 = alloca [24 x i8], align 8 %.sroa.12.sroa.2 = alloca [24 x i8], align 8 %"#temp#9.sroa.2" = alloca [24 x i8], align 8 %"#temp#9.sroa.5.sroa.2" = alloca [24 x i8], align 8 %"#temp#9.sroa.6.sroa.2" = alloca [24 x i8], align 8 %"#temp#9.sroa.7.sroa.2" = alloca [24 x i8], align 8 %"#temp#9.sroa.8.sroa.2" = alloca [24 x i8], align 8 %"#temp#9.sroa.9.sroa.2" = alloca [24 x i8], align 8 %"#temp#9.sroa.10.sroa.2" = alloca [24 x i8], align 8 %"#temp#9.sroa.11.sroa.2" = alloca [24 x i8], align 8 %"#temp#9.sroa.12.sroa.2" = alloca [24 x i8], align 8 %3 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 0, i32 1, i32 0, i64 0 %4 = load double, double* %3, align 8 %5 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 0, i32 1, i32 0, i64 0 %6 = load double, double* %5, align 8 %7 = fadd double %4, %6 %8 = insertelement <3 x double> undef, double %7, i32 0 %9 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 0, i32 1, i32 0, i64 1 %10 = load double, double* %9, align 8 %11 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 0, i32 1, i32 0, i64 1 %12 = load double, double* %11, align 8 %13 = fadd double %10, %12 %14 = insertelement <3 x double> %8, double %13, i32 1 %15 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 0, i32 1, i32 0, i64 2 %16 = load double, double* %15, align 8 %17 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 0, i32 1, i32 0, i64 2 %18 = load double, double* %17, align 8 %19 = fadd double %16, %18 %20 = insertelement <3 x double> %14, double %19, i32 2 %21 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %22 = load double, double* %21, align 8 %23 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %24 = load double, double* %23, align 8 %25 = fadd double %22, %24 %26 = insertelement <3 x double> undef, double %25, i32 0 %27 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %28 = load double, double* %27, align 8 %29 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %30 = load double, double* %29, align 8 %31 = fadd double %28, %30 %32 = insertelement <3 x double> %26, double %31, i32 1 %33 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %34 = load double, double* %33, align 8 %35 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %36 = load double, double* %35, align 8 %37 = fadd double %34, %36 %38 = insertelement <3 x double> %32, double %37, i32 2 %39 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %40 = load double, double* %39, align 8 %41 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %42 = load double, double* %41, align 8 %43 = fadd double %40, %42 %44 = insertelement <3 x double> undef, double %43, i32 0 %45 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 1 %46 = load double, double* %45, align 8 %47 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 1 %48 = load double, double* %47, align 8 %49 = fadd double %46, %48 %50 = insertelement <3 x double> %44, double %49, i32 1 %51 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 2 %52 = load double, double* %51, align 8 %53 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 2 %54 = load double, double* %53, align 8 %55 = fadd double %52, %54 %56 = insertelement <3 x double> %50, double %55, i32 2 %57 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %58 = load double, double* %57, align 8 %59 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %60 = load double, double* %59, align 8 %61 = fadd double %58, %60 %62 = insertelement <3 x double> undef, double %61, i32 0 %63 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 1 %64 = load double, double* %63, align 8 %65 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 1 %66 = load double, double* %65, align 8 %67 = fadd double %64, %66 %68 = insertelement <3 x double> %62, double %67, i32 1 %69 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 2 %70 = load double, double* %69, align 8 %71 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 2 %72 = load double, double* %71, align 8 %73 = fadd double %70, %72 %74 = insertelement <3 x double> %68, double %73, i32 2 %75 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 0 %76 = load double, double* %75, align 8 %77 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 0 %78 = load double, double* %77, align 8 %79 = fadd double %76, %78 %80 = insertelement <3 x double> undef, double %79, i32 0 %81 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 1 %82 = load double, double* %81, align 8 %83 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 1 %84 = load double, double* %83, align 8 %85 = fadd double %82, %84 %86 = insertelement <3 x double> %80, double %85, i32 1 %87 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 2 %88 = load double, double* %87, align 8 %89 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 2 %90 = load double, double* %89, align 8 %91 = fadd double %88, %90 %92 = insertelement <3 x double> %86, double %91, i32 2 %93 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 0 %94 = load double, double* %93, align 8 %95 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 0 %96 = load double, double* %95, align 8 %97 = fadd double %94, %96 %98 = insertelement <3 x double> undef, double %97, i32 0 %99 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 1 %100 = load double, double* %99, align 8 %101 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 1 %102 = load double, double* %101, align 8 %103 = fadd double %100, %102 %104 = insertelement <3 x double> %98, double %103, i32 1 %105 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 2 %106 = load double, double* %105, align 8 %107 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 2 %108 = load double, double* %107, align 8 %109 = fadd double %106, %108 %110 = insertelement <3 x double> %104, double %109, i32 2 %111 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 0 %112 = load double, double* %111, align 8 %113 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 0 %114 = load double, double* %113, align 8 %115 = fadd double %112, %114 %116 = insertelement <3 x double> undef, double %115, i32 0 %117 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 1 %118 = load double, double* %117, align 8 %119 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 1 %120 = load double, double* %119, align 8 %121 = fadd double %118, %120 %122 = insertelement <3 x double> %116, double %121, i32 1 %123 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 2 %124 = load double, double* %123, align 8 %125 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 2 %126 = load double, double* %125, align 8 %127 = fadd double %124, %126 %128 = insertelement <3 x double> %122, double %127, i32 2 %129 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 0 %130 = load double, double* %129, align 8 %131 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 0 %132 = load double, double* %131, align 8 %133 = fadd double %130, %132 %134 = insertelement <3 x double> undef, double %133, i32 0 %135 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 1 %136 = load double, double* %135, align 8 %137 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 1 %138 = load double, double* %137, align 8 %139 = fadd double %136, %138 %140 = insertelement <3 x double> %134, double %139, i32 1 %141 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 2 %142 = load double, double* %141, align 8 %143 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 2 %144 = load double, double* %143, align 8 %145 = fadd double %142, %144 %146 = insertelement <3 x double> %140, double %145, i32 2 %147 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 0 %148 = load double, double* %147, align 8 %149 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 0 %150 = load double, double* %149, align 8 %151 = fadd double %148, %150 %152 = insertelement <3 x double> undef, double %151, i32 0 %153 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 1 %154 = load double, double* %153, align 8 %155 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 1 %156 = load double, double* %155, align 8 %157 = fadd double %154, %156 %158 = insertelement <3 x double> %152, double %157, i32 1 %159 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 2 %160 = load double, double* %159, align 8 %161 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 2 %162 = load double, double* %161, align 8 %163 = fadd double %160, %162 %164 = insertelement <3 x double> %158, double %163, i32 2 %165 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 0 %166 = load double, double* %165, align 8 %167 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 0 %168 = load double, double* %167, align 8 %169 = fadd double %166, %168 %170 = insertelement <3 x double> undef, double %169, i32 0 %171 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 1 %172 = load double, double* %171, align 8 %173 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 1 %174 = load double, double* %173, align 8 %175 = fadd double %172, %174 %176 = insertelement <3 x double> %170, double %175, i32 1 %177 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 2 %178 = load double, double* %177, align 8 %179 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 2 %180 = load double, double* %179, align 8 %181 = fadd double %178, %180 %182 = insertelement <3 x double> %176, double %181, i32 2 %183 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 0, i32 0 %184 = load double, double* %183, align 8 %185 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 0, i32 0 %186 = load double, double* %185, align 8 %187 = fadd double %184, %186 %188 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.234, i64 0, i64 0 %189 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.237, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %189, i8* %188, i64 24, i32 8, i1 false) %190 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 1, i32 0 %191 = load double, double* %190, align 8 %192 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 1, i32 0 %193 = load double, double* %192, align 8 %194 = fadd double %191, %193 %195 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.246, i64 0, i64 0 %196 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %196, i8* %195, i64 24, i32 8, i1 false) %197 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 2, i32 0 %198 = load double, double* %197, align 8 %199 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 2, i32 0 %200 = load double, double* %199, align 8 %201 = fadd double %198, %200 %202 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.255, i64 0, i64 0 %203 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.6.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %203, i8* %202, i64 24, i32 8, i1 false) %204 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 3, i32 0 %205 = load double, double* %204, align 8 %206 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 3, i32 0 %207 = load double, double* %206, align 8 %208 = fadd double %205, %207 %209 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.264, i64 0, i64 0 %210 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.7.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %210, i8* %209, i64 24, i32 8, i1 false) %211 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 4, i32 0 %212 = load double, double* %211, align 8 %213 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 4, i32 0 %214 = load double, double* %213, align 8 %215 = fadd double %212, %214 %216 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.273, i64 0, i64 0 %217 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.8.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %217, i8* %216, i64 24, i32 8, i1 false) %218 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 5, i32 0 %219 = load double, double* %218, align 8 %220 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 5, i32 0 %221 = load double, double* %220, align 8 %222 = fadd double %219, %221 %223 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.282, i64 0, i64 0 %224 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.9.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %224, i8* %223, i64 24, i32 8, i1 false) %225 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 6, i32 0 %226 = load double, double* %225, align 8 %227 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 6, i32 0 %228 = load double, double* %227, align 8 %229 = fadd double %226, %228 %230 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.291, i64 0, i64 0 %231 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.10.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %231, i8* %230, i64 24, i32 8, i1 false) %232 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 7, i32 0 %233 = load double, double* %232, align 8 %234 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 7, i32 0 %235 = load double, double* %234, align 8 %236 = fadd double %233, %235 %237 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.2100, i64 0, i64 0 %238 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.11.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %238, i8* %237, i64 24, i32 8, i1 false) %239 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 1, i32 0, i64 8, i32 0 %240 = load double, double* %239, align 8 %241 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 1, i32 0, i64 8, i32 0 %242 = load double, double* %241, align 8 %243 = fadd double %240, %242 %244 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.2109, i64 0, i64 0 %245 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.12.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %245, i8* %244, i64 24, i32 8, i1 false) %246 = getelementptr inbounds [24 x i8], [24 x i8]* %"#temp#9.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %246, i8* %189, i64 24, i32 8, i1 false) %247 = getelementptr inbounds [24 x i8], [24 x i8]* %"#temp#9.sroa.5.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %247, i8* %196, i64 24, i32 8, i1 false) %248 = getelementptr inbounds [24 x i8], [24 x i8]* %"#temp#9.sroa.6.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %248, i8* %203, i64 24, i32 8, i1 false) %249 = getelementptr inbounds [24 x i8], [24 x i8]* %"#temp#9.sroa.7.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %249, i8* %210, i64 24, i32 8, i1 false) %250 = getelementptr inbounds [24 x i8], [24 x i8]* %"#temp#9.sroa.8.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %250, i8* %217, i64 24, i32 8, i1 false) %251 = getelementptr inbounds [24 x i8], [24 x i8]* %"#temp#9.sroa.9.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %251, i8* %224, i64 24, i32 8, i1 false) %252 = getelementptr inbounds [24 x i8], [24 x i8]* %"#temp#9.sroa.10.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %252, i8* %231, i64 24, i32 8, i1 false) %253 = getelementptr inbounds [24 x i8], [24 x i8]* %"#temp#9.sroa.11.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %253, i8* %238, i64 24, i32 8, i1 false) %254 = getelementptr inbounds [24 x i8], [24 x i8]* %"#temp#9.sroa.12.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %254, i8* %245, i64 24, i32 8, i1 false) %255 = getelementptr inbounds %Dual.105, %Dual.105* %1, i64 0, i32 0, i32 0 %256 = load double, double* %255, align 8 %257 = getelementptr inbounds %Dual.105, %Dual.105* %2, i64 0, i32 0, i32 0 %258 = load double, double* %257, align 8 %259 = fadd double %256, %258 %260 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.2116, i64 0, i64 0 %261 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.2120, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %261, i8* %260, i64 24, i32 8, i1 false) %262 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.2124, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %262, i8* %246, i64 24, i32 8, i1 false) %263 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.6, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %263, i8* %247, i64 24, i32 8, i1 false) %264 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.10, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %264, i8* %248, i64 24, i32 8, i1 false) %265 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.14, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %265, i8* %249, i64 24, i32 8, i1 false) %266 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.18, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %266, i8* %250, i64 24, i32 8, i1 false) %267 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.22, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %267, i8* %251, i64 24, i32 8, i1 false) %268 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.26, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %268, i8* %252, i64 24, i32 8, i1 false) %269 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.30, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %269, i8* %253, i64 24, i32 8, i1 false) %270 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.34, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %270, i8* %254, i64 24, i32 8, i1 false) %271 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.2129, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %271, i8* %262, i64 24, i32 8, i1 false) %272 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.6, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %272, i8* %263, i64 24, i32 8, i1 false) %273 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.10, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %273, i8* %264, i64 24, i32 8, i1 false) %274 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.14, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %274, i8* %265, i64 24, i32 8, i1 false) %275 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.18, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %275, i8* %266, i64 24, i32 8, i1 false) %276 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.22, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %276, i8* %267, i64 24, i32 8, i1 false) %277 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.26, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %277, i8* %268, i64 24, i32 8, i1 false) %278 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.30, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %278, i8* %269, i64 24, i32 8, i1 false) %279 = getelementptr inbounds [24 x i8], [24 x i8]* %.sroa.5.sroa.34, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %279, i8* %270, i64 24, i32 8, i1 false) %280 = getelementptr inbounds %Dual.105, %Dual.105* %0, i64 0, i32 0, i32 0 store double %259, double* %280, align 32 %281 = bitcast %Dual.105* %0 to i8* %282 = getelementptr inbounds i8, i8* %281, i64 8 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %282, i8* %261, i64 24, i32 8, i1 false) %283 = getelementptr inbounds %Dual.105, %Dual.105* %0, i64 0, i32 0, i32 1, i32 0 store <3 x double> %20, <3 x double>* %283, align 32 %284 = getelementptr inbounds %Dual.105, %Dual.105* %0, i64 0, i32 1, i32 0, i64 0, i32 0 store double %187, double* %284, align 32 %285 = getelementptr inbounds i8, i8* %281, i64 72 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %285, i8* %271, i64 24, i32 8, i1 false) %286 = getelementptr inbounds %Dual.105, %Dual.105* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0 store <3 x double> %38, <3 x double>* %286, align 32 %287 = getelementptr inbounds %Dual.105, %Dual.105* %0, i64 0, i32 1, i32 0, i64 1, i32 0 store double %194, double* %287, align 32 %288 = getelementptr inbounds i8, i8* %281, i64 136 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %288, i8* %272, i64 24, i32 8, i1 false) %289 = getelementptr inbounds %Dual.105, %Dual.105* %0, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0 store <3 x double> %56, <3 x double>* %289, align 32 %290 = getelementptr inbounds %Dual.105, %Dual.105* %0, i64 0, i32 1, i32 0, i64 2, i32 0 store double %201, double* %290, align 32 %291 = getelementptr inbounds i8, i8* %281, i64 200 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %291, i8* %273, i64 24, i32 8, i1 false) %292 = getelementptr inbounds %Dual.105, %Dual.105* %0, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0 store <3 x double> %74, <3 x double>* %292, align 32 %293 = getelementptr inbounds %Dual.105, %Dual.105* %0, i64 0, i32 1, i32 0, i64 3, i32 0 store double %208, double* %293, align 32 %294 = getelementptr inbounds i8, i8* %281, i64 264 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %294, i8* %274, i64 24, i32 8, i1 false) %295 = getelementptr inbounds %Dual.105, %Dual.105* %0, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0 store <3 x double> %92, <3 x double>* %295, align 32 %296 = getelementptr inbounds %Dual.105, %Dual.105* %0, i64 0, i32 1, i32 0, i64 4, i32 0 store double %215, double* %296, align 32 %297 = getelementptr inbounds i8, i8* %281, i64 328 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %297, i8* %275, i64 24, i32 8, i1 false) %298 = getelementptr inbounds %Dual.105, %Dual.105* %0, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0 store <3 x double> %110, <3 x double>* %298, align 32 %299 = getelementptr inbounds %Dual.105, %Dual.105* %0, i64 0, i32 1, i32 0, i64 5, i32 0 store double %222, double* %299, align 32 %300 = getelementptr inbounds i8, i8* %281, i64 392 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %300, i8* %276, i64 24, i32 8, i1 false) %301 = getelementptr inbounds %Dual.105, %Dual.105* %0, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0 store <3 x double> %128, <3 x double>* %301, align 32 %302 = getelementptr inbounds %Dual.105, %Dual.105* %0, i64 0, i32 1, i32 0, i64 6, i32 0 store double %229, double* %302, align 32 %303 = getelementptr inbounds i8, i8* %281, i64 456 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %303, i8* %277, i64 24, i32 8, i1 false) %304 = getelementptr inbounds %Dual.105, %Dual.105* %0, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0 store <3 x double> %146, <3 x double>* %304, align 32 %305 = getelementptr inbounds %Dual.105, %Dual.105* %0, i64 0, i32 1, i32 0, i64 7, i32 0 store double %236, double* %305, align 32 %306 = getelementptr inbounds i8, i8* %281, i64 520 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %306, i8* %278, i64 24, i32 8, i1 false) %307 = getelementptr inbounds %Dual.105, %Dual.105* %0, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0 store <3 x double> %164, <3 x double>* %307, align 32 %308 = getelementptr inbounds %Dual.105, %Dual.105* %0, i64 0, i32 1, i32 0, i64 8, i32 0 store double %243, double* %308, align 32 %309 = getelementptr inbounds i8, i8* %281, i64 584 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %309, i8* %279, i64 24, i32 8, i1 false) %310 = getelementptr inbounds %Dual.105, %Dual.105* %0, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0 store <3 x double> %182, <3 x double>* %310, align 32 ret void } ======================================================= 9 x 6 time=0.0442509651184082 ------------------------------------------------------- define void @"julia_+_70871"(%Dual.107* noalias sret, %Dual.107*, %Dual.107*) #0 { top: %.sroa.2124 = alloca [56 x i8], align 8 %.sroa.4126 = alloca [16 x i8], align 16 %.sroa.6 = alloca [56 x i8], align 8 %.sroa.8 = alloca [16 x i8], align 16 %.sroa.10 = alloca [56 x i8], align 8 %.sroa.12 = alloca [16 x i8], align 16 %.sroa.14 = alloca [56 x i8], align 8 %.sroa.16 = alloca [16 x i8], align 16 %.sroa.18 = alloca [56 x i8], align 8 %.sroa.20 = alloca [16 x i8], align 16 %.sroa.22 = alloca [56 x i8], align 8 %.sroa.24 = alloca [16 x i8], align 16 %.sroa.26 = alloca [56 x i8], align 8 %.sroa.28 = alloca [16 x i8], align 16 %.sroa.30 = alloca [56 x i8], align 8 %.sroa.32 = alloca [16 x i8], align 16 %.sroa.34 = alloca [56 x i8], align 8 %.sroa.36 = alloca [16 x i8], align 16 %.sroa.2116 = alloca [56 x i8], align 8 %.sroa.3118 = alloca [16 x i8], align 16 %.sroa.2120 = alloca [56 x i8], align 8 %.sroa.4122 = alloca [16 x i8], align 16 %.sroa.5.sroa.2129 = alloca [56 x i8], align 8 %.sroa.5.sroa.4131 = alloca [16 x i8], align 16 %.sroa.5.sroa.6 = alloca [56 x i8], align 8 %.sroa.5.sroa.8 = alloca [16 x i8], align 16 %.sroa.5.sroa.10 = alloca [56 x i8], align 8 %.sroa.5.sroa.12 = alloca [16 x i8], align 16 %.sroa.5.sroa.14 = alloca [56 x i8], align 8 %.sroa.5.sroa.16 = alloca [16 x i8], align 16 %.sroa.5.sroa.18 = alloca [56 x i8], align 8 %.sroa.5.sroa.20 = alloca [16 x i8], align 16 %.sroa.5.sroa.22 = alloca [56 x i8], align 8 %.sroa.5.sroa.24 = alloca [16 x i8], align 16 %.sroa.5.sroa.26 = alloca [56 x i8], align 8 %.sroa.5.sroa.28 = alloca [16 x i8], align 16 %.sroa.5.sroa.30 = alloca [56 x i8], align 8 %.sroa.5.sroa.32 = alloca [16 x i8], align 16 %.sroa.5.sroa.34 = alloca [56 x i8], align 8 %.sroa.5.sroa.36 = alloca [16 x i8], align 16 %.sroa.2109 = alloca [56 x i8], align 8 %.sroa.3111 = alloca [16 x i8], align 16 %.sroa.2100 = alloca [56 x i8], align 8 %.sroa.3102 = alloca [16 x i8], align 16 %.sroa.291 = alloca [56 x i8], align 8 %.sroa.393 = alloca [16 x i8], align 16 %.sroa.282 = alloca [56 x i8], align 8 %.sroa.384 = alloca [16 x i8], align 16 %.sroa.273 = alloca [56 x i8], align 8 %.sroa.375 = alloca [16 x i8], align 16 %.sroa.264 = alloca [56 x i8], align 8 %.sroa.366 = alloca [16 x i8], align 16 %.sroa.255 = alloca [56 x i8], align 8 %.sroa.357 = alloca [16 x i8], align 16 %.sroa.246 = alloca [56 x i8], align 8 %.sroa.348 = alloca [16 x i8], align 16 %.sroa.234 = alloca [56 x i8], align 8 %.sroa.3 = alloca [16 x i8], align 16 %.sroa.237 = alloca [56 x i8], align 8 %.sroa.439 = alloca [16 x i8], align 16 %.sroa.5.sroa.2 = alloca [56 x i8], align 8 %.sroa.5.sroa.4 = alloca [16 x i8], align 16 %.sroa.6.sroa.2 = alloca [56 x i8], align 8 %.sroa.6.sroa.4 = alloca [16 x i8], align 16 %.sroa.7.sroa.2 = alloca [56 x i8], align 8 %.sroa.7.sroa.4 = alloca [16 x i8], align 16 %.sroa.8.sroa.2 = alloca [56 x i8], align 8 %.sroa.8.sroa.4 = alloca [16 x i8], align 16 %.sroa.9.sroa.2 = alloca [56 x i8], align 8 %.sroa.9.sroa.4 = alloca [16 x i8], align 16 %.sroa.10.sroa.2 = alloca [56 x i8], align 8 %.sroa.10.sroa.4 = alloca [16 x i8], align 16 %.sroa.11.sroa.2 = alloca [56 x i8], align 8 %.sroa.11.sroa.4 = alloca [16 x i8], align 16 %.sroa.12.sroa.2 = alloca [56 x i8], align 8 %.sroa.12.sroa.4 = alloca [16 x i8], align 16 %"#temp#9.sroa.2" = alloca [56 x i8], align 8 %"#temp#9.sroa.4" = alloca [16 x i8], align 16 %"#temp#9.sroa.5.sroa.2" = alloca [56 x i8], align 8 %"#temp#9.sroa.5.sroa.4" = alloca [16 x i8], align 16 %"#temp#9.sroa.6.sroa.2" = alloca [56 x i8], align 8 %"#temp#9.sroa.6.sroa.4" = alloca [16 x i8], align 16 %"#temp#9.sroa.7.sroa.2" = alloca [56 x i8], align 8 %"#temp#9.sroa.7.sroa.4" = alloca [16 x i8], align 16 %"#temp#9.sroa.8.sroa.2" = alloca [56 x i8], align 8 %"#temp#9.sroa.8.sroa.4" = alloca [16 x i8], align 16 %"#temp#9.sroa.9.sroa.2" = alloca [56 x i8], align 8 %"#temp#9.sroa.9.sroa.4" = alloca [16 x i8], align 16 %"#temp#9.sroa.10.sroa.2" = alloca [56 x i8], align 8 %"#temp#9.sroa.10.sroa.4" = alloca [16 x i8], align 16 %"#temp#9.sroa.11.sroa.2" = alloca [56 x i8], align 8 %"#temp#9.sroa.11.sroa.4" = alloca [16 x i8], align 16 %"#temp#9.sroa.12.sroa.2" = alloca [56 x i8], align 8 %"#temp#9.sroa.12.sroa.4" = alloca [16 x i8], align 16 %"#temp#10.sroa.2" = alloca [16 x i8], align 16 %3 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 0, i32 1, i32 0, i64 0 %4 = load double, double* %3, align 8 %5 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 0, i32 1, i32 0, i64 0 %6 = load double, double* %5, align 8 %7 = fadd double %4, %6 %8 = insertelement <6 x double> undef, double %7, i32 0 %9 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 0, i32 1, i32 0, i64 1 %10 = load double, double* %9, align 8 %11 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 0, i32 1, i32 0, i64 1 %12 = load double, double* %11, align 8 %13 = fadd double %10, %12 %14 = insertelement <6 x double> %8, double %13, i32 1 %15 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 0, i32 1, i32 0, i64 2 %16 = load double, double* %15, align 8 %17 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 0, i32 1, i32 0, i64 2 %18 = load double, double* %17, align 8 %19 = fadd double %16, %18 %20 = insertelement <6 x double> %14, double %19, i32 2 %21 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 0, i32 1, i32 0, i64 3 %22 = load double, double* %21, align 8 %23 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 0, i32 1, i32 0, i64 3 %24 = load double, double* %23, align 8 %25 = fadd double %22, %24 %26 = insertelement <6 x double> %20, double %25, i32 3 %27 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 0, i32 1, i32 0, i64 4 %28 = load double, double* %27, align 8 %29 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 0, i32 1, i32 0, i64 4 %30 = load double, double* %29, align 8 %31 = fadd double %28, %30 %32 = insertelement <6 x double> %26, double %31, i32 4 %33 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 0, i32 1, i32 0, i64 5 %34 = load double, double* %33, align 8 %35 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 0, i32 1, i32 0, i64 5 %36 = load double, double* %35, align 8 %37 = fadd double %34, %36 %38 = insertelement <6 x double> %32, double %37, i32 5 %39 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %40 = load double, double* %39, align 8 %41 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %42 = load double, double* %41, align 8 %43 = fadd double %40, %42 %44 = insertelement <6 x double> undef, double %43, i32 0 %45 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %46 = load double, double* %45, align 8 %47 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %48 = load double, double* %47, align 8 %49 = fadd double %46, %48 %50 = insertelement <6 x double> %44, double %49, i32 1 %51 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %52 = load double, double* %51, align 8 %53 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %54 = load double, double* %53, align 8 %55 = fadd double %52, %54 %56 = insertelement <6 x double> %50, double %55, i32 2 %57 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 3 %58 = load double, double* %57, align 8 %59 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 3 %60 = load double, double* %59, align 8 %61 = fadd double %58, %60 %62 = insertelement <6 x double> %56, double %61, i32 3 %63 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 4 %64 = load double, double* %63, align 8 %65 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 4 %66 = load double, double* %65, align 8 %67 = fadd double %64, %66 %68 = insertelement <6 x double> %62, double %67, i32 4 %69 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 5 %70 = load double, double* %69, align 8 %71 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 5 %72 = load double, double* %71, align 8 %73 = fadd double %70, %72 %74 = insertelement <6 x double> %68, double %73, i32 5 %75 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %76 = load double, double* %75, align 8 %77 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %78 = load double, double* %77, align 8 %79 = fadd double %76, %78 %80 = insertelement <6 x double> undef, double %79, i32 0 %81 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 1 %82 = load double, double* %81, align 8 %83 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 1 %84 = load double, double* %83, align 8 %85 = fadd double %82, %84 %86 = insertelement <6 x double> %80, double %85, i32 1 %87 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 2 %88 = load double, double* %87, align 8 %89 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 2 %90 = load double, double* %89, align 8 %91 = fadd double %88, %90 %92 = insertelement <6 x double> %86, double %91, i32 2 %93 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 3 %94 = load double, double* %93, align 8 %95 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 3 %96 = load double, double* %95, align 8 %97 = fadd double %94, %96 %98 = insertelement <6 x double> %92, double %97, i32 3 %99 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 4 %100 = load double, double* %99, align 8 %101 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 4 %102 = load double, double* %101, align 8 %103 = fadd double %100, %102 %104 = insertelement <6 x double> %98, double %103, i32 4 %105 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 5 %106 = load double, double* %105, align 8 %107 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 5 %108 = load double, double* %107, align 8 %109 = fadd double %106, %108 %110 = insertelement <6 x double> %104, double %109, i32 5 %111 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %112 = load double, double* %111, align 8 %113 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %114 = load double, double* %113, align 8 %115 = fadd double %112, %114 %116 = insertelement <6 x double> undef, double %115, i32 0 %117 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 1 %118 = load double, double* %117, align 8 %119 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 1 %120 = load double, double* %119, align 8 %121 = fadd double %118, %120 %122 = insertelement <6 x double> %116, double %121, i32 1 %123 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 2 %124 = load double, double* %123, align 8 %125 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 2 %126 = load double, double* %125, align 8 %127 = fadd double %124, %126 %128 = insertelement <6 x double> %122, double %127, i32 2 %129 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 3 %130 = load double, double* %129, align 8 %131 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 3 %132 = load double, double* %131, align 8 %133 = fadd double %130, %132 %134 = insertelement <6 x double> %128, double %133, i32 3 %135 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 4 %136 = load double, double* %135, align 8 %137 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 4 %138 = load double, double* %137, align 8 %139 = fadd double %136, %138 %140 = insertelement <6 x double> %134, double %139, i32 4 %141 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 5 %142 = load double, double* %141, align 8 %143 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 5 %144 = load double, double* %143, align 8 %145 = fadd double %142, %144 %146 = insertelement <6 x double> %140, double %145, i32 5 %147 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 0 %148 = load double, double* %147, align 8 %149 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 0 %150 = load double, double* %149, align 8 %151 = fadd double %148, %150 %152 = insertelement <6 x double> undef, double %151, i32 0 %153 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 1 %154 = load double, double* %153, align 8 %155 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 1 %156 = load double, double* %155, align 8 %157 = fadd double %154, %156 %158 = insertelement <6 x double> %152, double %157, i32 1 %159 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 2 %160 = load double, double* %159, align 8 %161 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 2 %162 = load double, double* %161, align 8 %163 = fadd double %160, %162 %164 = insertelement <6 x double> %158, double %163, i32 2 %165 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 3 %166 = load double, double* %165, align 8 %167 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 3 %168 = load double, double* %167, align 8 %169 = fadd double %166, %168 %170 = insertelement <6 x double> %164, double %169, i32 3 %171 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 4 %172 = load double, double* %171, align 8 %173 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 4 %174 = load double, double* %173, align 8 %175 = fadd double %172, %174 %176 = insertelement <6 x double> %170, double %175, i32 4 %177 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 5 %178 = load double, double* %177, align 8 %179 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 5 %180 = load double, double* %179, align 8 %181 = fadd double %178, %180 %182 = insertelement <6 x double> %176, double %181, i32 5 %183 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 0 %184 = load double, double* %183, align 8 %185 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 0 %186 = load double, double* %185, align 8 %187 = fadd double %184, %186 %188 = insertelement <6 x double> undef, double %187, i32 0 %189 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 1 %190 = load double, double* %189, align 8 %191 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 1 %192 = load double, double* %191, align 8 %193 = fadd double %190, %192 %194 = insertelement <6 x double> %188, double %193, i32 1 %195 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 2 %196 = load double, double* %195, align 8 %197 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 2 %198 = load double, double* %197, align 8 %199 = fadd double %196, %198 %200 = insertelement <6 x double> %194, double %199, i32 2 %201 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 3 %202 = load double, double* %201, align 8 %203 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 3 %204 = load double, double* %203, align 8 %205 = fadd double %202, %204 %206 = insertelement <6 x double> %200, double %205, i32 3 %207 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 4 %208 = load double, double* %207, align 8 %209 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 4 %210 = load double, double* %209, align 8 %211 = fadd double %208, %210 %212 = insertelement <6 x double> %206, double %211, i32 4 %213 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 5 %214 = load double, double* %213, align 8 %215 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 5 %216 = load double, double* %215, align 8 %217 = fadd double %214, %216 %218 = insertelement <6 x double> %212, double %217, i32 5 %219 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 0 %220 = load double, double* %219, align 8 %221 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 0 %222 = load double, double* %221, align 8 %223 = fadd double %220, %222 %224 = insertelement <6 x double> undef, double %223, i32 0 %225 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 1 %226 = load double, double* %225, align 8 %227 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 1 %228 = load double, double* %227, align 8 %229 = fadd double %226, %228 %230 = insertelement <6 x double> %224, double %229, i32 1 %231 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 2 %232 = load double, double* %231, align 8 %233 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 2 %234 = load double, double* %233, align 8 %235 = fadd double %232, %234 %236 = insertelement <6 x double> %230, double %235, i32 2 %237 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 3 %238 = load double, double* %237, align 8 %239 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 3 %240 = load double, double* %239, align 8 %241 = fadd double %238, %240 %242 = insertelement <6 x double> %236, double %241, i32 3 %243 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 4 %244 = load double, double* %243, align 8 %245 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 4 %246 = load double, double* %245, align 8 %247 = fadd double %244, %246 %248 = insertelement <6 x double> %242, double %247, i32 4 %249 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 5 %250 = load double, double* %249, align 8 %251 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 5 %252 = load double, double* %251, align 8 %253 = fadd double %250, %252 %254 = insertelement <6 x double> %248, double %253, i32 5 %255 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 0 %256 = load double, double* %255, align 8 %257 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 0 %258 = load double, double* %257, align 8 %259 = fadd double %256, %258 %260 = insertelement <6 x double> undef, double %259, i32 0 %261 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 1 %262 = load double, double* %261, align 8 %263 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 1 %264 = load double, double* %263, align 8 %265 = fadd double %262, %264 %266 = insertelement <6 x double> %260, double %265, i32 1 %267 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 2 %268 = load double, double* %267, align 8 %269 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 2 %270 = load double, double* %269, align 8 %271 = fadd double %268, %270 %272 = insertelement <6 x double> %266, double %271, i32 2 %273 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 3 %274 = load double, double* %273, align 8 %275 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 3 %276 = load double, double* %275, align 8 %277 = fadd double %274, %276 %278 = insertelement <6 x double> %272, double %277, i32 3 %279 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 4 %280 = load double, double* %279, align 8 %281 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 4 %282 = load double, double* %281, align 8 %283 = fadd double %280, %282 %284 = insertelement <6 x double> %278, double %283, i32 4 %285 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 5 %286 = load double, double* %285, align 8 %287 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 5 %288 = load double, double* %287, align 8 %289 = fadd double %286, %288 %290 = insertelement <6 x double> %284, double %289, i32 5 %291 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 0 %292 = load double, double* %291, align 8 %293 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 0 %294 = load double, double* %293, align 8 %295 = fadd double %292, %294 %296 = insertelement <6 x double> undef, double %295, i32 0 %297 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 1 %298 = load double, double* %297, align 8 %299 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 1 %300 = load double, double* %299, align 8 %301 = fadd double %298, %300 %302 = insertelement <6 x double> %296, double %301, i32 1 %303 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 2 %304 = load double, double* %303, align 8 %305 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 2 %306 = load double, double* %305, align 8 %307 = fadd double %304, %306 %308 = insertelement <6 x double> %302, double %307, i32 2 %309 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 3 %310 = load double, double* %309, align 8 %311 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 3 %312 = load double, double* %311, align 8 %313 = fadd double %310, %312 %314 = insertelement <6 x double> %308, double %313, i32 3 %315 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 4 %316 = load double, double* %315, align 8 %317 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 4 %318 = load double, double* %317, align 8 %319 = fadd double %316, %318 %320 = insertelement <6 x double> %314, double %319, i32 4 %321 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 5 %322 = load double, double* %321, align 8 %323 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 5 %324 = load double, double* %323, align 8 %325 = fadd double %322, %324 %326 = insertelement <6 x double> %320, double %325, i32 5 %327 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 0 %328 = load double, double* %327, align 8 %329 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 0 %330 = load double, double* %329, align 8 %331 = fadd double %328, %330 %332 = insertelement <6 x double> undef, double %331, i32 0 %333 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 1 %334 = load double, double* %333, align 8 %335 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 1 %336 = load double, double* %335, align 8 %337 = fadd double %334, %336 %338 = insertelement <6 x double> %332, double %337, i32 1 %339 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 2 %340 = load double, double* %339, align 8 %341 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 2 %342 = load double, double* %341, align 8 %343 = fadd double %340, %342 %344 = insertelement <6 x double> %338, double %343, i32 2 %345 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 3 %346 = load double, double* %345, align 8 %347 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 3 %348 = load double, double* %347, align 8 %349 = fadd double %346, %348 %350 = insertelement <6 x double> %344, double %349, i32 3 %351 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 4 %352 = load double, double* %351, align 8 %353 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 4 %354 = load double, double* %353, align 8 %355 = fadd double %352, %354 %356 = insertelement <6 x double> %350, double %355, i32 4 %357 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 5 %358 = load double, double* %357, align 8 %359 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 5 %360 = load double, double* %359, align 8 %361 = fadd double %358, %360 %362 = insertelement <6 x double> %356, double %361, i32 5 %363 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 0, i32 0 %364 = load double, double* %363, align 8 %365 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 0, i32 0 %366 = load double, double* %365, align 8 %367 = fadd double %364, %366 %368 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.234, i64 0, i64 0 %369 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.237, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %369, i8* %368, i64 56, i32 8, i1 false) %370 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.3, i64 0, i64 0 %371 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.439, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %371, i8* %370, i64 16, i32 16, i1 false) %372 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 1, i32 0 %373 = load double, double* %372, align 8 %374 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 1, i32 0 %375 = load double, double* %374, align 8 %376 = fadd double %373, %375 %377 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.246, i64 0, i64 0 %378 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %378, i8* %377, i64 56, i32 8, i1 false) %379 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.348, i64 0, i64 0 %380 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %380, i8* %379, i64 16, i32 16, i1 false) %381 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 2, i32 0 %382 = load double, double* %381, align 8 %383 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 2, i32 0 %384 = load double, double* %383, align 8 %385 = fadd double %382, %384 %386 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.255, i64 0, i64 0 %387 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.6.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %387, i8* %386, i64 56, i32 8, i1 false) %388 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.357, i64 0, i64 0 %389 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.6.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %389, i8* %388, i64 16, i32 16, i1 false) %390 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 3, i32 0 %391 = load double, double* %390, align 8 %392 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 3, i32 0 %393 = load double, double* %392, align 8 %394 = fadd double %391, %393 %395 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.264, i64 0, i64 0 %396 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.7.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %396, i8* %395, i64 56, i32 8, i1 false) %397 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.366, i64 0, i64 0 %398 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.7.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %398, i8* %397, i64 16, i32 16, i1 false) %399 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 4, i32 0 %400 = load double, double* %399, align 8 %401 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 4, i32 0 %402 = load double, double* %401, align 8 %403 = fadd double %400, %402 %404 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.273, i64 0, i64 0 %405 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.8.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %405, i8* %404, i64 56, i32 8, i1 false) %406 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.375, i64 0, i64 0 %407 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.8.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %407, i8* %406, i64 16, i32 16, i1 false) %408 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 5, i32 0 %409 = load double, double* %408, align 8 %410 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 5, i32 0 %411 = load double, double* %410, align 8 %412 = fadd double %409, %411 %413 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.282, i64 0, i64 0 %414 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.9.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %414, i8* %413, i64 56, i32 8, i1 false) %415 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.384, i64 0, i64 0 %416 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.9.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %416, i8* %415, i64 16, i32 16, i1 false) %417 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 6, i32 0 %418 = load double, double* %417, align 8 %419 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 6, i32 0 %420 = load double, double* %419, align 8 %421 = fadd double %418, %420 %422 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.291, i64 0, i64 0 %423 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.10.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %423, i8* %422, i64 56, i32 8, i1 false) %424 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.393, i64 0, i64 0 %425 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.10.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %425, i8* %424, i64 16, i32 16, i1 false) %426 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 7, i32 0 %427 = load double, double* %426, align 8 %428 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 7, i32 0 %429 = load double, double* %428, align 8 %430 = fadd double %427, %429 %431 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.2100, i64 0, i64 0 %432 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.11.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %432, i8* %431, i64 56, i32 8, i1 false) %433 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.3102, i64 0, i64 0 %434 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.11.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %434, i8* %433, i64 16, i32 16, i1 false) %435 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 1, i32 0, i64 8, i32 0 %436 = load double, double* %435, align 8 %437 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 1, i32 0, i64 8, i32 0 %438 = load double, double* %437, align 8 %439 = fadd double %436, %438 %440 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.2109, i64 0, i64 0 %441 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.12.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %441, i8* %440, i64 56, i32 8, i1 false) %442 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.3111, i64 0, i64 0 %443 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.12.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %443, i8* %442, i64 16, i32 16, i1 false) %444 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#9.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %444, i8* %369, i64 56, i32 8, i1 false) %445 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#9.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %445, i8* %371, i64 16, i32 16, i1 false) %446 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#9.sroa.5.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %446, i8* %378, i64 56, i32 8, i1 false) %447 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#9.sroa.5.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %447, i8* %380, i64 16, i32 16, i1 false) %448 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#9.sroa.6.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %448, i8* %387, i64 56, i32 8, i1 false) %449 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#9.sroa.6.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %449, i8* %389, i64 16, i32 16, i1 false) %450 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#9.sroa.7.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %450, i8* %396, i64 56, i32 8, i1 false) %451 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#9.sroa.7.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %451, i8* %398, i64 16, i32 16, i1 false) %452 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#9.sroa.8.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %452, i8* %405, i64 56, i32 8, i1 false) %453 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#9.sroa.8.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %453, i8* %407, i64 16, i32 16, i1 false) %454 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#9.sroa.9.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %454, i8* %414, i64 56, i32 8, i1 false) %455 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#9.sroa.9.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %455, i8* %416, i64 16, i32 16, i1 false) %456 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#9.sroa.10.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %456, i8* %423, i64 56, i32 8, i1 false) %457 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#9.sroa.10.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %457, i8* %425, i64 16, i32 16, i1 false) %458 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#9.sroa.11.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %458, i8* %432, i64 56, i32 8, i1 false) %459 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#9.sroa.11.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %459, i8* %434, i64 16, i32 16, i1 false) %460 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#9.sroa.12.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %460, i8* %441, i64 56, i32 8, i1 false) %461 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#9.sroa.12.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %461, i8* %443, i64 16, i32 16, i1 false) %462 = getelementptr inbounds %Dual.107, %Dual.107* %1, i64 0, i32 0, i32 0 %463 = load double, double* %462, align 8 %464 = getelementptr inbounds %Dual.107, %Dual.107* %2, i64 0, i32 0, i32 0 %465 = load double, double* %464, align 8 %466 = fadd double %463, %465 %467 = getelementptr inbounds [16 x i8], [16 x i8]* %"#temp#10.sroa.2", i64 0, i64 0 %468 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.3118, i64 0, i64 0 call void @llvm.memmove.p0i8.p0i8.i64(i8* %468, i8* %467, i64 16, i32 16, i1 false) %469 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.2116, i64 0, i64 0 %470 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.2120, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %470, i8* %469, i64 56, i32 8, i1 false) %471 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.4122, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %471, i8* %468, i64 16, i32 16, i1 false) %472 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.2124, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %472, i8* %444, i64 56, i32 8, i1 false) %473 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.4126, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %473, i8* %445, i64 16, i32 16, i1 false) %474 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.6, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %474, i8* %446, i64 56, i32 8, i1 false) %475 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.8, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %475, i8* %447, i64 16, i32 16, i1 false) %476 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.10, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %476, i8* %448, i64 56, i32 8, i1 false) %477 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.12, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %477, i8* %449, i64 16, i32 16, i1 false) %478 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.14, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %478, i8* %450, i64 56, i32 8, i1 false) %479 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.16, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %479, i8* %451, i64 16, i32 16, i1 false) %480 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.18, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %480, i8* %452, i64 56, i32 8, i1 false) %481 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.20, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %481, i8* %453, i64 16, i32 16, i1 false) %482 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.22, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %482, i8* %454, i64 56, i32 8, i1 false) %483 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.24, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %483, i8* %455, i64 16, i32 16, i1 false) %484 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.26, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %484, i8* %456, i64 56, i32 8, i1 false) %485 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.28, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %485, i8* %457, i64 16, i32 16, i1 false) %486 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.30, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %486, i8* %458, i64 56, i32 8, i1 false) %487 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.32, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %487, i8* %459, i64 16, i32 16, i1 false) %488 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.34, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %488, i8* %460, i64 56, i32 8, i1 false) %489 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.36, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %489, i8* %461, i64 16, i32 16, i1 false) %490 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.2129, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %490, i8* %472, i64 56, i32 8, i1 false) %491 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.4131, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %491, i8* %473, i64 16, i32 16, i1 false) %492 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.6, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %492, i8* %474, i64 56, i32 8, i1 false) %493 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.8, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %493, i8* %475, i64 16, i32 16, i1 false) %494 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.10, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %494, i8* %476, i64 56, i32 8, i1 false) %495 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.12, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %495, i8* %477, i64 16, i32 16, i1 false) %496 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.14, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %496, i8* %478, i64 56, i32 8, i1 false) %497 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.16, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %497, i8* %479, i64 16, i32 16, i1 false) %498 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.18, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %498, i8* %480, i64 56, i32 8, i1 false) %499 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.20, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %499, i8* %481, i64 16, i32 16, i1 false) %500 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.22, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %500, i8* %482, i64 56, i32 8, i1 false) %501 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.24, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %501, i8* %483, i64 16, i32 16, i1 false) %502 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.26, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %502, i8* %484, i64 56, i32 8, i1 false) %503 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.28, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %503, i8* %485, i64 16, i32 16, i1 false) %504 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.30, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %504, i8* %486, i64 56, i32 8, i1 false) %505 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.32, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %505, i8* %487, i64 16, i32 16, i1 false) %506 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.34, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %506, i8* %488, i64 56, i32 8, i1 false) %507 = getelementptr inbounds [16 x i8], [16 x i8]* %.sroa.5.sroa.36, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %507, i8* %489, i64 16, i32 16, i1 false) %508 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 0, i32 0 store double %466, double* %508, align 64 %509 = bitcast %Dual.107* %0 to i8* %510 = getelementptr inbounds i8, i8* %509, i64 8 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %510, i8* %470, i64 56, i32 8, i1 false) %511 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 0, i32 1, i32 0 store <6 x double> %38, <6 x double>* %511, align 64 %512 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 0, i32 1, i32 0, i64 6 %513 = bitcast double* %512 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %513, i8* %471, i64 16, i32 16, i1 false) %514 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 0, i32 0 store double %367, double* %514, align 64 %515 = getelementptr inbounds i8, i8* %509, i64 136 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %515, i8* %490, i64 56, i32 8, i1 false) %516 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0 store <6 x double> %74, <6 x double>* %516, align 64 %517 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 6 %518 = bitcast double* %517 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %518, i8* %491, i64 16, i32 16, i1 false) %519 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 1, i32 0 store double %376, double* %519, align 64 %520 = getelementptr inbounds i8, i8* %509, i64 264 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %520, i8* %492, i64 56, i32 8, i1 false) %521 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0 store <6 x double> %110, <6 x double>* %521, align 64 %522 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 6 %523 = bitcast double* %522 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %523, i8* %493, i64 16, i32 16, i1 false) %524 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 2, i32 0 store double %385, double* %524, align 64 %525 = getelementptr inbounds i8, i8* %509, i64 392 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %525, i8* %494, i64 56, i32 8, i1 false) %526 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0 store <6 x double> %146, <6 x double>* %526, align 64 %527 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 6 %528 = bitcast double* %527 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %528, i8* %495, i64 16, i32 16, i1 false) %529 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 3, i32 0 store double %394, double* %529, align 64 %530 = getelementptr inbounds i8, i8* %509, i64 520 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %530, i8* %496, i64 56, i32 8, i1 false) %531 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0 store <6 x double> %182, <6 x double>* %531, align 64 %532 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 6 %533 = bitcast double* %532 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %533, i8* %497, i64 16, i32 16, i1 false) %534 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 4, i32 0 store double %403, double* %534, align 64 %535 = getelementptr inbounds i8, i8* %509, i64 648 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %535, i8* %498, i64 56, i32 8, i1 false) %536 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0 store <6 x double> %218, <6 x double>* %536, align 64 %537 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 6 %538 = bitcast double* %537 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %538, i8* %499, i64 16, i32 16, i1 false) %539 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 5, i32 0 store double %412, double* %539, align 64 %540 = getelementptr inbounds i8, i8* %509, i64 776 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %540, i8* %500, i64 56, i32 8, i1 false) %541 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0 store <6 x double> %254, <6 x double>* %541, align 64 %542 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 6 %543 = bitcast double* %542 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %543, i8* %501, i64 16, i32 16, i1 false) %544 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 6, i32 0 store double %421, double* %544, align 64 %545 = getelementptr inbounds i8, i8* %509, i64 904 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %545, i8* %502, i64 56, i32 8, i1 false) %546 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0 store <6 x double> %290, <6 x double>* %546, align 64 %547 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 6 %548 = bitcast double* %547 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %548, i8* %503, i64 16, i32 16, i1 false) %549 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 7, i32 0 store double %430, double* %549, align 64 %550 = getelementptr inbounds i8, i8* %509, i64 1032 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %550, i8* %504, i64 56, i32 8, i1 false) %551 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0 store <6 x double> %326, <6 x double>* %551, align 64 %552 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 6 %553 = bitcast double* %552 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %553, i8* %505, i64 16, i32 16, i1 false) %554 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 8, i32 0 store double %439, double* %554, align 64 %555 = getelementptr inbounds i8, i8* %509, i64 1160 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %555, i8* %506, i64 56, i32 8, i1 false) %556 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0 store <6 x double> %362, <6 x double>* %556, align 64 %557 = getelementptr inbounds %Dual.107, %Dual.107* %0, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 6 %558 = bitcast double* %557 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %558, i8* %507, i64 16, i32 16, i1 false) ret void } ======================================================= 9 x 9 time=0.10847902297973633 ------------------------------------------------------- define void @"julia_+_70880"(%Dual.109* noalias sret, %Dual.109*, %Dual.109*) #0 { top: %.sroa.2124 = alloca [120 x i8], align 8 %.sroa.4126 = alloca [56 x i8], align 8 %.sroa.6 = alloca [120 x i8], align 8 %.sroa.8 = alloca [56 x i8], align 8 %.sroa.10 = alloca [120 x i8], align 8 %.sroa.12 = alloca [56 x i8], align 8 %.sroa.14 = alloca [120 x i8], align 8 %.sroa.16 = alloca [56 x i8], align 8 %.sroa.18 = alloca [120 x i8], align 8 %.sroa.20 = alloca [56 x i8], align 8 %.sroa.22 = alloca [120 x i8], align 8 %.sroa.24 = alloca [56 x i8], align 8 %.sroa.26 = alloca [120 x i8], align 8 %.sroa.28 = alloca [56 x i8], align 8 %.sroa.30 = alloca [120 x i8], align 8 %.sroa.32 = alloca [56 x i8], align 8 %.sroa.34 = alloca [120 x i8], align 8 %.sroa.36 = alloca [56 x i8], align 8 %.sroa.2116 = alloca [120 x i8], align 8 %.sroa.3118 = alloca [56 x i8], align 8 %.sroa.2120 = alloca [120 x i8], align 8 %.sroa.4122 = alloca [56 x i8], align 8 %.sroa.5.sroa.2129 = alloca [120 x i8], align 8 %.sroa.5.sroa.4131 = alloca [56 x i8], align 8 %.sroa.5.sroa.6 = alloca [120 x i8], align 8 %.sroa.5.sroa.8 = alloca [56 x i8], align 8 %.sroa.5.sroa.10 = alloca [120 x i8], align 8 %.sroa.5.sroa.12 = alloca [56 x i8], align 8 %.sroa.5.sroa.14 = alloca [120 x i8], align 8 %.sroa.5.sroa.16 = alloca [56 x i8], align 8 %.sroa.5.sroa.18 = alloca [120 x i8], align 8 %.sroa.5.sroa.20 = alloca [56 x i8], align 8 %.sroa.5.sroa.22 = alloca [120 x i8], align 8 %.sroa.5.sroa.24 = alloca [56 x i8], align 8 %.sroa.5.sroa.26 = alloca [120 x i8], align 8 %.sroa.5.sroa.28 = alloca [56 x i8], align 8 %.sroa.5.sroa.30 = alloca [120 x i8], align 8 %.sroa.5.sroa.32 = alloca [56 x i8], align 8 %.sroa.5.sroa.34 = alloca [120 x i8], align 8 %.sroa.5.sroa.36 = alloca [56 x i8], align 8 %.sroa.2109 = alloca [120 x i8], align 8 %.sroa.3111 = alloca [56 x i8], align 8 %.sroa.2100 = alloca [120 x i8], align 8 %.sroa.3102 = alloca [56 x i8], align 8 %.sroa.291 = alloca [120 x i8], align 8 %.sroa.393 = alloca [56 x i8], align 8 %.sroa.282 = alloca [120 x i8], align 8 %.sroa.384 = alloca [56 x i8], align 8 %.sroa.273 = alloca [120 x i8], align 8 %.sroa.375 = alloca [56 x i8], align 8 %.sroa.264 = alloca [120 x i8], align 8 %.sroa.366 = alloca [56 x i8], align 8 %.sroa.255 = alloca [120 x i8], align 8 %.sroa.357 = alloca [56 x i8], align 8 %.sroa.246 = alloca [120 x i8], align 8 %.sroa.348 = alloca [56 x i8], align 8 %.sroa.234 = alloca [120 x i8], align 8 %.sroa.3 = alloca [56 x i8], align 8 %.sroa.237 = alloca [120 x i8], align 8 %.sroa.439 = alloca [56 x i8], align 8 %.sroa.5.sroa.2 = alloca [120 x i8], align 8 %.sroa.5.sroa.4 = alloca [56 x i8], align 8 %.sroa.6.sroa.2 = alloca [120 x i8], align 8 %.sroa.6.sroa.4 = alloca [56 x i8], align 8 %.sroa.7.sroa.2 = alloca [120 x i8], align 8 %.sroa.7.sroa.4 = alloca [56 x i8], align 8 %.sroa.8.sroa.2 = alloca [120 x i8], align 8 %.sroa.8.sroa.4 = alloca [56 x i8], align 8 %.sroa.9.sroa.2 = alloca [120 x i8], align 8 %.sroa.9.sroa.4 = alloca [56 x i8], align 8 %.sroa.10.sroa.2 = alloca [120 x i8], align 8 %.sroa.10.sroa.4 = alloca [56 x i8], align 8 %.sroa.11.sroa.2 = alloca [120 x i8], align 8 %.sroa.11.sroa.4 = alloca [56 x i8], align 8 %.sroa.12.sroa.2 = alloca [120 x i8], align 8 %.sroa.12.sroa.4 = alloca [56 x i8], align 8 %"#temp#9.sroa.2" = alloca [120 x i8], align 8 %"#temp#9.sroa.4" = alloca [56 x i8], align 8 %"#temp#9.sroa.5.sroa.2" = alloca [120 x i8], align 8 %"#temp#9.sroa.5.sroa.4" = alloca [56 x i8], align 8 %"#temp#9.sroa.6.sroa.2" = alloca [120 x i8], align 8 %"#temp#9.sroa.6.sroa.4" = alloca [56 x i8], align 8 %"#temp#9.sroa.7.sroa.2" = alloca [120 x i8], align 8 %"#temp#9.sroa.7.sroa.4" = alloca [56 x i8], align 8 %"#temp#9.sroa.8.sroa.2" = alloca [120 x i8], align 8 %"#temp#9.sroa.8.sroa.4" = alloca [56 x i8], align 8 %"#temp#9.sroa.9.sroa.2" = alloca [120 x i8], align 8 %"#temp#9.sroa.9.sroa.4" = alloca [56 x i8], align 8 %"#temp#9.sroa.10.sroa.2" = alloca [120 x i8], align 8 %"#temp#9.sroa.10.sroa.4" = alloca [56 x i8], align 8 %"#temp#9.sroa.11.sroa.2" = alloca [120 x i8], align 8 %"#temp#9.sroa.11.sroa.4" = alloca [56 x i8], align 8 %"#temp#9.sroa.12.sroa.2" = alloca [120 x i8], align 8 %"#temp#9.sroa.12.sroa.4" = alloca [56 x i8], align 8 %"#temp#10.sroa.2" = alloca [56 x i8], align 8 %3 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 0, i32 1, i32 0, i64 0 %4 = load double, double* %3, align 8 %5 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 0, i32 1, i32 0, i64 0 %6 = load double, double* %5, align 8 %7 = fadd double %4, %6 %8 = insertelement <9 x double> undef, double %7, i32 0 %9 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 0, i32 1, i32 0, i64 1 %10 = load double, double* %9, align 8 %11 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 0, i32 1, i32 0, i64 1 %12 = load double, double* %11, align 8 %13 = fadd double %10, %12 %14 = insertelement <9 x double> %8, double %13, i32 1 %15 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 0, i32 1, i32 0, i64 2 %16 = load double, double* %15, align 8 %17 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 0, i32 1, i32 0, i64 2 %18 = load double, double* %17, align 8 %19 = fadd double %16, %18 %20 = insertelement <9 x double> %14, double %19, i32 2 %21 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 0, i32 1, i32 0, i64 3 %22 = load double, double* %21, align 8 %23 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 0, i32 1, i32 0, i64 3 %24 = load double, double* %23, align 8 %25 = fadd double %22, %24 %26 = insertelement <9 x double> %20, double %25, i32 3 %27 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 0, i32 1, i32 0, i64 4 %28 = load double, double* %27, align 8 %29 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 0, i32 1, i32 0, i64 4 %30 = load double, double* %29, align 8 %31 = fadd double %28, %30 %32 = insertelement <9 x double> %26, double %31, i32 4 %33 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 0, i32 1, i32 0, i64 5 %34 = load double, double* %33, align 8 %35 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 0, i32 1, i32 0, i64 5 %36 = load double, double* %35, align 8 %37 = fadd double %34, %36 %38 = insertelement <9 x double> %32, double %37, i32 5 %39 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 0, i32 1, i32 0, i64 6 %40 = load double, double* %39, align 8 %41 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 0, i32 1, i32 0, i64 6 %42 = load double, double* %41, align 8 %43 = fadd double %40, %42 %44 = insertelement <9 x double> %38, double %43, i32 6 %45 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 0, i32 1, i32 0, i64 7 %46 = load double, double* %45, align 8 %47 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 0, i32 1, i32 0, i64 7 %48 = load double, double* %47, align 8 %49 = fadd double %46, %48 %50 = insertelement <9 x double> %44, double %49, i32 7 %51 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 0, i32 1, i32 0, i64 8 %52 = load double, double* %51, align 8 %53 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 0, i32 1, i32 0, i64 8 %54 = load double, double* %53, align 8 %55 = fadd double %52, %54 %56 = insertelement <9 x double> %50, double %55, i32 8 %57 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %58 = load double, double* %57, align 8 %59 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 0 %60 = load double, double* %59, align 8 %61 = fadd double %58, %60 %62 = insertelement <9 x double> undef, double %61, i32 0 %63 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %64 = load double, double* %63, align 8 %65 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 1 %66 = load double, double* %65, align 8 %67 = fadd double %64, %66 %68 = insertelement <9 x double> %62, double %67, i32 1 %69 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %70 = load double, double* %69, align 8 %71 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 2 %72 = load double, double* %71, align 8 %73 = fadd double %70, %72 %74 = insertelement <9 x double> %68, double %73, i32 2 %75 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 3 %76 = load double, double* %75, align 8 %77 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 3 %78 = load double, double* %77, align 8 %79 = fadd double %76, %78 %80 = insertelement <9 x double> %74, double %79, i32 3 %81 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 4 %82 = load double, double* %81, align 8 %83 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 4 %84 = load double, double* %83, align 8 %85 = fadd double %82, %84 %86 = insertelement <9 x double> %80, double %85, i32 4 %87 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 5 %88 = load double, double* %87, align 8 %89 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 5 %90 = load double, double* %89, align 8 %91 = fadd double %88, %90 %92 = insertelement <9 x double> %86, double %91, i32 5 %93 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 6 %94 = load double, double* %93, align 8 %95 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 6 %96 = load double, double* %95, align 8 %97 = fadd double %94, %96 %98 = insertelement <9 x double> %92, double %97, i32 6 %99 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 7 %100 = load double, double* %99, align 8 %101 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 7 %102 = load double, double* %101, align 8 %103 = fadd double %100, %102 %104 = insertelement <9 x double> %98, double %103, i32 7 %105 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 8 %106 = load double, double* %105, align 8 %107 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 8 %108 = load double, double* %107, align 8 %109 = fadd double %106, %108 %110 = insertelement <9 x double> %104, double %109, i32 8 %111 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %112 = load double, double* %111, align 8 %113 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 0 %114 = load double, double* %113, align 8 %115 = fadd double %112, %114 %116 = insertelement <9 x double> undef, double %115, i32 0 %117 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 1 %118 = load double, double* %117, align 8 %119 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 1 %120 = load double, double* %119, align 8 %121 = fadd double %118, %120 %122 = insertelement <9 x double> %116, double %121, i32 1 %123 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 2 %124 = load double, double* %123, align 8 %125 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 2 %126 = load double, double* %125, align 8 %127 = fadd double %124, %126 %128 = insertelement <9 x double> %122, double %127, i32 2 %129 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 3 %130 = load double, double* %129, align 8 %131 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 3 %132 = load double, double* %131, align 8 %133 = fadd double %130, %132 %134 = insertelement <9 x double> %128, double %133, i32 3 %135 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 4 %136 = load double, double* %135, align 8 %137 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 4 %138 = load double, double* %137, align 8 %139 = fadd double %136, %138 %140 = insertelement <9 x double> %134, double %139, i32 4 %141 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 5 %142 = load double, double* %141, align 8 %143 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 5 %144 = load double, double* %143, align 8 %145 = fadd double %142, %144 %146 = insertelement <9 x double> %140, double %145, i32 5 %147 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 6 %148 = load double, double* %147, align 8 %149 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 6 %150 = load double, double* %149, align 8 %151 = fadd double %148, %150 %152 = insertelement <9 x double> %146, double %151, i32 6 %153 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 7 %154 = load double, double* %153, align 8 %155 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 7 %156 = load double, double* %155, align 8 %157 = fadd double %154, %156 %158 = insertelement <9 x double> %152, double %157, i32 7 %159 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 8 %160 = load double, double* %159, align 8 %161 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 8 %162 = load double, double* %161, align 8 %163 = fadd double %160, %162 %164 = insertelement <9 x double> %158, double %163, i32 8 %165 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %166 = load double, double* %165, align 8 %167 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 0 %168 = load double, double* %167, align 8 %169 = fadd double %166, %168 %170 = insertelement <9 x double> undef, double %169, i32 0 %171 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 1 %172 = load double, double* %171, align 8 %173 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 1 %174 = load double, double* %173, align 8 %175 = fadd double %172, %174 %176 = insertelement <9 x double> %170, double %175, i32 1 %177 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 2 %178 = load double, double* %177, align 8 %179 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 2 %180 = load double, double* %179, align 8 %181 = fadd double %178, %180 %182 = insertelement <9 x double> %176, double %181, i32 2 %183 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 3 %184 = load double, double* %183, align 8 %185 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 3 %186 = load double, double* %185, align 8 %187 = fadd double %184, %186 %188 = insertelement <9 x double> %182, double %187, i32 3 %189 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 4 %190 = load double, double* %189, align 8 %191 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 4 %192 = load double, double* %191, align 8 %193 = fadd double %190, %192 %194 = insertelement <9 x double> %188, double %193, i32 4 %195 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 5 %196 = load double, double* %195, align 8 %197 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 5 %198 = load double, double* %197, align 8 %199 = fadd double %196, %198 %200 = insertelement <9 x double> %194, double %199, i32 5 %201 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 6 %202 = load double, double* %201, align 8 %203 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 6 %204 = load double, double* %203, align 8 %205 = fadd double %202, %204 %206 = insertelement <9 x double> %200, double %205, i32 6 %207 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 7 %208 = load double, double* %207, align 8 %209 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 7 %210 = load double, double* %209, align 8 %211 = fadd double %208, %210 %212 = insertelement <9 x double> %206, double %211, i32 7 %213 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 8 %214 = load double, double* %213, align 8 %215 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 8 %216 = load double, double* %215, align 8 %217 = fadd double %214, %216 %218 = insertelement <9 x double> %212, double %217, i32 8 %219 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 0 %220 = load double, double* %219, align 8 %221 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 0 %222 = load double, double* %221, align 8 %223 = fadd double %220, %222 %224 = insertelement <9 x double> undef, double %223, i32 0 %225 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 1 %226 = load double, double* %225, align 8 %227 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 1 %228 = load double, double* %227, align 8 %229 = fadd double %226, %228 %230 = insertelement <9 x double> %224, double %229, i32 1 %231 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 2 %232 = load double, double* %231, align 8 %233 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 2 %234 = load double, double* %233, align 8 %235 = fadd double %232, %234 %236 = insertelement <9 x double> %230, double %235, i32 2 %237 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 3 %238 = load double, double* %237, align 8 %239 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 3 %240 = load double, double* %239, align 8 %241 = fadd double %238, %240 %242 = insertelement <9 x double> %236, double %241, i32 3 %243 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 4 %244 = load double, double* %243, align 8 %245 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 4 %246 = load double, double* %245, align 8 %247 = fadd double %244, %246 %248 = insertelement <9 x double> %242, double %247, i32 4 %249 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 5 %250 = load double, double* %249, align 8 %251 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 5 %252 = load double, double* %251, align 8 %253 = fadd double %250, %252 %254 = insertelement <9 x double> %248, double %253, i32 5 %255 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 6 %256 = load double, double* %255, align 8 %257 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 6 %258 = load double, double* %257, align 8 %259 = fadd double %256, %258 %260 = insertelement <9 x double> %254, double %259, i32 6 %261 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 7 %262 = load double, double* %261, align 8 %263 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 7 %264 = load double, double* %263, align 8 %265 = fadd double %262, %264 %266 = insertelement <9 x double> %260, double %265, i32 7 %267 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 8 %268 = load double, double* %267, align 8 %269 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 8 %270 = load double, double* %269, align 8 %271 = fadd double %268, %270 %272 = insertelement <9 x double> %266, double %271, i32 8 %273 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 0 %274 = load double, double* %273, align 8 %275 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 0 %276 = load double, double* %275, align 8 %277 = fadd double %274, %276 %278 = insertelement <9 x double> undef, double %277, i32 0 %279 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 1 %280 = load double, double* %279, align 8 %281 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 1 %282 = load double, double* %281, align 8 %283 = fadd double %280, %282 %284 = insertelement <9 x double> %278, double %283, i32 1 %285 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 2 %286 = load double, double* %285, align 8 %287 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 2 %288 = load double, double* %287, align 8 %289 = fadd double %286, %288 %290 = insertelement <9 x double> %284, double %289, i32 2 %291 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 3 %292 = load double, double* %291, align 8 %293 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 3 %294 = load double, double* %293, align 8 %295 = fadd double %292, %294 %296 = insertelement <9 x double> %290, double %295, i32 3 %297 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 4 %298 = load double, double* %297, align 8 %299 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 4 %300 = load double, double* %299, align 8 %301 = fadd double %298, %300 %302 = insertelement <9 x double> %296, double %301, i32 4 %303 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 5 %304 = load double, double* %303, align 8 %305 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 5 %306 = load double, double* %305, align 8 %307 = fadd double %304, %306 %308 = insertelement <9 x double> %302, double %307, i32 5 %309 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 6 %310 = load double, double* %309, align 8 %311 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 6 %312 = load double, double* %311, align 8 %313 = fadd double %310, %312 %314 = insertelement <9 x double> %308, double %313, i32 6 %315 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 7 %316 = load double, double* %315, align 8 %317 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 7 %318 = load double, double* %317, align 8 %319 = fadd double %316, %318 %320 = insertelement <9 x double> %314, double %319, i32 7 %321 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 8 %322 = load double, double* %321, align 8 %323 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 8 %324 = load double, double* %323, align 8 %325 = fadd double %322, %324 %326 = insertelement <9 x double> %320, double %325, i32 8 %327 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 0 %328 = load double, double* %327, align 8 %329 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 0 %330 = load double, double* %329, align 8 %331 = fadd double %328, %330 %332 = insertelement <9 x double> undef, double %331, i32 0 %333 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 1 %334 = load double, double* %333, align 8 %335 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 1 %336 = load double, double* %335, align 8 %337 = fadd double %334, %336 %338 = insertelement <9 x double> %332, double %337, i32 1 %339 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 2 %340 = load double, double* %339, align 8 %341 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 2 %342 = load double, double* %341, align 8 %343 = fadd double %340, %342 %344 = insertelement <9 x double> %338, double %343, i32 2 %345 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 3 %346 = load double, double* %345, align 8 %347 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 3 %348 = load double, double* %347, align 8 %349 = fadd double %346, %348 %350 = insertelement <9 x double> %344, double %349, i32 3 %351 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 4 %352 = load double, double* %351, align 8 %353 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 4 %354 = load double, double* %353, align 8 %355 = fadd double %352, %354 %356 = insertelement <9 x double> %350, double %355, i32 4 %357 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 5 %358 = load double, double* %357, align 8 %359 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 5 %360 = load double, double* %359, align 8 %361 = fadd double %358, %360 %362 = insertelement <9 x double> %356, double %361, i32 5 %363 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 6 %364 = load double, double* %363, align 8 %365 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 6 %366 = load double, double* %365, align 8 %367 = fadd double %364, %366 %368 = insertelement <9 x double> %362, double %367, i32 6 %369 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 7 %370 = load double, double* %369, align 8 %371 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 7 %372 = load double, double* %371, align 8 %373 = fadd double %370, %372 %374 = insertelement <9 x double> %368, double %373, i32 7 %375 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 8 %376 = load double, double* %375, align 8 %377 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 8 %378 = load double, double* %377, align 8 %379 = fadd double %376, %378 %380 = insertelement <9 x double> %374, double %379, i32 8 %381 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 0 %382 = load double, double* %381, align 8 %383 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 0 %384 = load double, double* %383, align 8 %385 = fadd double %382, %384 %386 = insertelement <9 x double> undef, double %385, i32 0 %387 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 1 %388 = load double, double* %387, align 8 %389 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 1 %390 = load double, double* %389, align 8 %391 = fadd double %388, %390 %392 = insertelement <9 x double> %386, double %391, i32 1 %393 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 2 %394 = load double, double* %393, align 8 %395 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 2 %396 = load double, double* %395, align 8 %397 = fadd double %394, %396 %398 = insertelement <9 x double> %392, double %397, i32 2 %399 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 3 %400 = load double, double* %399, align 8 %401 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 3 %402 = load double, double* %401, align 8 %403 = fadd double %400, %402 %404 = insertelement <9 x double> %398, double %403, i32 3 %405 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 4 %406 = load double, double* %405, align 8 %407 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 4 %408 = load double, double* %407, align 8 %409 = fadd double %406, %408 %410 = insertelement <9 x double> %404, double %409, i32 4 %411 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 5 %412 = load double, double* %411, align 8 %413 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 5 %414 = load double, double* %413, align 8 %415 = fadd double %412, %414 %416 = insertelement <9 x double> %410, double %415, i32 5 %417 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 6 %418 = load double, double* %417, align 8 %419 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 6 %420 = load double, double* %419, align 8 %421 = fadd double %418, %420 %422 = insertelement <9 x double> %416, double %421, i32 6 %423 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 7 %424 = load double, double* %423, align 8 %425 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 7 %426 = load double, double* %425, align 8 %427 = fadd double %424, %426 %428 = insertelement <9 x double> %422, double %427, i32 7 %429 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 8 %430 = load double, double* %429, align 8 %431 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 8 %432 = load double, double* %431, align 8 %433 = fadd double %430, %432 %434 = insertelement <9 x double> %428, double %433, i32 8 %435 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 0 %436 = load double, double* %435, align 8 %437 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 0 %438 = load double, double* %437, align 8 %439 = fadd double %436, %438 %440 = insertelement <9 x double> undef, double %439, i32 0 %441 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 1 %442 = load double, double* %441, align 8 %443 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 1 %444 = load double, double* %443, align 8 %445 = fadd double %442, %444 %446 = insertelement <9 x double> %440, double %445, i32 1 %447 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 2 %448 = load double, double* %447, align 8 %449 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 2 %450 = load double, double* %449, align 8 %451 = fadd double %448, %450 %452 = insertelement <9 x double> %446, double %451, i32 2 %453 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 3 %454 = load double, double* %453, align 8 %455 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 3 %456 = load double, double* %455, align 8 %457 = fadd double %454, %456 %458 = insertelement <9 x double> %452, double %457, i32 3 %459 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 4 %460 = load double, double* %459, align 8 %461 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 4 %462 = load double, double* %461, align 8 %463 = fadd double %460, %462 %464 = insertelement <9 x double> %458, double %463, i32 4 %465 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 5 %466 = load double, double* %465, align 8 %467 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 5 %468 = load double, double* %467, align 8 %469 = fadd double %466, %468 %470 = insertelement <9 x double> %464, double %469, i32 5 %471 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 6 %472 = load double, double* %471, align 8 %473 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 6 %474 = load double, double* %473, align 8 %475 = fadd double %472, %474 %476 = insertelement <9 x double> %470, double %475, i32 6 %477 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 7 %478 = load double, double* %477, align 8 %479 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 7 %480 = load double, double* %479, align 8 %481 = fadd double %478, %480 %482 = insertelement <9 x double> %476, double %481, i32 7 %483 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 8 %484 = load double, double* %483, align 8 %485 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 8 %486 = load double, double* %485, align 8 %487 = fadd double %484, %486 %488 = insertelement <9 x double> %482, double %487, i32 8 %489 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 0 %490 = load double, double* %489, align 8 %491 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 0 %492 = load double, double* %491, align 8 %493 = fadd double %490, %492 %494 = insertelement <9 x double> undef, double %493, i32 0 %495 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 1 %496 = load double, double* %495, align 8 %497 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 1 %498 = load double, double* %497, align 8 %499 = fadd double %496, %498 %500 = insertelement <9 x double> %494, double %499, i32 1 %501 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 2 %502 = load double, double* %501, align 8 %503 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 2 %504 = load double, double* %503, align 8 %505 = fadd double %502, %504 %506 = insertelement <9 x double> %500, double %505, i32 2 %507 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 3 %508 = load double, double* %507, align 8 %509 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 3 %510 = load double, double* %509, align 8 %511 = fadd double %508, %510 %512 = insertelement <9 x double> %506, double %511, i32 3 %513 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 4 %514 = load double, double* %513, align 8 %515 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 4 %516 = load double, double* %515, align 8 %517 = fadd double %514, %516 %518 = insertelement <9 x double> %512, double %517, i32 4 %519 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 5 %520 = load double, double* %519, align 8 %521 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 5 %522 = load double, double* %521, align 8 %523 = fadd double %520, %522 %524 = insertelement <9 x double> %518, double %523, i32 5 %525 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 6 %526 = load double, double* %525, align 8 %527 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 6 %528 = load double, double* %527, align 8 %529 = fadd double %526, %528 %530 = insertelement <9 x double> %524, double %529, i32 6 %531 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 7 %532 = load double, double* %531, align 8 %533 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 7 %534 = load double, double* %533, align 8 %535 = fadd double %532, %534 %536 = insertelement <9 x double> %530, double %535, i32 7 %537 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 8 %538 = load double, double* %537, align 8 %539 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 8 %540 = load double, double* %539, align 8 %541 = fadd double %538, %540 %542 = insertelement <9 x double> %536, double %541, i32 8 %543 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 0, i32 0 %544 = load double, double* %543, align 8 %545 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 0, i32 0 %546 = load double, double* %545, align 8 %547 = fadd double %544, %546 %548 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.234, i64 0, i64 0 %549 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.237, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %549, i8* %548, i64 120, i32 8, i1 false) %550 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.3, i64 0, i64 0 %551 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.439, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %551, i8* %550, i64 56, i32 8, i1 false) %552 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 1, i32 0 %553 = load double, double* %552, align 8 %554 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 1, i32 0 %555 = load double, double* %554, align 8 %556 = fadd double %553, %555 %557 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.246, i64 0, i64 0 %558 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %558, i8* %557, i64 120, i32 8, i1 false) %559 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.348, i64 0, i64 0 %560 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %560, i8* %559, i64 56, i32 8, i1 false) %561 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 2, i32 0 %562 = load double, double* %561, align 8 %563 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 2, i32 0 %564 = load double, double* %563, align 8 %565 = fadd double %562, %564 %566 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.255, i64 0, i64 0 %567 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.6.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %567, i8* %566, i64 120, i32 8, i1 false) %568 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.357, i64 0, i64 0 %569 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.6.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %569, i8* %568, i64 56, i32 8, i1 false) %570 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 3, i32 0 %571 = load double, double* %570, align 8 %572 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 3, i32 0 %573 = load double, double* %572, align 8 %574 = fadd double %571, %573 %575 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.264, i64 0, i64 0 %576 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.7.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %576, i8* %575, i64 120, i32 8, i1 false) %577 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.366, i64 0, i64 0 %578 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.7.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %578, i8* %577, i64 56, i32 8, i1 false) %579 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 4, i32 0 %580 = load double, double* %579, align 8 %581 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 4, i32 0 %582 = load double, double* %581, align 8 %583 = fadd double %580, %582 %584 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.273, i64 0, i64 0 %585 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.8.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %585, i8* %584, i64 120, i32 8, i1 false) %586 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.375, i64 0, i64 0 %587 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.8.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %587, i8* %586, i64 56, i32 8, i1 false) %588 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 5, i32 0 %589 = load double, double* %588, align 8 %590 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 5, i32 0 %591 = load double, double* %590, align 8 %592 = fadd double %589, %591 %593 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.282, i64 0, i64 0 %594 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.9.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %594, i8* %593, i64 120, i32 8, i1 false) %595 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.384, i64 0, i64 0 %596 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.9.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %596, i8* %595, i64 56, i32 8, i1 false) %597 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 6, i32 0 %598 = load double, double* %597, align 8 %599 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 6, i32 0 %600 = load double, double* %599, align 8 %601 = fadd double %598, %600 %602 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.291, i64 0, i64 0 %603 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.10.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %603, i8* %602, i64 120, i32 8, i1 false) %604 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.393, i64 0, i64 0 %605 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.10.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %605, i8* %604, i64 56, i32 8, i1 false) %606 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 7, i32 0 %607 = load double, double* %606, align 8 %608 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 7, i32 0 %609 = load double, double* %608, align 8 %610 = fadd double %607, %609 %611 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.2100, i64 0, i64 0 %612 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.11.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %612, i8* %611, i64 120, i32 8, i1 false) %613 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.3102, i64 0, i64 0 %614 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.11.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %614, i8* %613, i64 56, i32 8, i1 false) %615 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 1, i32 0, i64 8, i32 0 %616 = load double, double* %615, align 8 %617 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 1, i32 0, i64 8, i32 0 %618 = load double, double* %617, align 8 %619 = fadd double %616, %618 %620 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.2109, i64 0, i64 0 %621 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.12.sroa.2, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %621, i8* %620, i64 120, i32 8, i1 false) %622 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.3111, i64 0, i64 0 %623 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.12.sroa.4, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %623, i8* %622, i64 56, i32 8, i1 false) %624 = getelementptr inbounds [120 x i8], [120 x i8]* %"#temp#9.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %624, i8* %549, i64 120, i32 8, i1 false) %625 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#9.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %625, i8* %551, i64 56, i32 8, i1 false) %626 = getelementptr inbounds [120 x i8], [120 x i8]* %"#temp#9.sroa.5.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %626, i8* %558, i64 120, i32 8, i1 false) %627 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#9.sroa.5.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %627, i8* %560, i64 56, i32 8, i1 false) %628 = getelementptr inbounds [120 x i8], [120 x i8]* %"#temp#9.sroa.6.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %628, i8* %567, i64 120, i32 8, i1 false) %629 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#9.sroa.6.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %629, i8* %569, i64 56, i32 8, i1 false) %630 = getelementptr inbounds [120 x i8], [120 x i8]* %"#temp#9.sroa.7.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %630, i8* %576, i64 120, i32 8, i1 false) %631 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#9.sroa.7.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %631, i8* %578, i64 56, i32 8, i1 false) %632 = getelementptr inbounds [120 x i8], [120 x i8]* %"#temp#9.sroa.8.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %632, i8* %585, i64 120, i32 8, i1 false) %633 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#9.sroa.8.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %633, i8* %587, i64 56, i32 8, i1 false) %634 = getelementptr inbounds [120 x i8], [120 x i8]* %"#temp#9.sroa.9.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %634, i8* %594, i64 120, i32 8, i1 false) %635 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#9.sroa.9.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %635, i8* %596, i64 56, i32 8, i1 false) %636 = getelementptr inbounds [120 x i8], [120 x i8]* %"#temp#9.sroa.10.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %636, i8* %603, i64 120, i32 8, i1 false) %637 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#9.sroa.10.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %637, i8* %605, i64 56, i32 8, i1 false) %638 = getelementptr inbounds [120 x i8], [120 x i8]* %"#temp#9.sroa.11.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %638, i8* %612, i64 120, i32 8, i1 false) %639 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#9.sroa.11.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %639, i8* %614, i64 56, i32 8, i1 false) %640 = getelementptr inbounds [120 x i8], [120 x i8]* %"#temp#9.sroa.12.sroa.2", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %640, i8* %621, i64 120, i32 8, i1 false) %641 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#9.sroa.12.sroa.4", i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %641, i8* %623, i64 56, i32 8, i1 false) %642 = getelementptr inbounds %Dual.109, %Dual.109* %1, i64 0, i32 0, i32 0 %643 = load double, double* %642, align 8 %644 = getelementptr inbounds %Dual.109, %Dual.109* %2, i64 0, i32 0, i32 0 %645 = load double, double* %644, align 8 %646 = fadd double %643, %645 %647 = getelementptr inbounds [56 x i8], [56 x i8]* %"#temp#10.sroa.2", i64 0, i64 0 %648 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.3118, i64 0, i64 0 call void @llvm.memmove.p0i8.p0i8.i64(i8* %648, i8* %647, i64 56, i32 8, i1 false) %649 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.2116, i64 0, i64 0 %650 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.2120, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %650, i8* %649, i64 120, i32 8, i1 false) %651 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.4122, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %651, i8* %648, i64 56, i32 8, i1 false) %652 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.2124, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %652, i8* %624, i64 120, i32 8, i1 false) %653 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.4126, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %653, i8* %625, i64 56, i32 8, i1 false) %654 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.6, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %654, i8* %626, i64 120, i32 8, i1 false) %655 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.8, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %655, i8* %627, i64 56, i32 8, i1 false) %656 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.10, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %656, i8* %628, i64 120, i32 8, i1 false) %657 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.12, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %657, i8* %629, i64 56, i32 8, i1 false) %658 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.14, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %658, i8* %630, i64 120, i32 8, i1 false) %659 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.16, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %659, i8* %631, i64 56, i32 8, i1 false) %660 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.18, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %660, i8* %632, i64 120, i32 8, i1 false) %661 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.20, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %661, i8* %633, i64 56, i32 8, i1 false) %662 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.22, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %662, i8* %634, i64 120, i32 8, i1 false) %663 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.24, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %663, i8* %635, i64 56, i32 8, i1 false) %664 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.26, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %664, i8* %636, i64 120, i32 8, i1 false) %665 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.28, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %665, i8* %637, i64 56, i32 8, i1 false) %666 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.30, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %666, i8* %638, i64 120, i32 8, i1 false) %667 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.32, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %667, i8* %639, i64 56, i32 8, i1 false) %668 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.34, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %668, i8* %640, i64 120, i32 8, i1 false) %669 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.36, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %669, i8* %641, i64 56, i32 8, i1 false) %670 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.2129, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %670, i8* %652, i64 120, i32 8, i1 false) %671 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.4131, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %671, i8* %653, i64 56, i32 8, i1 false) %672 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.6, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %672, i8* %654, i64 120, i32 8, i1 false) %673 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.8, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %673, i8* %655, i64 56, i32 8, i1 false) %674 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.10, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %674, i8* %656, i64 120, i32 8, i1 false) %675 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.12, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %675, i8* %657, i64 56, i32 8, i1 false) %676 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.14, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %676, i8* %658, i64 120, i32 8, i1 false) %677 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.16, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %677, i8* %659, i64 56, i32 8, i1 false) %678 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.18, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %678, i8* %660, i64 120, i32 8, i1 false) %679 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.20, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %679, i8* %661, i64 56, i32 8, i1 false) %680 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.22, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %680, i8* %662, i64 120, i32 8, i1 false) %681 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.24, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %681, i8* %663, i64 56, i32 8, i1 false) %682 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.26, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %682, i8* %664, i64 120, i32 8, i1 false) %683 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.28, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %683, i8* %665, i64 56, i32 8, i1 false) %684 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.30, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %684, i8* %666, i64 120, i32 8, i1 false) %685 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.32, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %685, i8* %667, i64 56, i32 8, i1 false) %686 = getelementptr inbounds [120 x i8], [120 x i8]* %.sroa.5.sroa.34, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %686, i8* %668, i64 120, i32 8, i1 false) %687 = getelementptr inbounds [56 x i8], [56 x i8]* %.sroa.5.sroa.36, i64 0, i64 0 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %687, i8* %669, i64 56, i32 8, i1 false) %688 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 0, i32 0 store double %646, double* %688, align 128 %689 = bitcast %Dual.109* %0 to i8* %690 = getelementptr inbounds i8, i8* %689, i64 8 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %690, i8* %650, i64 120, i32 8, i1 false) %691 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 0, i32 1, i32 0 store <9 x double> %56, <9 x double>* %691, align 128 %692 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 0, i32 1, i32 0, i64 9 %693 = bitcast double* %692 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %693, i8* %651, i64 56, i32 8, i1 false) %694 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 0, i32 0 store double %547, double* %694, align 128 %695 = getelementptr inbounds i8, i8* %689, i64 264 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %695, i8* %670, i64 120, i32 8, i1 false) %696 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0 store <9 x double> %110, <9 x double>* %696, align 128 %697 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 0, i32 1, i32 0, i64 9 %698 = bitcast double* %697 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %698, i8* %671, i64 56, i32 8, i1 false) %699 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 1, i32 0 store double %556, double* %699, align 128 %700 = getelementptr inbounds i8, i8* %689, i64 520 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %700, i8* %672, i64 120, i32 8, i1 false) %701 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0 store <9 x double> %164, <9 x double>* %701, align 128 %702 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 1, i32 1, i32 0, i64 9 %703 = bitcast double* %702 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %703, i8* %673, i64 56, i32 8, i1 false) %704 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 2, i32 0 store double %565, double* %704, align 128 %705 = getelementptr inbounds i8, i8* %689, i64 776 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %705, i8* %674, i64 120, i32 8, i1 false) %706 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0 store <9 x double> %218, <9 x double>* %706, align 128 %707 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 2, i32 1, i32 0, i64 9 %708 = bitcast double* %707 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %708, i8* %675, i64 56, i32 8, i1 false) %709 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 3, i32 0 store double %574, double* %709, align 128 %710 = getelementptr inbounds i8, i8* %689, i64 1032 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %710, i8* %676, i64 120, i32 8, i1 false) %711 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0 store <9 x double> %272, <9 x double>* %711, align 128 %712 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 3, i32 1, i32 0, i64 9 %713 = bitcast double* %712 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %713, i8* %677, i64 56, i32 8, i1 false) %714 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 4, i32 0 store double %583, double* %714, align 128 %715 = getelementptr inbounds i8, i8* %689, i64 1288 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %715, i8* %678, i64 120, i32 8, i1 false) %716 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0 store <9 x double> %326, <9 x double>* %716, align 128 %717 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 4, i32 1, i32 0, i64 9 %718 = bitcast double* %717 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %718, i8* %679, i64 56, i32 8, i1 false) %719 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 5, i32 0 store double %592, double* %719, align 128 %720 = getelementptr inbounds i8, i8* %689, i64 1544 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %720, i8* %680, i64 120, i32 8, i1 false) %721 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0 store <9 x double> %380, <9 x double>* %721, align 128 %722 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 5, i32 1, i32 0, i64 9 %723 = bitcast double* %722 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %723, i8* %681, i64 56, i32 8, i1 false) %724 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 6, i32 0 store double %601, double* %724, align 128 %725 = getelementptr inbounds i8, i8* %689, i64 1800 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %725, i8* %682, i64 120, i32 8, i1 false) %726 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0 store <9 x double> %434, <9 x double>* %726, align 128 %727 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 6, i32 1, i32 0, i64 9 %728 = bitcast double* %727 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %728, i8* %683, i64 56, i32 8, i1 false) %729 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 7, i32 0 store double %610, double* %729, align 128 %730 = getelementptr inbounds i8, i8* %689, i64 2056 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %730, i8* %684, i64 120, i32 8, i1 false) %731 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0 store <9 x double> %488, <9 x double>* %731, align 128 %732 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 7, i32 1, i32 0, i64 9 %733 = bitcast double* %732 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %733, i8* %685, i64 56, i32 8, i1 false) %734 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 8, i32 0 store double %619, double* %734, align 128 %735 = getelementptr inbounds i8, i8* %689, i64 2312 call void @llvm.memcpy.p0i8.p0i8.i64(i8* %735, i8* %686, i64 120, i32 8, i1 false) %736 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0 store <9 x double> %542, <9 x double>* %736, align 128 %737 = getelementptr inbounds %Dual.109, %Dual.109* %0, i64 0, i32 1, i32 0, i64 8, i32 1, i32 0, i64 9 %738 = bitcast double* %737 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* %738, i8* %687, i64 56, i32 8, i1 false) ret void }