; ModuleID = '/home/hakta/Documents/vector_mult/solution2/.autopilot/db/a.g.1.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" @vector_mult.str = internal unnamed_addr constant [12 x i8] c"vector_mult\00" ; [#uses=1 type=[12 x i8]*] @memcpy_OC_tempB_OC_B.str = internal unnamed_addr constant [15 x i8] c"memcpy.tempB.B\00" ; [#uses=1 type=[15 x i8]*] @memcpy_OC_tempA_OC_A.str = internal unnamed_addr constant [15 x i8] c"memcpy.tempA.A\00" ; [#uses=1 type=[15 x i8]*] @memcpy_OC_result_OC_tempResult_OC_gep.str = internal unnamed_addr constant [29 x i8] c"memcpy.result.tempResult.gep\00" ; [#uses=1 type=[29 x i8]*] @burstwrite_OC_region.str = internal unnamed_addr constant [18 x i8] c"burstwrite.region\00" ; [#uses=2 type=[18 x i8]*] @burstread_OC_region.str = internal unnamed_addr constant [17 x i8] c"burstread.region\00" ; [#uses=4 type=[17 x i8]*] @.str7 = internal unnamed_addr constant [1 x i8] zeroinitializer ; [#uses=1 type=[1 x i8]*] @.str6 = internal unnamed_addr constant [1 x i8] zeroinitializer ; [#uses=1 type=[1 x i8]*] @.str5 = internal unnamed_addr constant [1 x i8] zeroinitializer ; [#uses=1 type=[1 x i8]*] @.str4 = private unnamed_addr constant [17 x i8] c"vector_mult_loop\00", align 1 ; [#uses=1 type=[17 x i8]*] @.str3 = private unnamed_addr constant [6 x i8] c"slave\00", align 1 ; [#uses=1 type=[6 x i8]*] @.str2 = private unnamed_addr constant [6 x i8] c"m_axi\00", align 1 ; [#uses=1 type=[6 x i8]*] @.str1 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 ; [#uses=1 type=[1 x i8]*] @.str = private unnamed_addr constant [10 x i8] c"s_axilite\00", align 1 ; [#uses=1 type=[10 x i8]*] ; [#uses=0] define void @vector_mult(i32* %A, i32* %B, i32* %result) nounwind uwtable { call void (...)* @_ssdm_op_SpecTopModule([12 x i8]* @vector_mult.str) nounwind %tempA = alloca [8 x i32], align 16 ; [#uses=2 type=[8 x i32]*] %tempB = alloca [8 x i32], align 16 ; [#uses=2 type=[8 x i32]*] %tempResult = alloca [8 x i32], align 16 ; [#uses=2 type=[8 x i32]*] call void @llvm.dbg.value(metadata !{i32* %A}, i64 0, metadata !20), !dbg !21 ; [debug line = 4:22] [debug variable = A] call void @llvm.dbg.value(metadata !{i32* %B}, i64 0, metadata !22), !dbg !23 ; [debug line = 4:32] [debug variable = B] call void @llvm.dbg.value(metadata !{i32* %result}, i64 0, metadata !24), !dbg !25 ; [debug line = 4:42] [debug variable = result] call void (...)* @_ssdm_SpecArrayDimSize(i32* %result, i32 8) nounwind, !dbg !26 ; [debug line = 4:54] call void (...)* @_ssdm_SpecArrayDimSize(i32* %A, i32 8) nounwind, !dbg !28 ; [debug line = 4:87] call void (...)* @_ssdm_SpecArrayDimSize(i32* %B, i32 8) nounwind, !dbg !29 ; [debug line = 4:115] call void (...)* @_ssdm_op_SpecInterface(i32 0, i8* getelementptr inbounds ([10 x i8]* @.str, i64 0, i64 0), i32 0, i32 0, i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0), i32 0, i32 0, i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0), i32 0, i32 0, i32 0, i32 0, i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0)) nounwind, !dbg !30 ; [debug line = 5:1] call void (...)* @_ssdm_op_SpecInterface(i32* %result, i8* getelementptr inbounds ([6 x i8]* @.str2, i64 0, i64 0), i32 0, i32 0, i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0), i32 0, i32 32, i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8]* @.str3, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0), i32 16, i32 16, i32 16, i32 16, i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0)) nounwind, !dbg !30 ; [debug line = 5:1] call void (...)* @_ssdm_op_SpecInterface(i32* %B, i8* getelementptr inbounds ([6 x i8]* @.str2, i64 0, i64 0), i32 0, i32 0, i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0), i32 0, i32 32, i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8]* @.str3, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0), i32 16, i32 16, i32 16, i32 16, i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0)) nounwind, !dbg !30 ; [debug line = 5:1] call void (...)* @_ssdm_op_SpecInterface(i32* %A, i8* getelementptr inbounds ([6 x i8]* @.str2, i64 0, i64 0), i32 0, i32 0, i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0), i32 0, i32 32, i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8]* @.str3, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0), i32 16, i32 16, i32 16, i32 16, i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8]* @.str1, i64 0, i64 0)) nounwind, !dbg !30 ; [debug line = 5:1] call void @llvm.dbg.declare(metadata !{[8 x i32]* %tempA}, metadata !31), !dbg !35 ; [debug line = 5:6] [debug variable = tempA] call void @llvm.dbg.declare(metadata !{[8 x i32]* %tempB}, metadata !36), !dbg !37 ; [debug line = 5:16] [debug variable = tempB] call void @llvm.dbg.declare(metadata !{[8 x i32]* %tempResult}, metadata !38), !dbg !39 ; [debug line = 5:26] [debug variable = tempResult] br label %burst.rd.header burst.rd.header: ; preds = %burst.rd.body, %0 %indvar = phi i32 [ 0, %0 ], [ %indvar.next, %burst.rd.body ] ; [#uses=3 type=i32] %exitcond1 = icmp eq i32 %indvar, 8 ; [#uses=1 type=i1] br i1 %exitcond1, label %burst.rd.header5.preheader, label %burst.rd.body burst.rd.header5.preheader: ; preds = %burst.rd.header br label %burst.rd.header5 burst.rd.body: ; preds = %burst.rd.header %burstread.rbegin = call i32 (...)* @_ssdm_op_SpecRegionBegin([17 x i8]* @burstread_OC_region.str) nounwind ; [#uses=1 type=i32] %1 = call i32 (...)* @_ssdm_op_SpecBurst(i32* %A, i32 1, i32 8, i32 1) nounwind ; [#uses=0 type=i32] call void (...)* @_ssdm_op_SpecPipeline(i32 1, i32 1, i32 1, i32 0, [1 x i8]* @.str5) call void (...)* @_ssdm_op_SpecLoopName([15 x i8]* @memcpy_OC_tempA_OC_A.str) %indvar.next = add i32 %indvar, 1 ; [#uses=1 type=i32] %tmp = sext i32 %indvar to i64, !dbg !40 ; [#uses=2 type=i64] [debug line = 6:2] %A.addr = getelementptr i32* %A, i64 %tmp, !dbg !40 ; [#uses=1 type=i32*] [debug line = 6:2] %A.load = load i32* %A.addr, align 4, !dbg !40 ; [#uses=1 type=i32] [debug line = 6:2] %tempA.addr = getelementptr [8 x i32]* %tempA, i64 0, i64 %tmp, !dbg !40 ; [#uses=1 type=i32*] [debug line = 6:2] store i32 %A.load, i32* %tempA.addr, align 4, !dbg !40 ; [debug line = 6:2] %burstread.rend = call i32 (...)* @_ssdm_op_SpecRegionEnd([17 x i8]* @burstread_OC_region.str, i32 %burstread.rbegin) nounwind ; [#uses=0 type=i32] br label %burst.rd.header burst.rd.header5: ; preds = %burst.rd.body6, %burst.rd.header5.preheader %indvar7 = phi i32 [ %indvar.next8, %burst.rd.body6 ], [ 0, %burst.rd.header5.preheader ] ; [#uses=3 type=i32] %exitcond9 = icmp eq i32 %indvar7, 8 ; [#uses=1 type=i1] br i1 %exitcond9, label %burst.rd.end4.preheader, label %burst.rd.body6 burst.rd.end4.preheader: ; preds = %burst.rd.header5 br label %burst.rd.end4, !dbg !41 ; [debug line = 8:33] burst.rd.body6: ; preds = %burst.rd.header5 %burstread.rbegin1 = call i32 (...)* @_ssdm_op_SpecRegionBegin([17 x i8]* @burstread_OC_region.str) nounwind ; [#uses=1 type=i32] %2 = call i32 (...)* @_ssdm_op_SpecBurst(i32* %B, i32 1, i32 8, i32 1) nounwind ; [#uses=0 type=i32] call void (...)* @_ssdm_op_SpecPipeline(i32 1, i32 1, i32 1, i32 0, [1 x i8]* @.str6) call void (...)* @_ssdm_op_SpecLoopName([15 x i8]* @memcpy_OC_tempB_OC_B.str) %indvar.next8 = add i32 %indvar7, 1 ; [#uses=1 type=i32] %tmp.1 = sext i32 %indvar7 to i64, !dbg !43 ; [#uses=2 type=i64] [debug line = 7:2] %B.addr = getelementptr i32* %B, i64 %tmp.1, !dbg !43 ; [#uses=1 type=i32*] [debug line = 7:2] %B.load = load i32* %B.addr, align 4, !dbg !43 ; [#uses=1 type=i32] [debug line = 7:2] %tempB.addr = getelementptr [8 x i32]* %tempB, i64 0, i64 %tmp.1, !dbg !43 ; [#uses=1 type=i32*] [debug line = 7:2] store i32 %B.load, i32* %tempB.addr, align 4, !dbg !43 ; [debug line = 7:2] %burstread.rend12 = call i32 (...)* @_ssdm_op_SpecRegionEnd([17 x i8]* @burstread_OC_region.str, i32 %burstread.rbegin1) nounwind ; [#uses=0 type=i32] br label %burst.rd.header5 burst.rd.end4: ; preds = %3, %burst.rd.end4.preheader %i = phi i32 [ %i.1, %3 ], [ 0, %burst.rd.end4.preheader ] ; [#uses=3 type=i32] %exitcond = icmp eq i32 %i, 8, !dbg !41 ; [#uses=1 type=i1] [debug line = 8:33] br i1 %exitcond, label %burst.wr.header.preheader, label %3, !dbg !41 ; [debug line = 8:33] burst.wr.header.preheader: ; preds = %burst.rd.end4 br label %burst.wr.header ;