; ModuleID = 'LLVMDialectModule' source_filename = "LLVMDialectModule" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" @nl = internal constant [2 x i8] c"\0A\00" @frmt_spec = internal constant [4 x i8] c"%f \00" declare i8* @malloc(i64) declare void @free(i8*) declare i32 @printf(i8*, ...) define void @main() !dbg !3 { %1 = call i8* @malloc(i64 mul (i64 ptrtoint (double* getelementptr (double, double* null, i32 1) to i64), i64 6)), !dbg !7 %2 = bitcast i8* %1 to double*, !dbg !7 %3 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } undef, double* %2, 0, !dbg !7 %4 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } %3, double* %2, 1, !dbg !7 %5 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } %4, i64 0, 2, !dbg !7 %6 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } %5, i64 3, 3, 0, !dbg !7 %7 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } %6, i64 2, 3, 1, !dbg !7 %8 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } %7, i64 2, 4, 0, !dbg !7 %9 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } %8, i64 1, 4, 1, !dbg !7 %10 = call i8* @malloc(i64 mul (i64 ptrtoint (double* getelementptr (double, double* null, i32 1) to i64), i64 6)), !dbg !9 %11 = bitcast i8* %10 to double*, !dbg !9 %12 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } undef, double* %11, 0, !dbg !9 %13 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } %12, double* %11, 1, !dbg !9 %14 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } %13, i64 0, 2, !dbg !9 %15 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } %14, i64 3, 3, 0, !dbg !9 %16 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } %15, i64 2, 3, 1, !dbg !9 %17 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } %16, i64 2, 4, 0, !dbg !9 %18 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } %17, i64 1, 4, 1, !dbg !9 %19 = call i8* @malloc(i64 mul (i64 ptrtoint (double* getelementptr (double, double* null, i32 1) to i64), i64 6)), !dbg !10 %20 = bitcast i8* %19 to double*, !dbg !10 %21 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } undef, double* %20, 0, !dbg !10 %22 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } %21, double* %20, 1, !dbg !10 %23 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } %22, i64 0, 2, !dbg !10 %24 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } %23, i64 2, 3, 0, !dbg !10 %25 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } %24, i64 3, 3, 1, !dbg !10 %26 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } %25, i64 3, 4, 0, !dbg !10 %27 = insertvalue { double*, double*, i64, [2 x i64], [2 x i64] } %26, i64 1, 4, 1, !dbg !10 %28 = extractvalue { double*, double*, i64, [2 x i64], [2 x i64] } %27, 1, !dbg !10 %29 = getelementptr double, double* %28, i64 0, !dbg !10 store double 1.000000e+00, double* %29, align 8, !dbg !10 %30 = extractvalue { double*, double*, i64, [2 x i64], [2 x i64] } %27, 1, !dbg !10 %31 = getelementptr double, double* %30, i64 1, !dbg !10 store double 2.000000e+00, double* %31, align 8, !dbg !10 %32 = extractvalue { double*, double*, i64, [2 x i64], [2 x i64] } %27, 1, !dbg !10 %33 = getelementptr double, double* %32, i64 2, !dbg !10 store double 3.000000e+00, double* %33, align 8, !dbg !10 %34 = extractvalue { double*, double*, i64, [2 x i64], [2 x i64] } %27, 1, !dbg !10 %35 = getelementptr double, double* %34, i64 3, !dbg !10 store double 4.000000e+00, double* %35, align 8, !dbg !10 %36 = extractvalue { double*, double*, i64, [2 x i64], [2 x i64] } %27, 1, !dbg !10 %37 = getelementptr double, double* %36, i64 4, !dbg !10 store double 5.000000e+00, double* %37, align 8, !dbg !10 %38 = extractvalue { double*, double*, i64, [2 x i64], [2 x i64] } %27, 1, !dbg !10 %39 = getelementptr double, double* %38, i64 5, !dbg !10 store double 6.000000e+00, double* %39, align 8, !dbg !10 br label %40, !dbg !9 40: ; preds = %58, %0 %41 = phi i64 [ 0, %0 ], [ %59, %58 ] %42 = icmp slt i64 %41, 3, !dbg !9 br i1 %42, label %43, label %60, !dbg !9 43: ; preds = %40 br label %44, !dbg !9 44: ; preds = %47, %43 %45 = phi i64 [ 0, %43 ], [ %57, %47 ] %46 = icmp slt i64 %45, 2, !dbg !9 br i1 %46, label %47, label %58, !dbg !9 47: ; preds = %44 %48 = extractvalue { double*, double*, i64, [2 x i64], [2 x i64] } %27, 1, !dbg !9 %49 = mul i64 %45, 3, !dbg !9 %50 = add i64 %49, %41, !dbg !9 %51 = getelementptr double, double* %48, i64 %50, !dbg !9 %52 = load double, double* %51, align 8, !dbg !9 %53 = extractvalue { double*, double*, i64, [2 x i64], [2 x i64] } %18, 1, !dbg !9 %54 = mul i64 %41, 2, !dbg !9 %55 = add i64 %54, %45, !dbg !9 %56 = getelementptr double, double* %53, i64 %55, !dbg !9 store double %52, double* %56, align 8, !dbg !9 %57 = add i64 %45, 1, !dbg !9 br label %44, !dbg !9 58: ; preds = %44 %59 = add i64 %41, 1, !dbg !9 br label %40, !dbg !9 60: ; preds = %40 br label %61, !dbg !7 61: ; preds = %85, %60 %62 = phi i64 [ 0, %60 ], [ %86, %85 ] %63 = icmp slt i64 %62, 3, !dbg !7 br i1 %63, label %64, label %87, !dbg !7 64: ; preds = %61 br label %65, !dbg !7 65: ; preds = %68, %64 %66 = phi i64 [ 0, %64 ], [ %84, %68 ] %67 = icmp slt i64 %66, 2, !dbg !7 br i1 %67, label %68, label %85, !dbg !7 68: ; preds = %65 %69 = extractvalue { double*, double*, i64, [2 x i64], [2 x i64] } %18, 1, !dbg !7 %70 = mul i64 %62, 2, !dbg !7 %71 = add i64 %70, %66, !dbg !7 %72 = getelementptr double, double* %69, i64 %71, !dbg !7 %73 = load double, double* %72, align 8, !dbg !7 %74 = extractvalue { double*, double*, i64, [2 x i64], [2 x i64] } %18, 1, !dbg !7 %75 = mul i64 %62, 2, !dbg !7 %76 = add i64 %75, %66, !dbg !7 %77 = getelementptr double, double* %74, i64 %76, !dbg !7 %78 = load double, double* %77, align 8, !dbg !7 %79 = fmul double %73, %78, !dbg !7 %80 = extractvalue { double*, double*, i64, [2 x i64], [2 x i64] } %9, 1, !dbg !7 %81 = mul i64 %62, 2, !dbg !7 %82 = add i64 %81, %66, !dbg !7 %83 = getelementptr double, double* %80, i64 %82, !dbg !7 store double %79, double* %83, align 8, !dbg !7 %84 = add i64 %66, 1, !dbg !7 br label %65, !dbg !7 85: ; preds = %65 %86 = add i64 %62, 1, !dbg !7 br label %61, !dbg !7 87: ; preds = %61 br label %88, !dbg !11 88: ; preds = %103, %87 %89 = phi i64 [ 0, %87 ], [ %105, %103 ] %90 = icmp slt i64 %89, 3, !dbg !11 br i1 %90, label %91, label %106, !dbg !11 91: ; preds = %88 br label %92, !dbg !11 92: ; preds = %95, %91 %93 = phi i64 [ 0, %91 ], [ %102, %95 ] %94 = icmp slt i64 %93, 2, !dbg !11 br i1 %94, label %95, label %103, !dbg !11 95: ; preds = %92 %96 = extractvalue { double*, double*, i64, [2 x i64], [2 x i64] } %9, 1, !dbg !11 %97 = mul i64 %89, 2, !dbg !11 %98 = add i64 %97, %93, !dbg !11 %99 = getelementptr double, double* %96, i64 %98, !dbg !11 %100 = load double, double* %99, align 8, !dbg !11 %101 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_spec, i64 0, i64 0), double %100), !dbg !11 %102 = add i64 %93, 1, !dbg !11 br label %92, !dbg !11 103: ; preds = %92 %104 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @nl, i64 0, i64 0)), !dbg !11 %105 = add i64 %89, 1, !dbg !11 br label %88, !dbg !11 106: ; preds = %88 %107 = extractvalue { double*, double*, i64, [2 x i64], [2 x i64] } %27, 0, !dbg !10 %108 = bitcast double* %107 to i8*, !dbg !10 call void @free(i8* %108), !dbg !10 %109 = extractvalue { double*, double*, i64, [2 x i64], [2 x i64] } %18, 0, !dbg !9 %110 = bitcast double* %109 to i8*, !dbg !9 call void @free(i8* %110), !dbg !9 %111 = extractvalue { double*, double*, i64, [2 x i64], [2 x i64] } %9, 0, !dbg !7 %112 = bitcast double* %111 to i8*, !dbg !7 call void @free(i8* %112), !dbg !7 ret void, !dbg !12 } !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!2} !0 = distinct !DICompileUnit(language: DW_LANG_C, file: !1, producer: "mlir", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug) !1 = !DIFile(filename: "LLVMDialectModule", directory: "/") !2 = !{i32 2, !"Debug Info Version", i32 3} !3 = distinct !DISubprogram(name: "main", linkageName: "main", scope: null, file: !4, line: 1, type: !5, scopeLine: 1, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !6) !4 = !DIFile(filename: "input.mlir", directory: "/home/nisl1/nisl8121/wjq/mlir/llvm-project/build") !5 = !DISubroutineType(types: !6) !6 = !{} !7 = !DILocation(line: 4, column: 8, scope: !8) !8 = !DILexicalBlockFile(scope: !3, file: !4, discriminator: 0) !9 = !DILocation(line: 3, column: 8, scope: !8) !10 = !DILocation(line: 2, column: 8, scope: !8) !11 = !DILocation(line: 5, column: 3, scope: !8) !12 = !DILocation(line: 6, column: 3, scope: !8)