<stg><name>sample_iterator_next</name>


<trans_list>

<trans id="31" from="1" to="2">
<condition id="4">
<or_exp><and_exp></and_exp></or_exp>
</condition>
</trans>

<trans id="32" from="2" to="3">
<condition id="5">
<or_exp><and_exp></and_exp></or_exp>
</condition>
</trans>

<trans id="33" from="3" to="4">
<condition id="6">
<or_exp><and_exp></and_exp></or_exp>
</condition>
</trans>
</trans_list>



<state_list>

<state id="1" st_id="1">

<operation id="5" st_id="1" stage="1" lat="1">
<core>NULL</core>
<MemPortIdVec></MemPortIdVec>
<condition id="0">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="11" bw="16" op_0_bw="16" op_1_bw="16">
<![CDATA[
:7  %i_index_read = call i16 @_ssdm_op_Read.ap_auto.i16(i16 %i_index)

]]></node>
<StgValue><ssdm name="i_index_read"/></StgValue>
</operation>

<operation id="6" st_id="1" stage="1" lat="1">
<core>NULL</core>
<MemPortIdVec></MemPortIdVec>
<condition id="0">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="13" bw="64" op_0_bw="16">
<![CDATA[
:9  %tmp_s = zext i16 %i_index_read to i64

]]></node>
<StgValue><ssdm name="tmp_s"/></StgValue>
</operation>

<operation id="7" st_id="1" stage="1" lat="1">
<core>NULL</core>
<MemPortIdVec></MemPortIdVec>
<condition id="0">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="14" bw="56" op_0_bw="56" op_1_bw="64">
<![CDATA[
:10  %indices_addr = getelementptr i56* %indices, i64 %tmp_s

]]></node>
<StgValue><ssdm name="indices_addr"/></StgValue>
</operation>

<operation id="8" st_id="1" stage="2" lat="2">
<core>PLB46M</core>
<MemPortIdVec></MemPortIdVec>
<condition id="0">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="15" bw="1" op_0_bw="1" op_1_bw="56" op_2_bw="32">
<![CDATA[
:11  %indices_load_req = call i1 @_ssdm_op_ReadReq.ap_bus.i56P(i56* %indices_addr, i32 1)

]]></node>
<StgValue><ssdm name="indices_load_req"/></StgValue>
</operation>
</state>

<state id="2" st_id="2">

<operation id="9" st_id="2" stage="1" lat="2">
<core>PLB46M</core>
<MemPortIdVec></MemPortIdVec>
<condition id="1">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="15" bw="1" op_0_bw="1" op_1_bw="56" op_2_bw="32">
<![CDATA[
:11  %indices_load_req = call i1 @_ssdm_op_ReadReq.ap_bus.i56P(i56* %indices_addr, i32 1)

]]></node>
<StgValue><ssdm name="indices_load_req"/></StgValue>
</operation>
</state>

<state id="3" st_id="3">

<operation id="10" st_id="3" stage="1" lat="1">
<core>PLB46M</core>
<MemPortIdVec></MemPortIdVec>
<condition id="2">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="16" bw="56" op_0_bw="56" op_1_bw="56">
<![CDATA[
:12  %indices_addr_read = call i56 @_ssdm_op_Read.ap_bus.i56P(i56* %indices_addr)

]]></node>
<StgValue><ssdm name="indices_addr_read"/></StgValue>
</operation>

<operation id="11" st_id="3" stage="1" lat="1">
<core>NULL</core>
<MemPortIdVec></MemPortIdVec>
<condition id="2">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="17" bw="16" op_0_bw="16" op_1_bw="56" op_2_bw="32" op_3_bw="32">
<![CDATA[
:13  %indices_samples_load_new5 = call i16 @_ssdm_op_PartSelect.i16.i56.i32.i32(i56 %indices_addr_read, i32 32, i32 47)

]]></node>
<StgValue><ssdm name="indices_samples_load_new5"/></StgValue>
</operation>
</state>

<state id="4" st_id="4">

<operation id="12" st_id="4" stage="1" lat="1">
<core>NULL</core>
<MemPortIdVec></MemPortIdVec>
<condition id="3">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="4" bw="0" op_0_bw="0" op_1_bw="56" op_2_bw="8" op_3_bw="8" op_4_bw="8" op_5_bw="8" op_6_bw="8" op_7_bw="8">
<![CDATA[
:0  call void (...)* @_ssdm_op_SpecIFCore(i56* %indices, [1 x i8]* @p_str1129, [7 x i8]* @p_str38, [1 x i8]* @p_str1129, [1 x i8]* @p_str1129, [1 x i8]* @p_str1129, [1 x i8]* @p_str1129)

]]></node>
<StgValue><ssdm name=""/></StgValue>
</operation>

