; ModuleID = '/home/hakta/Documents/edge_detection/solution2/.autopilot/db/a.o.3.bc' target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" @convolution_str = internal unnamed_addr constant [12 x i8] c"convolution\00" ; [#uses=1 type=[12 x i8]*] @RAM_1P_str = internal unnamed_addr constant [7 x i8] c"RAM_1P\00" ; [#uses=3 type=[7 x i8]*] @p_str5 = internal unnamed_addr constant [1 x i8] zeroinitializer ; [#uses=7 type=[1 x i8]*] @p_str4 = internal unnamed_addr constant [1 x i8] zeroinitializer ; [#uses=7 type=[1 x i8]*] @p_str3 = internal unnamed_addr constant [1 x i8] zeroinitializer ; [#uses=7 type=[1 x i8]*] @p_str1 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 ; [#uses=24 type=[1 x i8]*] @p_str = private unnamed_addr constant [10 x i8] c"s_axilite\00", align 1 ; [#uses=4 type=[10 x i8]*] ; [#uses=7] declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone ; [#uses=0] define void @convolution([10000 x i32]* %A, [100 x i32]* %B, [8281 x i32]* %C) nounwind uwtable { call void (...)* @_ssdm_op_SpecBitsMap([10000 x i32]* %A) nounwind, !map !7 call void (...)* @_ssdm_op_SpecBitsMap([100 x i32]* %B) nounwind, !map !13 call void (...)* @_ssdm_op_SpecBitsMap([8281 x i32]* %C) nounwind, !map !19 call void (...)* @_ssdm_op_SpecTopModule([12 x i8]* @convolution_str) nounwind call void @llvm.dbg.value(metadata !{[10000 x i32]* %A}, i64 0, metadata !25), !dbg !37 ; [debug line = 9:22] [debug variable = A] call void @llvm.dbg.value(metadata !{[100 x i32]* %B}, i64 0, metadata !38), !dbg !42 ; [debug line = 9:38] [debug variable = B] call void @llvm.dbg.value(metadata !{[8281 x i32]* %C}, i64 0, metadata !43), !dbg !47 ; [debug line = 9:52] [debug variable = C] call void (...)* @_ssdm_op_SpecInterface(i32 0, [10 x i8]* @p_str, i32 0, i32 0, [1 x i8]* @p_str1, i32 0, i32 0, [1 x i8]* @p_str1, [1 x i8]* @p_str1, [1 x i8]* @p_str1, i32 0, i32 0, i32 0, i32 0, [1 x i8]* @p_str1, [1 x i8]* @p_str1) nounwind, !dbg !48 ; [debug line = 10:1] %empty = call i32 (...)* @_ssdm_op_SpecMemCore([8281 x i32]* %C, [1 x i8]* @p_str5, [7 x i8]* @RAM_1P_str, [1 x i8]* @p_str5, i32 -1, [1 x i8]* @p_str5, [1 x i8]* @p_str5, [1 x i8]* @p_str5, [1 x i8]* @p_str5, [1 x i8]* @p_str5) nounwind ; [#uses=0 type=i32] call void (...)* @_ssdm_op_SpecInterface([8281 x i32]* %C, [10 x i8]* @p_str, i32 0, i32 0, [1 x i8]* @p_str1, i32 0, i32 0, [1 x i8]* @p_str1, [1 x i8]* @p_str1, [1 x i8]* @p_str1, i32 0, i32 0, i32 0, i32 0, [1 x i8]* @p_str1, [1 x i8]* @p_str1) nounwind %empty_2 = call i32 (...)* @_ssdm_op_SpecMemCore([100 x i32]* %B, [1 x i8]* @p_str4, [7 x i8]* @RAM_1P_str, [1 x i8]* @p_str4, i32 -1, [1 x i8]* @p_str4, [1 x i8]* @p_str4, [1 x i8]* @p_str4, [1 x i8]* @p_str4, [1 x i8]* @p_str4) nounwind ; [#uses=0 type=i32] call void (...)* @_ssdm_op_SpecInterface([100 x i32]* %B, [10 x i8]* @p_str, i32 0, i32 0, [1 x i8]* @p_str1, i32 0, i32 0, [1 x i8]* @p_str1, [1 x i8]* @p_str1, [1 x i8]* @p_str1, i32 0, i32 0, i32 0, i32 0, [1 x i8]* @p_str1, [1 x i8]* @p_str1) nounwind %empty_3 = call i32 (...)* @_ssdm_op_SpecMemCore([10000 x i32]* %A, [1 x i8]* @p_str3, [7 x i8]* @RAM_1P_str, [1 x i8]* @p_str3, i32 -1, [1 x i8]* @p_str3, [1 x i8]* @p_str3, [1 x i8]* @p_str3, [1 x i8]* @p_str3, [1 x i8]* @p_str3) nounwind ; [#uses=0 type=i32] call void (...)* @_ssdm_op_SpecInterface([10000 x i32]* %A, [10 x i8]* @p_str, i32 0, i32 0, [1 x i8]* @p_str1, i32 0, i32 0, [1 x i8]* @p_str1, [1 x i8]* @p_str1, [1 x i8]* @p_str1, i32 0, i32 0, i32 0, i32 0, [1 x i8]* @p_str1, [1 x i8]* @p_str1) nounwind br label %.loopexit1, !dbg !50 ; [debug line = 10:16] .loopexit1.loopexit: ; preds = %.preheader4 br label %.loopexit1 .loopexit1: ; preds = %.loopexit1.loopexit, %0 %i = phi i7 [ 0, %0 ], [ %i_1, %.loopexit1.loopexit ] ; [#uses=3 type=i7] %phi_mul = phi i14 [ 0, %0 ], [ %next_mul, %.loopexit1.loopexit ] ; [#uses=2 type=i14] %next_mul = add i14 %phi_mul, 91 ; [#uses=1 type=i14] %exitcond3 = icmp eq i7 %i, -37, !dbg !50 ; [#uses=1 type=i1] [debug line = 10:16] %empty_4 = call i32 (...)* @_ssdm_op_SpecLoopTripCount(i64 91, i64 91, i64 91) nounwind ; [#uses=0 type=i32] %i_1 = add i7 %i, 1, !dbg !52 ; [#uses=1 type=i7] [debug line = 10:26] call void @llvm.dbg.value(metadata !{i7 %i_1}, i64 0, metadata !53), !dbg !52 ; [debug line = 10:26] [debug variable = i] br i1 %exitcond3, label %3, label %.preheader4.preheader, !dbg !50 ; [debug line = 10:16] .preheader4.preheader: ; preds = %.loopexit1 br label %.preheader4, !dbg !54 ; [debug line = 11:17] .preheader4.loopexit: ; preds = %.loopexit br label %.preheader4 .preheader4: ; preds = %.preheader4.loopexit, %.preheader4.preheader %j = phi i7 [ %j_1, %.preheader4.loopexit ], [ 0, %.preheader4.preheader ] ; [#uses=3 type=i7] %j_cast5 = zext i7 %j to i14, !dbg !54 ; [#uses=2 type=i14] [debug line = 11:17] %exitcond2 = icmp eq i7 %j, -37, !dbg !54 ; [#uses=1 type=i1] [debug line = 11:17] %empty_5 = call i32 (...)* @_ssdm_op_SpecLoopTripCount(i64 91, i64 91, i64 91) nounwind ; [#uses=0 type=i32] %j_1 = add i7 %j, 1, !dbg !57 ; [#uses=1 type=i7] [debug line = 11:27] call void @llvm.dbg.value(metadata !{i7 %j_1}, i64 0, metadata !58), !dbg !57 ; [debug line = 11:27] [debug variable = j] br i1 %exitcond2, label %.loopexit1.loopexit, label %1, !dbg !54 ; [debug line = 11:17] ;