<ProcUnitModel version = "0.0.1">
<ProcUnit type="DCT32">
<ExecModel sched="LIST_SCHED">
<Operation name="ret">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="reg" mode="RdReg"/>
</StgRef>
</Operation>
<Operation name="malloc"> <!-- allocate memory from system heap -->
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="reg" mode="WrReg"/>
</StgRef>
</Operation>
<Operation name="free"> <!-- returns memory back to system heap -->
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="reg" mode="WrReg"/>
</StgRef>
</Operation>
<Operation name="alloca"> <!-- allocate memory from current stack frame -->
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="reg" mode="WrReg"/>
</StgRef>
</Operation>
<Operation name="load"> <!-- read from memory -->
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="mem-Port" mode="RdPort"/>
</StgRef>
</Operation>
<Operation name="store"> <!-- write to memory -->
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="mem-Port" mode="WrPort"/>
</StgRef>
</Operation>
<Operation name="call"> <!-- function call -->
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="reg" mode="RdReg"/>
</StgRef>
</Operation>
<Operation name="br">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="add" var_type="int">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="add" var_type="float">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="FP-ALU" mode="FPAdd"/>
</StgRef>
</Operation>
<Operation name="sub" var_type="int">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="sub" var_type="float">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="FP-ALU" mode="FPAdd"/>
</StgRef>
</Operation>
<Operation name="mul" var_type="int">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-Mult/Div" mode="IntMult"/>
</StgRef>
</Operation>
<Operation name="mul" var_type="float">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="FP-Mult/Div" mode="FPMult"/>
</StgRef>
</Operation>
<Operation name="udiv">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-Mult/Div" mode="IntDiv"/>
</StgRef>
</Operation>
<Operation name="sdiv">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-Mult/Div" mode="IntDiv"/>
</StgRef>
</Operation>
<Operation name="fdiv">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="FP-Mult/Div" mode="FPDiv"/>
</StgRef>
</Operation>
<Operation name="urem"> <!-- returns remainder of a division -->
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-Mult/Div" mode="IntDiv"/>
</StgRef>
</Operation>
<Operation name="srem">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-Mult/Div" mode="IntDiv"/>
</StgRef>
</Operation>
<Operation name="frem">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="FP-Mult/Div" mode="FPDiv"/>
</StgRef>
</Operation>
<Operation name="shl"> <!-- shift -->
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="shr"> <!-- shift -->
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="lshr"> <!-- logical shift -->
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="logic-SHIFT" mode="shift"/>
</StgRef>
</Operation>
<Operation name="ashr"> <!-- arithmetic shift -->
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="and">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="or">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="xor">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="fptoui">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="FP-ALU" mode="FPCvt"/>
</StgRef>
</Operation>
<Operation name="fptosi">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="FP-ALU" mode="FPCvt"/>
</StgRef>
</Operation>
<Operation name="uitofp">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="FP-ALU" mode="FPCvt"/>
</StgRef>
</Operation>
<Operation name="sitofp">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="FP-ALU" mode="FPCvt"/>
</StgRef>
</Operation>
<Operation name="icmp">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="fcmp">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="FP-ALU" mode="FPCmp"/>
</StgRef>
</Operation>
<Operation name="seteq">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="setne">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="setle">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="setge">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="setlt">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="setgt">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="cast" var_type="int">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="cast" var_type="float">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="FP-ALU" mode="FPCvt"/>
</StgRef>
</Operation>
<Operation name="getelementptr">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="phi">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="unreachable">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="invoke">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="unwind">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="switch">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="select">
<StgRef name = "SINGLE" flags = "COMMIT DEMAND">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
</ExecModel>
<DPModel>
<Pipeline name = "default" br_pred_policy = "TAKEN" br_pred_hit_ratio = "100.00" br_penalty = "0">
<Stage name = "SINGLE">
<FURef type = "reg" quantity = "32"/>
<FURef type = "mem-Port" quantity = "1"/>
<FURef type = "int-ALU" quantity = "1"/>
<FURef type = "int-Mult/Div" quantity = "1"/>
<FURef type = "logic-SHIFT" quantity = "3"/>
<FURef type = "FP-ALU" quantity = "1"/>
<FURef type = "FP-Mult/Div" quantity = "1"/>
</Stage>
</Pipeline>
<FuncUnit type="reg" quantity="32">
<OperMode mode="RdReg" oplat="1"/>
<OperMode mode="WrReg" oplat="1"/>
</FuncUnit>
<FuncUnit type="mem-Port" quantity="1">
<OperMode mode="RdPort" oplat="1"/>
<OperMode mode="WrPort" oplat="1"/>
</FuncUnit>
<FuncUnit type="int-ALU" quantity="1">
<OperMode mode="IntALU" oplat="1"/>
</FuncUnit>
<FuncUnit type="int-Mult/Div" quantity="1">
<OperMode mode="IntMult" oplat="3"/>
<OperMode mode="IntDiv" oplat="20"/>
</FuncUnit>
<FuncUnit type="logic-SHIFT" quantity="3">
<OperMode mode="shift" oplat="1"/>
</FuncUnit>
<FuncUnit type="FP-ALU" quantity="1">
<OperMode mode="FPAdd" oplat="2"/>
<OperMode mode="FPCmp" oplat="2"/>
<OperMode mode="FPCvt" oplat="2"/>
</FuncUnit>
<FuncUnit type="FP-Mult/Div" quantity="1">
<OperMode mode="FPMult" oplat="4"/>
<OperMode mode="FPDiv" oplat="12"/>
<OperMode mode="FPSqrt" oplat="24"/>
</FuncUnit>
</DPModel>
</ProcUnit>
</ProcUnitModel>