<operation id="13" st_id="4" stage="1" lat="1">
<core>NULL</core>
<MemPortIdVec></MemPortIdVec>
<condition id="3">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="5" bw="0" op_0_bw="0" op_1_bw="56" op_2_bw="8" op_3_bw="8" op_4_bw="8" op_5_bw="8" op_6_bw="8" op_7_bw="8">
<![CDATA[
:1  call void (...)* @_ssdm_op_SpecIFCore(i56* %indices, [1 x i8]* @p_str1129, [7 x i8]* @p_str38, [1 x i8]* @p_str1129, [1 x i8]* @p_str1129, [1 x i8]* @p_str1129, [1 x i8]* @p_str1129)

]]></node>
<StgValue><ssdm name=""/></StgValue>
</operation>

<operation id="14" st_id="4" stage="1" lat="1">
<core>NULL</core>
<MemPortIdVec></MemPortIdVec>
<condition id="3">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="6" bw="0" op_0_bw="0" op_1_bw="56" op_2_bw="8" op_3_bw="32" op_4_bw="32" op_5_bw="32" op_6_bw="32" op_7_bw="8" op_8_bw="8" op_9_bw="8">
<![CDATA[
:2  call void (...)* @_ssdm_op_SpecBus(i56* %indices, [7 x i8]* @p_str35, i32 0, i32 0, i32 0, i32 10, [1 x i8]* @p_str1129, [1 x i8]* @p_str1129, [1 x i8]* @p_str1129)

]]></node>
<StgValue><ssdm name=""/></StgValue>
</operation>

<operation id="15" st_id="4" stage="1" lat="1">
<core>NULL</core>
<MemPortIdVec></MemPortIdVec>
<condition id="3">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="7" bw="0" op_0_bw="0" op_1_bw="56" op_2_bw="8" op_3_bw="32" op_4_bw="32" op_5_bw="32" op_6_bw="32" op_7_bw="8" op_8_bw="8" op_9_bw="8">
<![CDATA[
:3  call void (...)* @_ssdm_op_SpecBus(i56* %indices, [7 x i8]* @p_str35, i32 0, i32 0, i32 0, i32 10, [1 x i8]* @p_str1129, [1 x i8]* @p_str1129, [1 x i8]* @p_str1129)

]]></node>
<StgValue><ssdm name=""/></StgValue>
</operation>

<operation id="16" st_id="4" stage="1" lat="1">
<core>NULL</core>
<MemPortIdVec></MemPortIdVec>
<condition id="3">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="8" bw="0" op_0_bw="0" op_1_bw="56" op_2_bw="8" op_3_bw="8" op_4_bw="8" op_5_bw="8" op_6_bw="8" op_7_bw="8">
<![CDATA[
:4  call void (...)* @_ssdm_op_SpecIFCore(i56* %indices, [1 x i8]* @p_str1129, [7 x i8]* @p_str38, [1 x i8]* @p_str1129, [1 x i8]* @p_str1129, [1 x i8]* @p_str1129, [1 x i8]* @p_str1129)

]]></node>
<StgValue><ssdm name=""/></StgValue>
</operation>

<operation id="17" st_id="4" stage="1" lat="1">
<core>NULL</core>
<MemPortIdVec></MemPortIdVec>
<condition id="3">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="9" bw="0" op_0_bw="0" op_1_bw="56" op_2_bw="8" op_3_bw="32" op_4_bw="32" op_5_bw="32" op_6_bw="32" op_7_bw="8" op_8_bw="8" op_9_bw="8">
<![CDATA[
:5  call void (...)* @_ssdm_op_SpecBus(i56* %indices, [7 x i8]* @p_str35, i32 0, i32 0, i32 0, i32 10, [1 x i8]* @p_str1129, [1 x i8]* @p_str1129, [1 x i8]* @p_str1129)

]]></node>
<StgValue><ssdm name=""/></StgValue>
</operation>

<operation id="18" st_id="4" stage="1" lat="1">
<core>NULL</core>
<MemPortIdVec></MemPortIdVec>
<condition id="3">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="10" bw="16" op_0_bw="16" op_1_bw="16">
<![CDATA[
:6  %i_sample_read = call i16 @_ssdm_op_Read.ap_auto.i16(i16 %i_sample)

]]></node>
<StgValue><ssdm name="i_sample_read"/></StgValue>
</operation>

<operation id="19" st_id="4" stage="1" lat="1">
<core>NULL</core>
<MemPortIdVec></MemPortIdVec>
<condition id="3">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="12" bw="18" op_0_bw="16">
<![CDATA[
:8  %tmp_cast = zext i16 %i_sample_read to i18

]]></node>
<StgValue><ssdm name="tmp_cast"/></StgValue>
</operation>

