; ModuleID = '/home/hakta/Documents/vector_mult/solution3/.autopilot/db/a.o.2.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" @mode5 = internal constant [10 x i8] c"s_axilite\00" @mode3 = internal constant [10 x i8] c"s_axilite\00" @mode = internal constant [10 x i8] c"s_axilite\00" @memcpy_OC_tempB_OC_B = internal unnamed_addr constant [15 x i8] c"memcpy.tempB.B\00" @memcpy_OC_tempA_OC_A = internal unnamed_addr constant [15 x i8] c"memcpy.tempA.A\00" @memcpy_OC_result_OC_s = internal unnamed_addr constant [29 x i8] c"memcpy.result.tempResult.gep\00" @burstwrite_OC_region = internal unnamed_addr constant [18 x i8] c"burstwrite.region\00" @burstread_OC_region_s = internal unnamed_addr constant [17 x i8] c"burstread.region\00" @bundle6 = internal constant [1 x i8] zeroinitializer @bundle4 = internal constant [1 x i8] zeroinitializer @bundle = internal constant [1 x i8] zeroinitializer @p_str8 = internal unnamed_addr constant [1 x i8] zeroinitializer @p_str7 = internal unnamed_addr constant [1 x i8] zeroinitializer @p_str6 = internal unnamed_addr constant [1 x i8] zeroinitializer @p_str5 = private unnamed_addr constant [17 x i8] c"vector_mult_loop\00", align 1 @p_str3 = private unnamed_addr constant [6 x i8] c"slave\00", align 1 @p_str2 = private unnamed_addr constant [6 x i8] c"m_axi\00", align 1 @p_str1 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @p_str = private unnamed_addr constant [10 x i8] c"s_axilite\00", align 1 define void @vector_mult(i32* %gmem, i32 %A, i32 %B, i32 %result) { %result_read = call i32 @_ssdm_op_Read.s_axilite.i32(i32 %result) %B_read = call i32 @_ssdm_op_Read.s_axilite.i32(i32 %B) %A_read = call i32 @_ssdm_op_Read.s_axilite.i32(i32 %A) %result5 = call i30 @_ssdm_op_PartSelect.i30.i32.i32.i32(i32 %result_read, i32 2, i32 31) %tmp_1 = zext i30 %result5 to i64 %gmem_addr = getelementptr i32* %gmem, i64 %tmp_1 %B3 = call i30 @_ssdm_op_PartSelect.i30.i32.i32.i32(i32 %B_read, i32 2, i32 31) %tmp_5 = zext i30 %B3 to i64 %gmem_addr_1 = getelementptr i32* %gmem, i64 %tmp_5 %A1 = call i30 @_ssdm_op_PartSelect.i30.i32.i32.i32(i32 %A_read, i32 2, i32 31) %tmp_13 = zext i30 %A1 to i64 %gmem_addr_2 = getelementptr i32* %gmem, i64 %tmp_13 call void (...)* @_ssdm_op_SpecBitsMap(i32* %gmem), !map !11 call void (...)* @_ssdm_op_SpecTopModule([12 x i8]* @vector_mult_str) nounwind 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 call void (...)* @_ssdm_op_SpecInterface(i32 %result, [10 x i8]* @mode5, i32 0, i32 0, [1 x i8]* @p_str1, i32 0, i32 32, [1 x i8]* @bundle6, [6 x i8]* @p_str3, [1 x i8]* @p_str1, i32 16, i32 16, i32 16, i32 16, [1 x i8]* @p_str1, [1 x i8]* @p_str1) call void (...)* @_ssdm_op_SpecInterface(i32 %B, [10 x i8]* @mode3, i32 0, i32 0, [1 x i8]* @p_str1, i32 0, i32 32, [1 x i8]* @bundle4, [6 x i8]* @p_str3, [1 x i8]* @p_str1, i32 16, i32 16, i32 16, i32 16, [1 x i8]* @p_str1, [1 x i8]* @p_str1) call void (...)* @_ssdm_op_SpecInterface(i32* %gmem, [6 x i8]* @p_str2, i32 0, i32 0, [1 x i8]* @p_str1, i32 0, i32 32, [1 x i8]* @p_str1, [6 x i8]* @p_str3, [1 x i8]* @p_str1, i32 16, i32 16, i32 16, i32 16, [1 x i8]* @p_str1, [1 x i8]* @p_str1) call void (...)* @_ssdm_op_SpecInterface(i32 %A, [10 x i8]* @mode, i32 0, i32 0, [1 x i8]* @p_str1, i32 0, i32 32, [1 x i8]* @bundle, [6 x i8]* @p_str3, [1 x i8]* @p_str1, i32 16, i32 16, i32 16, i32 16, [1 x i8]* @p_str1, [1 x i8]* @p_str1) %gmem_addr_2_rd_req = call i1 @_ssdm_op_ReadReq.m_axi.i32P(i32* %gmem_addr_2, i32 8) br label %burst.rd.header burst.rd.header: ; preds = %burst.rd.body_ifconv, %0 %tempA_1_3_s = phi i32 [ undef, %0 ], [ %tempA_1_3_1, %burst.rd.body_ifconv ] %tempA_1_2_s = phi i32 [ undef, %0 ], [ %tempA_1_3_15, %burst.rd.body_ifconv ] %tempA_1_3_7 = phi i32 [ undef, %0 ], [ %tempA_1_3_16, %burst.rd.body_ifconv ] %tempA_1_3_10 = phi i32 [ undef, %0 ], [ %tempA_1_3_17, %burst.rd.body_ifconv ] %tempA_0_3_s = phi i32 [ undef, %0 ], [ %tempA_1_3_18, %burst.rd.body_ifconv ] %tempA_0_2_s = phi i32 [ undef, %0 ], [ %tempA_1_3_19, %burst.rd.body_ifconv ] %tempA_1_3_12 = phi i32 [ undef, %0 ], [ %tempA_1_3_20, %burst.rd.body_ifconv ] %tempA_1_3_13 = phi i32 [ undef, %0 ], [ %tempA_1_3_21, %burst.rd.body_ifconv ] %indvar = phi i4 [ 0, %0 ], [ %indvar_next, %burst.rd.body_ifconv ] %exitcond1 = icmp eq i4 %indvar, -8 %indvar_next = add i4 %indvar, 1 br i1 %exitcond1, label %burst.rd.header5.preheader, label %burst.rd.body_ifconv burst.rd.header5.preheader: ; preds = %burst.rd.header %gmem_addr_1_rd_req = call i1 @_ssdm_op_ReadReq.m_axi.i32P(i32* %gmem_addr_1, i32 8) br label %burst.rd.header5 burst.rd.body_ifconv: ; preds = %burst.rd.header %empty = call i32 (...)* @_ssdm_op_SpecLoopTripCount(i64 8, i64 8, i64 8) nounwind %burstread_rbegin = call i32 (...)* @_ssdm_op_SpecRegionBegin([17 x i8]* @burstread_OC_region_s) nounwind call void (...)* @_ssdm_op_SpecPipeline(i32 1, i32 1, i32 1, i32 0, [1 x i8]* @p_str6) call void (...)* @_ssdm_op_SpecLoopName([15 x i8]* @memcpy_OC_tempA_OC_A) %tempA_1_3_23 = call i32 @_ssdm_op_Read.m_axi.i32P(i32* %gmem_addr_2) %tmp = trunc i4 %indvar to i1 %newIndex84_t = call i2 @_ssdm_op_PartSelect.i2.i4.i32.i32(i4 %indvar, i32 1, i32 2) %sel_tmp = icmp eq i2 %newIndex84_t, -2 %tempA_1_3 = select i1 %sel_tmp, i32 %tempA_1_3_s, i32 %tempA_1_3_23 %sel_tmp2 = icmp eq i2 %newIndex84_t, 1 %tempA_1_3_3 = select i1 %sel_tmp2, i32 %tempA_1_3_s, i32 %tempA_1_3 %sel_tmp4 = icmp eq i2 %newIndex84_t, 0 %tempA_1_3_2 = select i1 %sel_tmp4, i32 %tempA_1_3_s, i32 %tempA_1_3_3 %tempA_1_3_4 = select i1 %sel_tmp, i32 %tempA_1_3_23, i32 %tempA_1_2_s %tempA_1_3_5 = select i1 %sel_tmp2, i32 %tempA_1_2_s, i32 %tempA_1_3_4 %tempA_1_3_6 = select i1 %sel_tmp4, i32 %tempA_1_2_s, i32 %tempA_1_3_5 %tempA_1_3_8 = select i1 %sel_tmp2, i32 %tempA_1_3_23, i32 %tempA_1_3_7 %tempA_1_3_9 = select i1 %sel_tmp4, i32 %tempA_1_3_7, i32 %tempA_1_3_8 %tempA_1_3_11 = select i1 %sel_tmp4, i32 %tempA_1_3_23, i32 %tempA_1_3_10 %tempA_1_3_14 = select i1 %sel_tmp4, i32 %tempA_1_3_23, i32 %tempA_1_3_13 %tempA_1_3_1 = select i1 %tmp, i32 %tempA_1_3_2, i32 %tempA_1_3_s %tempA_1_3_15 = select i1 %tmp, i32 %tempA_1_3_6, i32 %tempA_1_2_s %tempA_1_3_16 = select i1 %tmp, i32 %tempA_1_3_9, i32 %tempA_1_3_7 %tempA_1_3_17 = select i1 %tmp, i32 %tempA_1_3_11, i32 %tempA_1_3_10 %or_cond = or i1 %tmp, %sel_tmp4 %or_cond1 = or i1 %sel_tmp2, %sel_tmp %or_cond2 = or i1 %or_cond, %or_cond1 %tempA_1_3_18 = select i1 %or_cond2, i32 %tempA_0_3_s, i32 %tempA_1_3_23 %newSel = select i1 %sel_tmp2, i32 %tempA_0_2_s, i32 %tempA_1_3_23 %newSel1 = select i1 %or_cond, i32 %tempA_0_2_s, i32 %newSel %tempA_1_3_19 = select i1 %or_cond2, i32 %newSel1, i32 %tempA_0_2_s %newSel3 = select i1 %sel_tmp2, i32 %tempA_1_3_23, i32 %tempA_1_3_12 %tempA_1_3_20 = select i1 %or_cond, i32 %tempA_1_3_12, i32 %newSel3 %tempA_1_3_21 = select i1 %tmp, i32 %tempA_1_3_13, i32 %tempA_1_3_14 %burstread_rend = call i32 (...)* @_ssdm_op_SpecRegionEnd([17 x i8]* @burstread_OC_region_s, i32 %burstread_rbegin) nounwind br label %burst.rd.header burst.rd.header5: ; preds = %burst.rd.header5.preheader, %burst.rd.body6_ifconv %tempB_1_3_s = phi i32 [ %tempB_1_3_1, %burst.rd.body6_ifconv ], [ undef, %burst.rd.header5.preheader ] %tempB_1_2_s = phi i32 [ %tempB_1_3_15, %burst.rd.body6_ifconv ], [ undef, %burst.rd.header5.preheader ] %tempB_1_3_7 = phi i32 [ %tempB_1_3_16, %burst.rd.body6_ifconv ], [ undef, %burst.rd.header5.preheader ] %tempB_1_3_10 = phi i32 [ %tempB_1_3_17, %burst.rd.body6_ifconv ], [ undef, %burst.rd.header5.preheader ] %tempB_0_3_s = phi i32 [ %tempB_1_3_18, %burst.rd.body6_ifconv ], [ undef, %burst.rd.header5.preheader ] %tempB_0_2_s = phi i32 [ %tempB_1_3_19, %burst.rd.body6_ifconv ], [ undef, %burst.rd.header5.preheader ] %tempB_1_3_12 = phi i32 [ %tempB_1_3_20, %burst.rd.body6_ifconv ], [ undef, %burst.rd.header5.preheader ] %tempB_1_3_13 = phi i32 [ %tempB_1_3_21, %burst.rd.body6_ifconv ], [ undef, %burst.rd.header5.preheader ] %indvar7 = phi i4 [ %indvar_next8, %burst.rd.body6_ifconv ], [ 0, %burst.rd.header5.preheader ] %exitcond9 = icmp eq i4 %indvar7, -8 %indvar_next8 = add i4 %indvar7, 1 br i1 %exitcond9, label %burst.rd.end4.0.preheader, label %burst.rd.body6_ifconv burst.rd.end4.0.preheader: ; preds = %burst.rd.header5 br label %burst.rd.end4.0 burst.rd.body6_ifconv: ; preds = %burst.rd.header5 %empty_6 = call i32 (...)* @_ssdm_op_SpecLoopTripCount(i64 8, i64 8, i64 8) nounwind %burstread_rbegin1 = call i32 (...)* @_ssdm_op_SpecRegionBegin([17 x i8]* @burstread_OC_region_s) nounwind call void (...)* @_ssdm_op_SpecPipeline(i32 1, i32 1, i32 1, i32 0, [1 x i8]* @p_str7) call void (...)* @_ssdm_op_SpecLoopName([15 x i8]* @memcpy_OC_tempB_OC_B) %tempB_1_3_23 = call i32 @_ssdm_op_Read.m_axi.i32P(i32* %gmem_addr_1) %tmp_14 = trunc i4 %indvar7 to i1 %newIndex58_t = call i2 @_ssdm_op_PartSelect.i2.i4.i32.i32(i4 %indvar7, i32 1, i32 2) %sel_tmp8 = icmp eq i2 %newIndex58_t, -2 %tempB_1_3 = select i1 %sel_tmp8, i32 %tempB_1_3_s, i32 %tempB_1_3_23 %sel_tmp1 = icmp eq i2 %newIndex58_t, 1 %tempB_1_3_3 = select i1 %sel_tmp1, i32 %tempB_1_3_s, i32 %tempB_1_3 %sel_tmp3 = icmp eq i2 %newIndex58_t, 0 %tempB_1_3_2 = select i1 %sel_tmp3, i32 %tempB_1_3_s, i32 %tempB_1_3_3 %tempB_1_3_4 = select i1 %sel_tmp8, i32 %tempB_1_3_23, i32 %tempB_1_2_s %tempB_1_3_5 = select i1 %sel_tmp1, i32 %tempB_1_2_s, i32 %tempB_1_3_4 %tempB_1_3_6 = select i1 %sel_tmp3, i32 %tempB_1_2_s, i32 %tempB_1_3_5 %tempB_1_3_8 = select i1 %sel_tmp1, i32 %tempB_1_3_23, i32 %tempB_1_3_7 %tempB_1_3_9 = select i1 %sel_tmp3, i32 %tempB_1_3_7, i32 %tempB_1_3_8 %tempB_1_3_11 = select i1 %sel_tmp3, i32 %tempB_1_3_23, i32 %tempB_1_3_10 %tempB_1_3_14 = select i1 %sel_tmp3, i32 %tempB_1_3_23, i32 %tempB_1_3_13 %tempB_1_3_1 = select i1 %tmp_14, i32 %tempB_1_3_2, i32 %tempB_1_3_s %tempB_1_3_15 = select i1 %tmp_14, i32 %tempB_1_3_6, i32 %tempB_1_2_s %tempB_1_3_16 = select i1 %tmp_14, i32 %tempB_1_3_9, i32 %tempB_1_3_7 %tempB_1_3_17 = select i1 %tmp_14, i32 %tempB_1_3_11, i32 %tempB_1_3_10 %or_cond7 = or i1 %tmp_14, %sel_tmp3 %or_cond8 = or i1 %sel_tmp1, %sel_tmp8 %or_cond9 = or i1 %or_cond7, %or_cond8 %tempB_1_3_18 = select i1 %or_cond9, i32 %tempB_0_3_s, i32 %tempB_1_3_23 %newSel6 = select i1 %sel_tmp1, i32 %tempB_0_2_s, i32 %tempB_1_3_23 %newSel7 = select i1 %or_cond7, i32 %tempB_0_2_s, i32 %newSel6 %tempB_1_3_19 = select i1 %or_cond9, i32 %newSel7, i32 %tempB_0_2_s %newSel9 = select i1 %sel_tmp1, i32 %tempB_1_3_23, i32 %tempB_1_3_12 %tempB_1_3_20 = select i1 %or_cond7, i32 %tempB_1_3_12, i32 %newSel9 %tempB_1_3_21 = select i1 %tmp_14, i32 %tempB_1_3_13, i32 %tempB_1_3_14 %burstread_rend12 = call i32 (...)* @_ssdm_op_SpecRegionEnd([17 x i8]* @burstread_OC_region_s, i32 %burstread_rbegin1) nounwind br label %burst.rd.header5 burst.rd.end4.0: ; preds = %burst.rd.end4.0.preheader, %burst.rd.end4.1_ifconv %tempResult_1_3 = phi i32 [ %tempResult_1_3_2, %burst.rd.end4.1_ifconv ], [ undef, %burst.rd.end4.0.preheader ] %tempResult_1_2_s = phi i32 [ %tempResult_1_3_6, %burst.rd.end4.1_ifconv ], [ undef, %burst.rd.end4.0.preheader ] %tempResult_1_1_s = phi i32 [ %tempResult_1_3_10, %burst.rd.end4.1_ifconv ], [ undef, %burst.rd.end4.0.preheader ] %tempResult_1_3_7 = phi i32 [ %tempResult_1_3_8, %burst.rd.end4.1_ifconv ], [ undef, %burst.rd.end4.0.preheader ] %tempResult_0_3 = phi i32 [ %tempResult_0_3_2, %burst.rd.end4.1_ifconv ], [ undef, %burst.rd.end4.0.preheader ] %tempResult_0_2_s = phi i32 [ %tempResult_0_3_6, %burst.rd.end4.1_ifconv ], [ undef, %burst.rd.end4.0.preheader ] %tempResult_0_1_s = phi i32 [ %tempResult_0_3_10, %burst.rd.end4.1_ifconv ], [ undef, %burst.rd.end4.0.preheader ] %tempResult_0_3_7 = phi i32 [ %tempResult_0_3_8, %burst.rd.end4.1_ifconv ], [ undef, %burst.rd.end4.0.preheader ] %i = phi i4 [ %i_1_3, %burst.rd.end4.1_ifconv ], [ 0, %burst.rd.end4.0.preheader ] %exitcond = icmp eq i4 %i, -8 br i1 %exitcond, label %burst.wr.header.preheader, label %burst.rd.end4.1_ifconv burst.wr.header.preheader: ; preds = %burst.rd.end4.0 %gmem_addr_wr_req = call i1 @_ssdm_op_WriteReq.m_axi.i32P(i32* %gmem_addr, i32 8) br label %burst.wr.header burst.rd.end4.1_ifconv: ; preds = %burst.rd.end4.0 %empty_7 = call i32 (...)* @_ssdm_op_SpecLoopTripCount(i64 2, i64 2, i64 2) nounwind call void (...)* @_ssdm_op_SpecLoopName([17 x i8]* @p_str5) nounwind %tmp_2 = call i32 (...)* @_ssdm_op_SpecRegionBegin([17 x i8]* @p_str5) nounwind call void (...)* @_ssdm_op_SpecPipeline(i32 -1, i32 1, i32 1, i32 0, [1 x i8]* @p_str1) nounwind %newIndex78_t = call i2 @_ssdm_op_PartSelect.i2.i4.i32.i32(i4 %i, i32 1, i32 2) %tmp_3 = call i32 @_ssdm_op_Mux.ap_auto.4i32.i2(i32 %tempA_1_3_13, i32 %tempA_1_3_12, i32 %tempA_0_2_s, i32 %tempA_0_3_s, i2 %newIndex78_t) nounwind %tmp_4 = call i32 @_ssdm_op_Mux.ap_auto.4i32.i2(i32 %tempB_1_3_13, i32 %tempB_1_3_12, i32 %tempB_0_2_s, i32 %tempB_0_3_s, i2 %newIndex78_t) nounwind %tempResult_0_3_11 = mul nsw i32 %tmp_4, %tmp_3 %sel_tmp5 = icmp eq i2 %newIndex78_t, -2 %tempResult_0_3_4 = select i1 %sel_tmp5, i32 %tempResult_0_3, i32 %tempResult_0_3_11 %sel_tmp6 = icmp eq i2 %newIndex78_t, 0 %tempResult_0_3_1 = select i1 %sel_tmp6, i32 %tempResult_0_3, i32 %tempResult_0_3_4 %tempResult_0_3_5 = select i1 %sel_tmp5, i32 %tempResult_0_3_11, i32 %tempResult_0_2_s %tempResult_0_3_6 = select i1 %sel_tmp6, i32 %tempResult_0_2_s, i32 %tempResult_0_3_5 %tempResult_0_3_8 = select i1 %sel_tmp6, i32 %tempResult_0_3_11, i32 %tempResult_0_3_7 %empty_8 = call i32 (...)* @_ssdm_op_SpecRegionEnd([17 x i8]* @p_str5, i32 %tmp_2) nounwind %tmp_6 = call i32 @_ssdm_op_Mux.ap_auto.4i32.i2(i32 %tempA_1_3_10, i32 %tempA_1_3_7, i32 %tempA_1_2_s, i32 %tempA_1_3_s, i2 %newIndex78_t) nounwind %tmp_7 = call i32 @_ssdm_op_Mux.ap_auto.4i32.i2(i32 %tempB_1_3_10, i32 %tempB_1_3_7, i32 %tempB_1_2_s, i32 %tempB_1_3_s, i2 %newIndex78_t) nounwind %tempResult_1_3_11 = mul nsw i32 %tmp_7, %tmp_6 %tempResult_1_3_4 = select i1 %sel_tmp5, i32 %tempResult_1_3, i32 %tempResult_1_3_11 %tempResult_1_3_1 = select i1 %sel_tmp6, i32 %tempResult_1_3, i32 %tempResult_1_3_4 %tempResult_1_3_5 = select i1 %sel_tmp5, i32 %tempResult_1_3_11, i32 %tempResult_1_2_s %tempResult_1_3_6 = select i1 %sel_tmp6, i32 %tempResult_1_2_s, i32 %tempResult_1_3_5 %tempResult_1_3_8 = select i1 %sel_tmp6, i32 %tempResult_1_3_11, i32 %tempResult_1_3_7 %newIndex68_t = or i2 %newIndex78_t, 1 %tmp_8 = call i32 @_ssdm_op_Mux.ap_auto.4i32.i2(i32 %tempA_1_3_13, i32 %tempA_1_3_12, i32 %tempA_0_2_s, i32 %tempA_0_3_s, i2 %newIndex68_t) nounwind %tmp_9 = call i32 @_ssdm_op_Mux.ap_auto.4i32.i2(i32 %tempB_1_3_13, i32 %tempB_1_3_12, i32 %tempB_0_2_s, i32 %tempB_0_3_s, i2 %newIndex68_t) nounwind %tempResult_0_1 = mul nsw i32 %tmp_9, %tmp_8 %cond = icmp eq i2 %newIndex68_t, 1 %tempResult_0_3_2 = select i1 %cond, i32 %tempResult_0_3_1, i32 %tempResult_0_1 %tempResult_0_3_10 = select i1 %cond, i32 %tempResult_0_1, i32 %tempResult_0_1_s %tmp_s = call i32 @_ssdm_op_Mux.ap_auto.4i32.i2(i32 %tempA_1_3_10, i32 %tempA_1_3_7, i32 %tempA_1_2_s, i32 %tempA_1_3_s, i2 %newIndex68_t) nounwind %tmp_10 = call i32 @_ssdm_op_Mux.ap_auto.4i32.i2(i32 %tempB_1_3_10, i32 %tempB_1_3_7, i32 %tempB_1_2_s, i32 %tempB_1_3_s, i2 %newIndex68_t) nounwind %tempResult_1_1 = mul nsw i32 %tmp_10, %tmp_s %tempResult_1_3_2 = select i1 %cond, i32 %tempResult_1_3_1, i32 %tempResult_1_1 %tempResult_1_3_10 = select i1 %cond, i32 %tempResult_1_1, i32 %tempResult_1_1_s %i_1_3 = add i4 %i, 4 br label %burst.rd.end4.0 burst.wr.header: ; preds = %burst.wr.header.preheader, %burst.wr.body_ifconv %indvar1 = phi i4 [ %indvar_next1, %burst.wr.body_ifconv ], [ 0, %burst.wr.header.preheader ] %exitcond2 = icmp eq i4 %indvar1, -8 %indvar_next1 = add i4 %indvar1, 1 br i1 %exitcond2, label %memcpy.tail, label %burst.wr.body_ifconv burst.wr.body_ifconv: ; preds = %burst.wr.header %empty_9 = call i32 (...)* @_ssdm_op_SpecLoopTripCount(i64 8, i64 8, i64 8) nounwind %burstwrite_rbegin = call i32 (...)* @_ssdm_op_SpecRegionBegin([18 x i8]* @burstwrite_OC_region) nounwind call void (...)* @_ssdm_op_SpecPipeline(i32 1, i32 1, i32 1, i32 0, [1 x i8]* @p_str8) call void (...)* @_ssdm_op_SpecLoopName([29 x i8]* @memcpy_OC_result_OC_s) %tmp_15 = trunc i4 %indvar1 to i1 %newIndex30_t = call i2 @_ssdm_op_PartSelect.i2.i4.i32.i32(i4 %indvar1, i32 1, i32 2) %tmp_11 = call i32 @_ssdm_op_Mux.ap_auto.4i32.i2(i32 %tempResult_1_3_7, i32 %tempResult_1_1_s, i32 %tempResult_1_2_s, i32 %tempResult_1_3, i2 %newIndex30_t) nounwind %tmp_12 = call i32 @_ssdm_op_Mux.ap_auto.4i32.i2(i32 %tempResult_0_3_7, i32 %tempResult_0_1_s, i32 %tempResult_0_2_s, i32 %tempResult_0_3, i2 %newIndex30_t) nounwind %tempResult_load_phi = select i1 %tmp_15, i32 %tmp_11, i32 %tmp_12 call void @_ssdm_op_Write.m_axi.i32P(i32* %gmem_addr, i32 %tempResult_load_phi, i4 -1) %burstwrite_rend = call i32 (...)* @_ssdm_op_SpecRegionEnd([18 x i8]* @burstwrite_OC_region, i32 %burstwrite_rbegin) nounwind br label %burst.wr.header memcpy.tail: ; preds = %burst.wr.header %gmem_addr_wr_resp = call i1 @_ssdm_op_WriteResp.m_axi.i32P(i32* %gmem_addr) ret void } declare i4 @llvm.part.select.i4(i4, i32, i32) nounwind readnone declare i32 @llvm.part.select.i32(i32, i32, i32) nounwind readnone declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone define weak i1 @_ssdm_op_WriteResp.m_axi.i32P(i32*) { entry: ret i1 true } define weak i1 @_ssdm_op_WriteReq.m_axi.i32P(i32*, i32) { entry: ret i1 true } define weak void @_ssdm_op_Write.m_axi.i32P(i32*, i32, i4) { entry: ret void } define weak void @_ssdm_op_SpecTopModule(...) { entry: ret void } define weak i32 @_ssdm_op_SpecRegionEnd(...) { entry: ret i32 0 } define weak i32 @_ssdm_op_SpecRegionBegin(...) { entry: ret i32 0 } define weak void @_ssdm_op_SpecPipeline(...) nounwind { entry: ret void } define weak i32 @_ssdm_op_SpecLoopTripCount(...) { entry: ret i32 0 } define weak void @_ssdm_op_SpecLoopName(...) nounwind { entry: ret void } define weak void @_ssdm_op_SpecInterface(...) nounwind { entry: ret void } define weak void @_ssdm_op_SpecBitsMap(...) { entry: ret void } define weak i1 @_ssdm_op_ReadReq.m_axi.i32P(i32*, i32) { entry: ret i1 true } define weak i32 @_ssdm_op_Read.s_axilite.i32(i32) { entry: ret i32 %0 } define weak i32 @_ssdm_op_Read.m_axi.i32P(i32*) { entry: %empty = load i32* %0 ret i32 %empty } define weak i30 @_ssdm_op_PartSelect.i30.i32.i32.i32(i32, i32, i32) nounwind readnone { entry: %empty = call i32 @llvm.part.select.i32(i32 %0, i32 %1, i32 %2) %empty_10 = trunc i32 %empty to i30 ret i30 %empty_10 } define weak i2 @_ssdm_op_PartSelect.i2.i4.i32.i32(i4, i32, i32) nounwind readnone { entry: %empty = call i4 @llvm.part.select.i4(i4 %0, i32 %1, i32 %2) %empty_11 = trunc i4 %empty to i2 ret i2 %empty_11 } declare i1 @_ssdm_op_PartSelect.i1.i4.i32.i32(i4, i32, i32) nounwind readnone define weak i32 @_ssdm_op_Mux.ap_auto.4i32.i2(i32, i32, i32, i32, i2) { entry: switch i2 %4, label %case3 [ i2 0, label %case0 i2 1, label %case1 i2 -2, label %case2 ] case0: ; preds = %case3, %case2, %case1, %entry %merge = phi i32 [ %0, %entry ], [ %1, %case1 ], [ %2, %case2 ], [ %3, %case3 ] ret i32 %merge case1: ; preds = %entry br label %case0 case2: ; preds = %entry br label %case0 case3: ; preds = %entry br label %case0 } !opencl.kernels = !{!0} !hls.encrypted.func = !{} !llvm.map.gv = !{} !axi4.master.portmap = !{!7} !axi4.slave.bundlemap = !{!8, !9, !10} !0 = metadata !{null, metadata !1, metadata !2, metadata !3, metadata !4, metadata !5, metadata !6} !1 = metadata !{metadata !"kernel_arg_addr_space", i32 1, i32 1, i32 1} !2 = metadata !{metadata !"kernel_arg_access_qual", metadata !"none", metadata !"none", metadata !"none"} !3 = metadata !{metadata !"kernel_arg_type", metadata !"int*", metadata !"int*", metadata !"int*"} !4 = metadata !{metadata !"kernel_arg_type_qual", metadata !"", metadata !"", metadata !""} !5 = metadata !{metadata !"kernel_arg_name", metadata !"A", metadata !"B", metadata !"result"} !6 = metadata !{metadata !"reqd_work_group_size", i32 1, i32 1, i32 1} !7 = metadata !{metadata !"gmem", metadata !"A", metadata !"READONLY", metadata !"B", metadata !"READONLY", metadata !"result", metadata !"WRITEONLY"} !8 = metadata !{metadata !"A", metadata !""} !9 = metadata !{metadata !"B", metadata !""} !10 = metadata !{metadata !"result", metadata !""} !11 = metadata !{metadata !12} !12 = metadata !{i32 0, i32 31, metadata !13} !13 = metadata !{metadata !14, metadata !17, metadata !18} !14 = metadata !{metadata !"A", metadata !15, metadata !"int", i32 0, i32 31} !15 = metadata !{metadata !16} !16 = metadata !{i32 0, i32 7, i32 1} !17 = metadata !{metadata !"B", metadata !15, metadata !"int", i32 0, i32 31} !18 = metadata !{metadata !"result", metadata !15, metadata !"int", i32 0, i32 31}