; ModuleID = 'square_3D_mat' source_filename = "square_3D_mat" target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" @kernel_0 = private unnamed_addr constant [1 x i8] zeroinitializer @kernel_0_name = private unnamed_addr constant [9 x i8] c"kernel_0\00" ; Function Attrs: sspstrong define void @julia_square_3D_mat_64454(i8** dereferenceable(40), i8** dereferenceable(40)) #0 !dbg !5 { top: %polly_launch_0_params = alloca [8 x i8*] %polly_launch_0_param_0 = alloca i8* %polly_launch_0_param_1 = alloca i8* %polly_launch_0_param_2 = alloca i64 %polly_launch_0_param_3 = alloca i64 %polly_launch_0_param_4 = alloca i64 %polly_launch_0_param_5 = alloca i64 %polly_launch_0_param_6 = alloca i64 %polly_launch_0_param_7 = alloca void (metadata, i64, metadata, metadata)* %polly_launch_0_params_i8ptr = bitcast [8 x i8*]* %polly_launch_0_params to i8* br label %top.split, !dbg !24 top.split: ; preds = %top call void @llvm.dbg.value(metadata i8** null, i64 0, metadata !15, metadata !25), !dbg !24 call void @llvm.dbg.value(metadata i8** null, i64 0, metadata !16, metadata !25), !dbg !24 call void @llvm.dbg.value(metadata i8** %0, i64 0, metadata !15, metadata !25), !dbg !24 %2 = bitcast i8** %0 to double** %3 = load double*, double** %2, align 8, !tbaa !26 %4 = getelementptr i8*, i8** %0, i64 3 %5 = bitcast i8** %4 to i64* %6 = load i64, i64* %5, align 8, !tbaa !26 %7 = getelementptr i8*, i8** %0, i64 4 %8 = bitcast i8** %7 to i64* %9 = load i64, i64* %8, align 8, !tbaa !26 call void @llvm.dbg.value(metadata i8** %1, i64 0, metadata !16, metadata !25), !dbg !24 %10 = bitcast i8** %1 to double** %11 = load double*, double** %10, align 8, !tbaa !26 %12 = getelementptr i8*, i8** %1, i64 3 %13 = bitcast i8** %12 to i64* %14 = load i64, i64* %13, align 8, !tbaa !26 %15 = getelementptr i8*, i8** %1, i64 4 %16 = bitcast i8** %15 to i64* %17 = load i64, i64* %16, align 8, !tbaa !26 %18 = getelementptr i8*, i8** %0, i64 5, !dbg !29 %19 = bitcast i8** %18 to i64*, !dbg !29 %20 = load i64, i64* %19, align 8, !dbg !29, !tbaa !26 call void @llvm.dbg.value(metadata i64 %6, i64 0, metadata !21, metadata !25), !dbg !24 call void @llvm.dbg.value(metadata i64 %6, i64 0, metadata !21, metadata !25), !dbg !24 %21 = icmp sgt i64 %6, 0, !dbg !39 %22 = select i1 %21, i64 %6, i64 0, !dbg !39 %23 = icmp slt i64 %6, 1, !dbg !39 br i1 %23, label %L55, label %if.lr.ph, !dbg !39 if.lr.ph: ; preds = %top.split br label %polly.split_new_and_old, !dbg !39 L31.L22.loopexit_crit_edge: ; preds = %L31.loopexit br label %L22.loopexit, !dbg !40 L22.loopexit: ; preds = %L31.L22.loopexit_crit_edge, %if %24 = icmp eq i64 %"#temp#2.031", %22, !dbg !39 br i1 %24, label %L22.L55_crit_edge, label %if, !dbg !39 polly.split_new_and_old: ; preds = %if.lr.ph %25 = icmp sge i64 %17, %9 %26 = icmp sge i64 %14, %6 %27 = and i1 %25, %26 %28 = icmp sle i64 %6, 0 %29 = sext i1 %28 to i64 %30 = icmp eq i64 0, %29 %31 = and i1 %27, %30 %32 = call { i64, i1 } @llvm.ssub.with.overflow.i64(i64 %20, i64 1) %.obit = extractvalue { i64, i1 } %32, 1 %polly.overflow.state = or i1 false, %.obit %.res = extractvalue { i64, i1 } %32, 0 %polly.access.mul. = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %.res, i64 %17) %polly.access.mul..obit = extractvalue { i64, i1 } %polly.access.mul., 1 %polly.overflow.state32 = or i1 %polly.overflow.state, %polly.access.mul..obit %polly.access.mul..res = extractvalue { i64, i1 } %polly.access.mul., 0 %33 = call { i64, i1 } @llvm.ssub.with.overflow.i64(i64 %9, i64 1) %.obit33 = extractvalue { i64, i1 } %33, 1 %polly.overflow.state34 = or i1 %polly.overflow.state32, %.obit33 %.res35 = extractvalue { i64, i1 } %33, 0 %polly.access.add. = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %polly.access.mul..res, i64 %.res35) %polly.access.add..obit = extractvalue { i64, i1 } %polly.access.add., 1 %polly.overflow.state36 = or i1 %polly.overflow.state34, %polly.access.add..obit %polly.access.add..res = extractvalue { i64, i1 } %polly.access.add., 0 %polly.access.mul.37 = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %polly.access.add..res, i64 %14) %polly.access.mul..obit38 = extractvalue { i64, i1 } %polly.access.mul.37, 1 %polly.overflow.state39 = or i1 %polly.overflow.state36, %polly.access.mul..obit38 %polly.access.mul..res40 = extractvalue { i64, i1 } %polly.access.mul.37, 0 %polly.access.add.41 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %polly.access.mul..res40, i64 %6) %polly.access.add..obit42 = extractvalue { i64, i1 } %polly.access.add.41, 1 %polly.overflow.state43 = or i1 %polly.overflow.state39, %polly.access.add..obit42 %polly.access.add..res44 = extractvalue { i64, i1 } %polly.access.add.41, 0 %polly.access. = getelementptr double, double* %11, i64 %polly.access.add..res44 %polly.access.mul.45 = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 0, i64 %9) %polly.access.mul..obit46 = extractvalue { i64, i1 } %polly.access.mul.45, 1 %polly.overflow.state47 = or i1 %polly.overflow.state43, %polly.access.mul..obit46 %polly.access.mul..res48 = extractvalue { i64, i1 } %polly.access.mul.45, 0 %polly.access.add.49 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %polly.access.mul..res48, i64 0) %polly.access.add..obit50 = extractvalue { i64, i1 } %polly.access.add.49, 1 %polly.overflow.state51 = or i1 %polly.overflow.state47, %polly.access.add..obit50 %polly.access.add..res52 = extractvalue { i64, i1 } %polly.access.add.49, 0 %polly.access.mul.53 = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %polly.access.add..res52, i64 %6) %polly.access.mul..obit54 = extractvalue { i64, i1 } %polly.access.mul.53, 1 %polly.overflow.state55 = or i1 %polly.overflow.state51, %polly.access.mul..obit54 %polly.access.mul..res56 = extractvalue { i64, i1 } %polly.access.mul.53, 0 %polly.access.add.57 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %polly.access.mul..res56, i64 0) %polly.access.add..obit58 = extractvalue { i64, i1 } %polly.access.add.57, 1 %polly.overflow.state59 = or i1 %polly.overflow.state55, %polly.access.add..obit58 %polly.access.add..res60 = extractvalue { i64, i1 } %polly.access.add.57, 0 %polly.access.61 = getelementptr double, double* %3, i64 %polly.access.add..res60 %34 = ptrtoint double* %polly.access. to i64 %35 = ptrtoint double* %polly.access.61 to i64 %36 = icmp ule i64 %34, %35 %37 = call { i64, i1 } @llvm.ssub.with.overflow.i64(i64 %20, i64 1) %.obit62 = extractvalue { i64, i1 } %37, 1 %polly.overflow.state63 = or i1 %polly.overflow.state59, %.obit62 %.res64 = extractvalue { i64, i1 } %37, 0 %polly.access.mul.65 = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %.res64, i64 %9) %polly.access.mul..obit66 = extractvalue { i64, i1 } %polly.access.mul.65, 1 %polly.overflow.state67 = or i1 %polly.overflow.state63, %polly.access.mul..obit66 %polly.access.mul..res68 = extractvalue { i64, i1 } %polly.access.mul.65, 0 %38 = call { i64, i1 } @llvm.ssub.with.overflow.i64(i64 %9, i64 1) %.obit69 = extractvalue { i64, i1 } %38, 1 %polly.overflow.state70 = or i1 %polly.overflow.state67, %.obit69 %.res71 = extractvalue { i64, i1 } %38, 0 %polly.access.add.72 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %polly.access.mul..res68, i64 %.res71) %polly.access.add..obit73 = extractvalue { i64, i1 } %polly.access.add.72, 1 %polly.overflow.state74 = or i1 %polly.overflow.state70, %polly.access.add..obit73 %polly.access.add..res75 = extractvalue { i64, i1 } %polly.access.add.72, 0 %polly.access.mul.76 = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %polly.access.add..res75, i64 %6) %polly.access.mul..obit77 = extractvalue { i64, i1 } %polly.access.mul.76, 1 %polly.overflow.state78 = or i1 %polly.overflow.state74, %polly.access.mul..obit77 %polly.access.mul..res79 = extractvalue { i64, i1 } %polly.access.mul.76, 0 %polly.access.add.80 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %polly.access.mul..res79, i64 %6) %polly.access.add..obit81 = extractvalue { i64, i1 } %polly.access.add.80, 1 %polly.overflow.state82 = or i1 %polly.overflow.state78, %polly.access.add..obit81 %polly.access.add..res83 = extractvalue { i64, i1 } %polly.access.add.80, 0 %polly.access.84 = getelementptr double, double* %3, i64 %polly.access.add..res83 %polly.access.mul.85 = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 0, i64 %17) %polly.access.mul..obit86 = extractvalue { i64, i1 } %polly.access.mul.85, 1 %polly.overflow.state87 = or i1 %polly.overflow.state82, %polly.access.mul..obit86 %polly.access.mul..res88 = extractvalue { i64, i1 } %polly.access.mul.85, 0 %polly.access.add.89 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %polly.access.mul..res88, i64 0) %polly.access.add..obit90 = extractvalue { i64, i1 } %polly.access.add.89, 1 %polly.overflow.state91 = or i1 %polly.overflow.state87, %polly.access.add..obit90 %polly.access.add..res92 = extractvalue { i64, i1 } %polly.access.add.89, 0 %polly.access.mul.93 = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %polly.access.add..res92, i64 %14) %polly.access.mul..obit94 = extractvalue { i64, i1 } %polly.access.mul.93, 1 %polly.overflow.state95 = or i1 %polly.overflow.state91, %polly.access.mul..obit94 %polly.access.mul..res96 = extractvalue { i64, i1 } %polly.access.mul.93, 0 %polly.access.add.97 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %polly.access.mul..res96, i64 0) %polly.access.add..obit98 = extractvalue { i64, i1 } %polly.access.add.97, 1 %polly.overflow.state99 = or i1 %polly.overflow.state95, %polly.access.add..obit98 %polly.access.add..res100 = extractvalue { i64, i1 } %polly.access.add.97, 0 %polly.access.101 = getelementptr double, double* %11, i64 %polly.access.add..res100 %39 = ptrtoint double* %polly.access.84 to i64 %40 = ptrtoint double* %polly.access.101 to i64 %41 = icmp ule i64 %39, %40 %42 = or i1 %36, %41 %43 = and i1 %31, %42 %44 = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 1, i64 %6) %.obit102 = extractvalue { i64, i1 } %44, 1 %polly.overflow.state103 = or i1 %polly.overflow.state99, %.obit102 %.res104 = extractvalue { i64, i1 } %44, 0 %45 = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %.res104, i64 %9) %.obit105 = extractvalue { i64, i1 } %45, 1 %polly.overflow.state106 = or i1 %polly.overflow.state103, %.obit105 %.res107 = extractvalue { i64, i1 } %45, 0 %46 = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 %.res107, i64 %20) %.obit108 = extractvalue { i64, i1 } %46, 1 %polly.overflow.state109 = or i1 %polly.overflow.state106, %.obit108 %.res110 = extractvalue { i64, i1 } %46, 0 %47 = call { i64, i1 } @llvm.smul.with.overflow.i64(i64 29, i64 %.res110) %.obit111 = extractvalue { i64, i1 } %47, 1 %polly.overflow.state112 = or i1 %polly.overflow.state109, %.obit111 %.res113 = extractvalue { i64, i1 } %47, 0 %48 = call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 0, i64 %.res113) %.obit114 = extractvalue { i64, i1 } %48, 1 %polly.overflow.state115 = or i1 %polly.overflow.state112, %.obit114 %.res116 = extractvalue { i64, i1 } %48, 0 %49 = icmp sge i64 %.res116, 2621440 %50 = and i1 %43, %49 %polly.rtc.overflown = xor i1 %polly.overflow.state115, true %polly.rtc.result = and i1 %50, %polly.rtc.overflown br i1 false, label %polly.start, label %if.pre_entry_bb if.pre_entry_bb: ; preds = %polly.split_new_and_old br label %if, !dbg !39 if: ; preds = %if.pre_entry_bb, %L22.loopexit %"#temp#2.031" = phi i64 [ %51, %L22.loopexit ], [ 1, %if.pre_entry_bb ] %51 = add i64 %"#temp#2.031", 1, !dbg !39 call void @llvm.dbg.value(metadata i64 %9, i64 0, metadata !22, metadata !25), !dbg !24 call void @llvm.dbg.value(metadata i64 %9, i64 0, metadata !22, metadata !25), !dbg !24 %52 = icmp sgt i64 %9, 0, !dbg !40 %53 = select i1 %52, i64 %9, i64 0, !dbg !40 %54 = icmp slt i64 %9, 1, !dbg !40 br i1 %54, label %L22.loopexit, label %if14.lr.ph, !dbg !40 if14.lr.ph: ; preds = %if br label %if14, !dbg !40 L22.L55_crit_edge: ; preds = %L22.loopexit br label %polly.merge_new_and_old, !dbg !39 polly.merge_new_and_old: ; preds = %polly.exiting, %L22.L55_crit_edge br label %L55, !dbg !41 L55: ; preds = %polly.merge_new_and_old, %top.split ret void, !dbg !41 L40.L31.loopexit_crit_edge: ; preds = %if15 br label %L31.loopexit, !dbg !42 L31.loopexit: ; preds = %L40.L31.loopexit_crit_edge, %if14 %55 = icmp eq i64 %"#temp#1.030", %53, !dbg !40 br i1 %55, label %L31.L22.loopexit_crit_edge, label %if14, !dbg !40 if14: ; preds = %if14.lr.ph, %L31.loopexit %"#temp#1.030" = phi i64 [ 1, %if14.lr.ph ], [ %56, %L31.loopexit ] %56 = add i64 %"#temp#1.030", 1, !dbg !40 call void @llvm.dbg.value(metadata i64 %20, i64 0, metadata !23, metadata !25), !dbg !24 call void @llvm.dbg.value(metadata i64 %20, i64 0, metadata !23, metadata !25), !dbg !24 %57 = icmp sgt i64 %20, 0, !dbg !42 %58 = select i1 %57, i64 %20, i64 0, !dbg !42 %59 = icmp slt i64 %20, 1, !dbg !42 br i1 %59, label %L31.loopexit, label %if15.lr.ph, !dbg !42 if15.lr.ph: ; preds = %if14 br label %if15, !dbg !42 if15: ; preds = %if15.lr.ph, %if15 %"#temp#.029" = phi i64 [ 1, %if15.lr.ph ], [ %60, %if15 ] %60 = add i64 %"#temp#.029", 1, !dbg !42 call void @llvm.dbg.value(metadata i64 %"#temp#2.031", i64 0, metadata !20, metadata !25), !dbg !24 call void @llvm.dbg.value(metadata i64 %"#temp#1.030", i64 0, metadata !19, metadata !25), !dbg !24 call void @llvm.dbg.value(metadata i64 %"#temp#.029", i64 0, metadata !17, metadata !25), !dbg !24 %61 = add i64 %"#temp#1.030", -1, !dbg !41 %62 = add i64 %"#temp#.029", -1, !dbg !41 %63 = mul i64 %62, %17, !dbg !41 %tmp = add i64 %61, %63 %tmp24 = mul i64 %tmp, %14 %64 = add i64 %"#temp#2.031", -1, !dbg !41 %65 = add i64 %64, %tmp24, !dbg !41 %66 = getelementptr double, double* %11, i64 %65, !dbg !41 %67 = load double, double* %66, align 8, !dbg !41, !tbaa !43 call void @llvm.dbg.value(metadata i64 %"#temp#2.031", i64 0, metadata !20, metadata !25), !dbg !24 call void @llvm.dbg.value(metadata i64 %"#temp#1.030", i64 0, metadata !19, metadata !25), !dbg !24 call void @llvm.dbg.value(metadata i64 %"#temp#.029", i64 0, metadata !17, metadata !25), !dbg !24 %68 = fmul double %67, %67, !dbg !41 call void @llvm.dbg.value(metadata i64 %"#temp#2.031", i64 0, metadata !20, metadata !25), !dbg !24 call void @llvm.dbg.value(metadata i64 %"#temp#1.030", i64 0, metadata !19, metadata !25), !dbg !24 call void @llvm.dbg.value(metadata i64 %"#temp#.029", i64 0, metadata !17, metadata !25), !dbg !24 %69 = mul i64 %62, %9, !dbg !41 %tmp27 = add i64 %61, %69 %tmp28 = mul i64 %tmp27, %6 %70 = add i64 %64, %tmp28, !dbg !41 %71 = getelementptr double, double* %3, i64 %70, !dbg !41 store double %68, double* %71, align 8, !dbg !41, !tbaa !43 %72 = icmp eq i64 %"#temp#.029", %58, !dbg !42 br i1 %72, label %L40.L31.loopexit_crit_edge, label %if15, !dbg !42 polly.start: ; preds = %polly.split_new_and_old br label %polly.acc.initialize polly.acc.initialize: ; preds = %polly.start %73 = call i8* @polly_initContext() %74 = mul nsw i64 %20, %17 %75 = mul nsw i64 %74, %14 %76 = mul i64 8, %75 %p_dev_array_MemRef0 = call i8* @polly_allocateMemoryForDevice(i64 %76) %77 = mul nsw i64 %20, %9 %78 = mul nsw i64 %77, %6 %79 = mul i64 8, %78 %p_dev_array_MemRef1 = call i8* @polly_allocateMemoryForDevice(i64 %79) br label %polly.cond polly.cond: ; preds = %polly.acc.initialize %80 = icmp sge i64 %9, 1 %81 = icmp sge i64 %20, 1 %82 = and i1 %80, %81 %83 = icmp sge i64 %6, 1 %84 = and i1 %82, %83 br i1 %84, label %polly.then, label %polly.else polly.merge: ; preds = %polly.else, %polly.merge118 call void @polly_freeDeviceMemory(i8* %p_dev_array_MemRef1) call void @polly_freeDeviceMemory(i8* %p_dev_array_MemRef0) call void @polly_freeContext(i8* %73) br label %polly.exiting polly.exiting: ; preds = %polly.merge br label %polly.merge_new_and_old polly.then: ; preds = %polly.cond br label %polly.cond117 polly.cond117: ; preds = %polly.then %85 = icmp sge i64 %17, 1 %86 = icmp sge i64 %14, 1 %87 = and i1 %85, %86 br i1 %87, label %polly.then119, label %polly.else120 polly.merge118: ; preds = %polly.else120, %polly.then119 %88 = call i8* @polly_getDevicePtr(i8* %p_dev_array_MemRef0) %89 = getelementptr [8 x i8*], [8 x i8*]* %polly_launch_0_params, i64 0, i64 0 store i8* %88, i8** %polly_launch_0_param_0 %90 = bitcast i8** %polly_launch_0_param_0 to i8* store i8* %90, i8** %89 %91 = call i8* @polly_getDevicePtr(i8* %p_dev_array_MemRef1) %92 = getelementptr [8 x i8*], [8 x i8*]* %polly_launch_0_params, i64 0, i64 1 store i8* %91, i8** %polly_launch_0_param_1 %93 = bitcast i8** %polly_launch_0_param_1 to i8* store i8* %93, i8** %92 store i64 %9, i64* %polly_launch_0_param_2 %94 = getelementptr [8 x i8*], [8 x i8*]* %polly_launch_0_params, i64 0, i64 2 %95 = bitcast i64* %polly_launch_0_param_2 to i8* store i8* %95, i8** %94 store i64 %20, i64* %polly_launch_0_param_3 %96 = getelementptr [8 x i8*], [8 x i8*]* %polly_launch_0_params, i64 0, i64 3 %97 = bitcast i64* %polly_launch_0_param_3 to i8* store i8* %97, i8** %96 store i64 %6, i64* %polly_launch_0_param_4 %98 = getelementptr [8 x i8*], [8 x i8*]* %polly_launch_0_params, i64 0, i64 4 %99 = bitcast i64* %polly_launch_0_param_4 to i8* store i8* %99, i8** %98 store i64 %17, i64* %polly_launch_0_param_5 %100 = getelementptr [8 x i8*], [8 x i8*]* %polly_launch_0_params, i64 0, i64 5 %101 = bitcast i64* %polly_launch_0_param_5 to i8* store i8* %101, i8** %100 store i64 %14, i64* %polly_launch_0_param_6 %102 = getelementptr [8 x i8*], [8 x i8*]* %polly_launch_0_params, i64 0, i64 6 %103 = bitcast i64* %polly_launch_0_param_6 to i8* store i8* %103, i8** %102 store void (metadata, i64, metadata, metadata)* @llvm.dbg.value, void (metadata, i64, metadata, metadata)** %polly_launch_0_param_7 %104 = getelementptr [8 x i8*], [8 x i8*]* %polly_launch_0_params, i64 0, i64 7 %105 = bitcast void (metadata, i64, metadata, metadata)** %polly_launch_0_param_7 to i8* store i8* %105, i8** %104 %106 = call i8* @polly_getKernel(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @kernel_0, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @kernel_0_name, i32 0, i32 0)) %107 = icmp sge i64 %6, 8161 %108 = add nsw i64 %6, 31 %polly.fdiv_q.shr = ashr i64 %108, 5 %109 = select i1 %107, i64 256, i64 %polly.fdiv_q.shr %110 = trunc i64 %109 to i32 %111 = icmp sge i64 %9, 8162 %112 = add nsw i64 %9, 31 %polly.fdiv_q.shr121 = ashr i64 %112, 5 %113 = select i1 %111, i64 256, i64 %polly.fdiv_q.shr121 %114 = trunc i64 %113 to i32 call void @polly_launchKernel(i8* %106, i32 %110, i32 %114, i32 32, i32 4, i32 4, i8* %polly_launch_0_params_i8ptr) call void @polly_freeKernel(i8* %106) %115 = mul nsw i64 %20, %9 %116 = mul nsw i64 %115, %6 %117 = mul i64 8, %116 %118 = bitcast double* %3 to i8* call void @polly_copyFromDeviceToHost(i8* %p_dev_array_MemRef1, i8* %118, i64 %117) br label %polly.merge polly.else: ; preds = %polly.cond br label %polly.merge polly.then119: ; preds = %polly.cond117 %119 = mul nsw i64 %20, %17 %120 = mul nsw i64 %119, %14 %121 = mul i64 8, %120 %122 = bitcast double* %11 to i8* call void @polly_copyFromHostToDevice(i8* %122, i8* %p_dev_array_MemRef0, i64 %121) br label %polly.merge118 polly.else120: ; preds = %polly.cond117 br label %polly.merge118 } define i8** @jlcall_square_3D_mat_64453(i8**, i8***, i32) #1 { top: br label %top.split top.split: ; preds = %top %3 = load i8**, i8*** %1, align 8 %4 = getelementptr i8**, i8*** %1, i64 1 %5 = load i8**, i8*** %4, align 8 call void @julia_square_3D_mat_64454(i8** %3, i8** %5) ret i8** inttoptr (i64 140082821496848 to i8**) } declare i8**** @jl_get_ptls_states() ; Function Attrs: nounwind readnone declare void @llvm.dbg.declare(metadata, metadata, metadata) #2 ; Function Attrs: noreturn declare void @jl_error(i8*) #3 ; Function Attrs: argmemonly nounwind declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture writeonly, i8* nocapture readonly, i32, i32, i1) #4 ; Function Attrs: argmemonly nounwind declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i32, i1) #4 declare void @jl_enter_handler(i8*) ; Function Attrs: returns_twice declare i32 @__sigsetjmp(i8*, i32) #5 ; Function Attrs: nounwind readnone declare void @llvm.dbg.value(metadata, i64, metadata, metadata) #2 ; Function Attrs: nounwind readnone declare { i64, i1 } @llvm.ssub.with.overflow.i64(i64, i64) #2 ; Function Attrs: nounwind readnone declare { i64, i1 } @llvm.smul.with.overflow.i64(i64, i64) #2 ; Function Attrs: nounwind readnone declare { i64, i1 } @llvm.sadd.with.overflow.i64(i64, i64) #2 declare i8* @polly_initContext() declare i8* @polly_allocateMemoryForDevice(i64) declare void @polly_copyFromHostToDevice(i8*, i8*, i64) declare i8* @polly_getDevicePtr(i8*) declare i8* @polly_getKernel(i8*, i8*) declare void @polly_launchKernel(i8*, i32, i32, i32, i32, i32, i8*) declare void @polly_freeKernel(i8*) declare void @polly_copyFromDeviceToHost(i8*, i8*, i64) declare void @polly_freeDeviceMemory(i8*) declare void @polly_freeContext(i8*) attributes #0 = { sspstrong "no-frame-pointer-elim"="true" } attributes #1 = { "no-frame-pointer-elim"="true" } attributes #2 = { nounwind readnone } attributes #3 = { noreturn } attributes #4 = { argmemonly nounwind } attributes #5 = { returns_twice } !llvm.module.flags = !{!0, !1} !llvm.dbg.cu = !{!2} !0 = !{i32 2, !"Dwarf Version", i32 4} !1 = !{i32 1, !"Debug Info Version", i32 3} !2 = distinct !DICompileUnit(language: DW_LANG_C89, file: !3, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4) !3 = !DIFile(filename: "REPL[1]", directory: ".") !4 = !{} !5 = distinct !DISubprogram(name: "square_3D_mat", linkageName: "julia_square_3D_mat_64454", scope: null, file: !3, type: !6, isLocal: false, isDefinition: true, isOptimized: true, unit: !2, variables: !12) !6 = !DISubroutineType(types: !7) !7 = !{!8, !8} !8 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !9, size: 64, align: 64) !9 = !DICompositeType(tag: DW_TAG_structure_type, name: "jl_value_t", file: !10, line: 71, align: 64, elements: !11) !10 = !DIFile(filename: "julia.h", directory: "") !11 = !{!8} !12 = !{!13, !15, !16, !17, !19, !20, !21, !22, !23} !13 = !DILocalVariable(name: "#self#", arg: 1, scope: !5, file: !3, line: 2, type: !14) !14 = !DICompositeType(tag: DW_TAG_structure_type, name: "#square_3D_mat", align: 8, elements: !4, runtimeLang: DW_LANG_Julia, identifier: "#square_3D_mat_64400") !15 = !DILocalVariable(name: "a", arg: 2, scope: !5, file: !3, line: 2, type: !8) !16 = !DILocalVariable(name: "b", arg: 3, scope: !5, file: !3, line: 2, type: !8) !17 = !DILocalVariable(name: "k", scope: !5, file: !3, line: 2, type: !18) !18 = !DIBasicType(name: "Int64", size: 64, encoding: DW_ATE_unsigned) !19 = !DILocalVariable(name: "j", scope: !5, file: !3, line: 2, type: !18) !20 = !DILocalVariable(name: "i", scope: !5, file: !3, line: 2, type: !18) !21 = !DILocalVariable(name: "ni", scope: !5, file: !3, line: 2, type: !18) !22 = !DILocalVariable(name: "nj", scope: !5, file: !3, line: 2, type: !18) !23 = !DILocalVariable(name: "nk", scope: !5, file: !3, line: 2, type: !18) !24 = !DILocation(line: 2, scope: !5) !25 = !DIExpression() !26 = !{!27, !27, i64 0, i64 1} !27 = !{!"jtbaa_const", !28, i64 0} !28 = !{!"jtbaa"} !29 = !DILocation(line: 80, scope: !30, inlinedAt: !33) !30 = distinct !DISubprogram(name: "_size;", linkageName: "_size", scope: !31, file: !31, type: !32, isLocal: false, isDefinition: true, isOptimized: true, unit: !2, variables: !4) !31 = !DIFile(filename: "array.jl", directory: ".") !32 = !DISubroutineType(types: !4) !33 = !DILocation(line: 80, scope: !34, inlinedAt: !35) !34 = distinct !DISubprogram(name: "_size;", linkageName: "_size", scope: !31, file: !31, type: !32, isLocal: false, isDefinition: true, isOptimized: true, unit: !2, variables: !4) !35 = !DILocation(line: 80, scope: !36, inlinedAt: !37) !36 = distinct !DISubprogram(name: "_size;", linkageName: "_size", scope: !31, file: !31, type: !32, isLocal: false, isDefinition: true, isOptimized: true, unit: !2, variables: !4) !37 = !DILocation(line: 76, scope: !38, inlinedAt: !24) !38 = distinct !DISubprogram(name: "size;", linkageName: "size", scope: !31, file: !31, type: !32, isLocal: false, isDefinition: true, isOptimized: true, unit: !2, variables: !4) !39 = !DILocation(line: 3, scope: !5) !40 = !DILocation(line: 4, scope: !5) !41 = !DILocation(line: 6, scope: !5) !42 = !DILocation(line: 5, scope: !5) !43 = !{!44, !44, i64 0} !44 = !{!"jtbaa_arraybuf", !45, i64 0} !45 = !{!"jtbaa_data", !28, i64 0}