<operation id="20" st_id="4" stage="1" lat="1">
<core>NULL</core>
<MemPortIdVec></MemPortIdVec>
<condition id="3">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="18" bw="17" op_0_bw="16">
<![CDATA[
:14  %tmp_9_cast = zext i16 %indices_samples_load_new5 to i17

]]></node>
<StgValue><ssdm name="tmp_9_cast"/></StgValue>
</operation>

<operation id="21" st_id="4" stage="1" lat="1">
<core>AddSub</core>
<MemPortIdVec></MemPortIdVec>
<condition id="3">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="19" bw="17" op_0_bw="17" op_1_bw="17">
<![CDATA[
:15  %tmp_4 = add i17 %tmp_9_cast, -1

]]></node>
<StgValue><ssdm name="tmp_4"/></StgValue>
</operation>

<operation id="22" st_id="4" stage="1" lat="1">
<core>NULL</core>
<MemPortIdVec></MemPortIdVec>
<condition id="3">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="20" bw="18" op_0_bw="17">
<![CDATA[
:16  %tmp_10_cast = sext i17 %tmp_4 to i18

]]></node>
<StgValue><ssdm name="tmp_10_cast"/></StgValue>
</operation>

<operation id="23" st_id="4" stage="1" lat="1">
<core>Cmp</core>
<MemPortIdVec></MemPortIdVec>
<condition id="3">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="21" bw="1" op_0_bw="18" op_1_bw="18">
<![CDATA[
:17  %tmp_5 = icmp slt i18 %tmp_cast, %tmp_10_cast

]]></node>
<StgValue><ssdm name="tmp_5"/></StgValue>
</operation>

<operation id="24" st_id="4" stage="1" lat="1">
<core>AddSub</core>
<MemPortIdVec></MemPortIdVec>
<condition id="3">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="22" bw="16" op_0_bw="16" op_1_bw="16">
<![CDATA[
:18  %tmp_6 = add i16 %i_index_read, 1

]]></node>
<StgValue><ssdm name="tmp_6"/></StgValue>
</operation>

<operation id="25" st_id="4" stage="1" lat="1">
<core>AddSub</core>
<MemPortIdVec></MemPortIdVec>
<condition id="3">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="23" bw="16" op_0_bw="16" op_1_bw="16">
<![CDATA[
:19  %tmp_7 = add i16 %i_sample_read, 1

]]></node>
<StgValue><ssdm name="tmp_7"/></StgValue>
</operation>

<operation id="26" st_id="4" stage="1" lat="1">
<core>Sel</core>
<MemPortIdVec></MemPortIdVec>
<condition id="3">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="24" bw="16" op_0_bw="1" op_1_bw="16" op_2_bw="16">
<![CDATA[
:20  %agg_result_sample_write_assign = select i1 %tmp_5, i16 %tmp_7, i16 0

]]></node>
<StgValue><ssdm name="agg_result_sample_write_assign"/></StgValue>
</operation>

<operation id="27" st_id="4" stage="1" lat="1">
<core>Sel</core>
<MemPortIdVec></MemPortIdVec>
<condition id="3">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="25" bw="16" op_0_bw="1" op_1_bw="16" op_2_bw="16">
<![CDATA[
:21  %agg_result_index_write_assign = select i1 %tmp_5, i16 %i_index_read, i16 %tmp_6

]]></node>
<StgValue><ssdm name="agg_result_index_write_assign"/></StgValue>
</operation>

<operation id="28" st_id="4" stage="1" lat="1">
<core>NULL</core>
<MemPortIdVec></MemPortIdVec>
<condition id="3">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="26" bw="32" op_0_bw="32" op_1_bw="16">
<![CDATA[
:22  %mrv = insertvalue { i16, i16 } undef, i16 %agg_result_index_write_assign, 0

]]></node>
<StgValue><ssdm name="mrv"/></StgValue>
</operation>

<operation id="29" st_id="4" stage="1" lat="1">
<core>NULL</core>
<MemPortIdVec></MemPortIdVec>
<condition id="3">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="27" bw="32" op_0_bw="32" op_1_bw="16">
<![CDATA[
:23  %mrv_1 = insertvalue { i16, i16 } %mrv, i16 %agg_result_sample_write_assign, 1

]]></node>
<StgValue><ssdm name="mrv_1"/></StgValue>
</operation>

<operation id="30" st_id="4" stage="1" lat="1">
<core>NULL</core>
<MemPortIdVec></MemPortIdVec>
<condition id="3">
<or_exp><and_exp></and_exp></or_exp>
</condition>

<node id="28" bw="0" op_0_bw="32">
<![CDATA[
:24  ret { i16, i16 } %mrv_1

]]></node>
<StgValue><ssdm name=""/></StgValue>
</operation>
</state>
</state_list>


<ports>
</ports>


<dataflows>
</dataflows>


</stg>
