<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<adf version="1.8">

  <little-endian/>

  <bus name="B1">
    <width>32</width>
    <guard>
      <always-true/>
    </guard>
    <guard>
      <simple-expr>
        <bool>
          <name>BOOL</name>
          <index>0</index>
        </bool>
      </simple-expr>
    </guard>
    <guard>
      <inverted-expr>
        <bool>
          <name>BOOL</name>
          <index>0</index>
        </bool>
      </inverted-expr>
    </guard>
    <guard>
      <simple-expr>
        <bool>
          <name>BOOL</name>
          <index>1</index>
        </bool>
      </simple-expr>
    </guard>
    <guard>
      <inverted-expr>
        <bool>
          <name>BOOL</name>
          <index>1</index>
        </bool>
      </inverted-expr>
    </guard>
    <segment name="seg1">
      <writes-to/>
    </segment>
    <short-immediate>
      <extension>zero</extension>
      <width>32</width>
    </short-immediate>
  </bus>

  <bus name="B1_1">
    <width>32</width>
    <guard>
      <always-true/>
    </guard>
    <guard>
      <simple-expr>
        <bool>
          <name>BOOL</name>
          <index>0</index>
        </bool>
      </simple-expr>
    </guard>
    <guard>
      <inverted-expr>
        <bool>
          <name>BOOL</name>
          <index>0</index>
        </bool>
      </inverted-expr>
    </guard>
    <guard>
      <simple-expr>
        <bool>
          <name>BOOL</name>
          <index>1</index>
        </bool>
      </simple-expr>
    </guard>
    <guard>
      <inverted-expr>
        <bool>
          <name>BOOL</name>
          <index>1</index>
        </bool>
      </inverted-expr>
    </guard>
    <segment name="seg1">
      <writes-to/>
    </segment>
    <short-immediate>
      <extension>zero</extension>
      <width>32</width>
    </short-immediate>
  </bus>

  <bus name="B1_2">
    <width>32</width>
    <guard>
      <always-true/>
    </guard>
    <guard>
      <simple-expr>
        <bool>
          <name>BOOL</name>
          <index>0</index>
        </bool>
      </simple-expr>
    </guard>
    <guard>
      <inverted-expr>
        <bool>
          <name>BOOL</name>
          <index>0</index>
        </bool>
      </inverted-expr>
    </guard>
    <guard>
      <simple-expr>
        <bool>
          <name>BOOL</name>
          <index>1</index>
        </bool>
      </simple-expr>
    </guard>
    <guard>
      <inverted-expr>
        <bool>
          <name>BOOL</name>
          <index>1</index>
        </bool>
      </inverted-expr>
    </guard>
    <segment name="seg1">
      <writes-to/>
    </segment>
    <short-immediate>
      <extension>zero</extension>
      <width>32</width>
    </short-immediate>
  </bus>

  <bus name="B1_3">
    <width>32</width>
    <guard>
      <always-true/>
    </guard>
    <guard>
      <simple-expr>
        <bool>
          <name>BOOL</name>
          <index>0</index>
        </bool>
      </simple-expr>
    </guard>
    <guard>
      <inverted-expr>
        <bool>
          <name>BOOL</name>
          <index>0</index>
        </bool>
      </inverted-expr>
    </guard>
    <guard>
      <simple-expr>
        <bool>
          <name>BOOL</name>
          <index>1</index>
        </bool>
      </simple-expr>
    </guard>
    <guard>
      <inverted-expr>
        <bool>
          <name>BOOL</name>
          <index>1</index>
        </bool>
      </inverted-expr>
    </guard>
    <segment name="seg1">
      <writes-to/>
    </segment>
    <short-immediate>
      <extension>zero</extension>
      <width>32</width>
    </short-immediate>
  </bus>

  <socket name="lsu_i1">
    <reads-from>
      <bus>B1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </reads-from>
  </socket>

  <socket name="lsu_o1">
    <writes-to>
      <bus>B1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </writes-to>
  </socket>

  <socket name="lsu_i2">
    <reads-from>
      <bus>B1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </reads-from>
  </socket>

  <socket name="RF_i1">
    <reads-from>
      <bus>B1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </reads-from>
  </socket>

  <socket name="RF_o1">
    <writes-to>
      <bus>B1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </writes-to>
  </socket>

  <socket name="bool_i1">
    <reads-from>
      <bus>B1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </reads-from>
  </socket>

  <socket name="bool_o1">
    <writes-to>
      <bus>B1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </writes-to>
  </socket>

  <socket name="gcu_i1">
    <reads-from>
      <bus>B1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </reads-from>
  </socket>

  <socket name="gcu_i2">
    <reads-from>
      <bus>B1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </reads-from>
  </socket>

  <socket name="gcu_o1">
    <writes-to>
      <bus>B1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </writes-to>
  </socket>

  <socket name="ALU_i1">
    <reads-from>
      <bus>B1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </reads-from>
  </socket>

  <socket name="ALU_i2">
    <reads-from>
      <bus>B1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </reads-from>
  </socket>

  <socket name="ALU_o1">
    <writes-to>
      <bus>B1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </writes-to>
  </socket>

  <socket name="IO_i1">
    <reads-from>
      <bus>B1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </reads-from>
  </socket>

  <socket name="LSU_1_i1">
    <reads-from>
      <bus>B1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </reads-from>
  </socket>

  <socket name="LSU_1_o1">
    <writes-to>
      <bus>B1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </writes-to>
  </socket>

  <socket name="LSU_1_i2">
    <reads-from>
      <bus>B1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </reads-from>
  </socket>

  <socket name="absf_negf_eqf_nef_ltf_lef_gef_gtf_i1">
    <reads-from>
      <bus>B1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </reads-from>
  </socket>

  <socket name="absf_negf_eqf_nef_ltf_lef_gef_gtf_o1">
    <writes-to>
      <bus>B1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </writes-to>
  </socket>

  <socket name="absf_negf_eqf_nef_ltf_lef_gef_gtf_i2">
    <reads-from>
      <bus>B1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </reads-from>
  </socket>

  <socket name="addf_subf_i1">
    <reads-from>
      <bus>B1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </reads-from>
  </socket>

  <socket name="addf_subf_i2">
    <reads-from>
      <bus>B1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </reads-from>
  </socket>

  <socket name="addf_subf_o1">
    <writes-to>
      <bus>B1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </writes-to>
  </socket>

  <socket name="cfi_cfiu_cif_cifu_i1">
    <reads-from>
      <bus>B1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </reads-from>
  </socket>

  <socket name="cfi_cfiu_cif_cifu_o1">
    <writes-to>
      <bus>B1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </writes-to>
  </socket>

  <socket name="mulf_i1">
    <reads-from>
      <bus>B1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </reads-from>
  </socket>

  <socket name="mulf_i2">
    <reads-from>
      <bus>B1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </reads-from>
  </socket>

  <socket name="mulf_o1">
    <writes-to>
      <bus>B1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </writes-to>
  </socket>

  <socket name="divf_i1">
    <reads-from>
      <bus>B1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </reads-from>
  </socket>

  <socket name="divf_i2">
    <reads-from>
      <bus>B1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </reads-from>
    <reads-from>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </reads-from>
  </socket>

  <socket name="divf_o1">
    <writes-to>
      <bus>B1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_1</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_2</bus>
      <segment>seg1</segment>
    </writes-to>
    <writes-to>
      <bus>B1_3</bus>
      <segment>seg1</segment>
    </writes-to>
  </socket>

  <function-unit name="ALU">
    <port name="in1t">
      <connects-to>ALU_i1</connects-to>
      <width>32</width>
      <triggers/>
      <sets-opcode/>
    </port>
    <port name="in2">
      <connects-to>ALU_i2</connects-to>
      <width>32</width>
    </port>
    <port name="out1">
      <connects-to>ALU_o1</connects-to>
      <width>32</width>
    </port>
    <operation>
      <name>add</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>and</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>eq</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>gt</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>gtu</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>ior</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>shl</name>
      <bind name="1">in2</bind>
      <bind name="2">in1t</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>shr</name>
      <bind name="1">in2</bind>
      <bind name="2">in1t</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>shru</name>
      <bind name="1">in2</bind>
      <bind name="2">in1t</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>sub</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>sxhw</name>
      <bind name="1">in1t</bind>
      <bind name="2">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>sxqw</name>
      <bind name="1">in1t</bind>
      <bind name="2">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>xor</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <address-space/>
  </function-unit>

  <function-unit name="IO">
    <port name="T">
      <connects-to>IO_i1</connects-to>
      <width>8</width>
      <triggers/>
      <sets-opcode/>
    </port>
    <operation>
      <name>stdout</name>
      <bind name="1">T</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
      </pipeline>
    </operation>
    <address-space/>
  </function-unit>

  <function-unit name="absf_negf_eqf_nef_ltf_lef_gef_gtf">
    <port name="in1t">
      <connects-to>absf_negf_eqf_nef_ltf_lef_gef_gtf_i1</connects-to>
      <width>32</width>
      <triggers/>
      <sets-opcode/>
    </port>
    <port name="out1">
      <connects-to>absf_negf_eqf_nef_ltf_lef_gef_gtf_o1</connects-to>
      <width>32</width>
    </port>
    <port name="in2">
      <connects-to>absf_negf_eqf_nef_ltf_lef_gef_gtf_i2</connects-to>
      <width>32</width>
    </port>
    <operation>
      <name>absf</name>
      <bind name="1">in1t</bind>
      <bind name="2">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>negf</name>
      <bind name="1">in1t</bind>
      <bind name="2">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>eqf</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>nef</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>ltf</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>lef</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>gef</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>gtf</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <address-space/>
  </function-unit>

  <function-unit name="addf_subf">
    <port name="in1t">
      <connects-to>addf_subf_i1</connects-to>
      <width>32</width>
      <triggers/>
      <sets-opcode/>
    </port>
    <port name="in2">
      <connects-to>addf_subf_i2</connects-to>
      <width>32</width>
    </port>
    <port name="out1">
      <connects-to>addf_subf_o1</connects-to>
      <width>32</width>
    </port>
    <operation>
      <name>addf</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>4</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>subf</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>4</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <address-space/>
  </function-unit>

  <function-unit name="cfi_cfiu_cif_cifu">
    <port name="in1t">
      <connects-to>cfi_cfiu_cif_cifu_i1</connects-to>
      <width>32</width>
      <triggers/>
      <sets-opcode/>
    </port>
    <port name="out1">
      <connects-to>cfi_cfiu_cif_cifu_o1</connects-to>
      <width>32</width>
    </port>
    <operation>
      <name>cfi</name>
      <bind name="1">in1t</bind>
      <bind name="2">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="2">
          <start-cycle>3</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>cfiu</name>
      <bind name="1">in1t</bind>
      <bind name="2">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="2">
          <start-cycle>3</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>cif</name>
      <bind name="1">in1t</bind>
      <bind name="2">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="2">
          <start-cycle>3</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>cifu</name>
      <bind name="1">in1t</bind>
      <bind name="2">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="2">
          <start-cycle>3</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <address-space/>
  </function-unit>

  <function-unit name="mulf">
    <port name="in1t">
      <connects-to>mulf_i1</connects-to>
      <width>32</width>
      <triggers/>
      <sets-opcode/>
    </port>
    <port name="in2">
      <connects-to>mulf_i2</connects-to>
      <width>32</width>
    </port>
    <port name="out1">
      <connects-to>mulf_o1</connects-to>
      <width>32</width>
    </port>
    <operation>
      <name>mulf</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>4</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <address-space/>
  </function-unit>

  <function-unit name="divf">
    <port name="in1t">
      <connects-to>divf_i1</connects-to>
      <width>32</width>
      <triggers/>
      <sets-opcode/>
    </port>
    <port name="in2">
      <connects-to>divf_i2</connects-to>
      <width>32</width>
    </port>
    <port name="out1">
      <connects-to>divf_o1</connects-to>
      <width>32</width>
    </port>
    <operation>
      <name>divf</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <bind name="3">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="3">
          <start-cycle>14</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <address-space/>
  </function-unit>

  <function-unit name="LSUL">
    <port name="in1t">
      <connects-to>lsu_i1</connects-to>
      <width>32</width>
      <triggers/>
      <sets-opcode/>
    </port>
    <port name="out1">
      <connects-to>lsu_o1</connects-to>
      <width>32</width>
    </port>
    <port name="in2">
      <connects-to>lsu_i2</connects-to>
      <width>32</width>
    </port>
    <operation>
      <name>ld32</name>
      <bind name="1">in1t</bind>
      <bind name="2">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="2">
          <start-cycle>2</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>ld8</name>
      <bind name="1">in1t</bind>
      <bind name="2">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="2">
          <start-cycle>2</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>ld16</name>
      <bind name="1">in1t</bind>
      <bind name="2">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="2">
          <start-cycle>2</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>st32</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
      </pipeline>
    </operation>
    <operation>
      <name>st8</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
      </pipeline>
    </operation>
    <operation>
      <name>st16</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
      </pipeline>
    </operation>
    <operation>
      <name>ldu8</name>
      <bind name="1">in1t</bind>
      <bind name="2">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="2">
          <start-cycle>2</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>ldu16</name>
      <bind name="1">in1t</bind>
      <bind name="2">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="2">
          <start-cycle>2</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <address-space>local</address-space>
  </function-unit>

  <function-unit name="LSUG">
    <port name="in1t">
      <connects-to>LSU_1_i1</connects-to>
      <width>32</width>
      <triggers/>
      <sets-opcode/>
    </port>
    <port name="out1">
      <connects-to>LSU_1_o1</connects-to>
      <width>32</width>
    </port>
    <port name="in2">
      <connects-to>LSU_1_i2</connects-to>
      <width>32</width>
    </port>
    <operation>
      <name>ld32</name>
      <bind name="1">in1t</bind>
      <bind name="2">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="2">
          <start-cycle>2</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>ld8</name>
      <bind name="1">in1t</bind>
      <bind name="2">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="2">
          <start-cycle>2</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>ld16</name>
      <bind name="1">in1t</bind>
      <bind name="2">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="2">
          <start-cycle>2</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>st32</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
      </pipeline>
    </operation>
    <operation>
      <name>st8</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
      </pipeline>
    </operation>
    <operation>
      <name>st16</name>
      <bind name="1">in1t</bind>
      <bind name="2">in2</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <reads name="2">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
      </pipeline>
    </operation>
    <operation>
      <name>ldu8</name>
      <bind name="1">in1t</bind>
      <bind name="2">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="2">
          <start-cycle>2</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <operation>
      <name>ldu16</name>
      <bind name="1">in1t</bind>
      <bind name="2">out1</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
        <writes name="2">
          <start-cycle>2</start-cycle>
          <cycles>1</cycles>
        </writes>
      </pipeline>
    </operation>
    <address-space>global</address-space>
  </function-unit>

  <register-file name="RF">
    <type>normal</type>
    <size>5</size>
    <width>32</width>
    <max-reads>1</max-reads>
    <max-writes>1</max-writes>
    <port name="wr">
      <connects-to>RF_i1</connects-to>
    </port>
    <port name="rd">
      <connects-to>RF_o1</connects-to>
    </port>
  </register-file>

  <register-file name="BOOL">
    <type>normal</type>
    <size>2</size>
    <width>1</width>
    <max-reads>1</max-reads>
    <max-writes>1</max-writes>
    <port name="wr">
      <connects-to>bool_i1</connects-to>
    </port>
    <port name="rd">
      <connects-to>bool_o1</connects-to>
    </port>
  </register-file>

  <address-space name="local">
    <width>8</width>
    <min-address>0</min-address>
    <max-address>65535</max-address>
    <numerical-id>0</numerical-id>
    <numerical-id>3</numerical-id>
  </address-space>

  <address-space name="instructions">
    <width>8</width>
    <min-address>0</min-address>
    <max-address>1048576</max-address>
  </address-space>

  <address-space name="global">
    <width>8</width>
    <min-address>0</min-address>
    <max-address>268435455</max-address>
    <numerical-id>1</numerical-id>
    <numerical-id>2</numerical-id>
  </address-space>

  <global-control-unit name="gcu">
    <port name="pc">
      <connects-to>gcu_i1</connects-to>
      <width>32</width>
      <triggers/>
      <sets-opcode/>
    </port>
    <special-port name="ra">
      <connects-to>gcu_i2</connects-to>
      <connects-to>gcu_o1</connects-to>
      <width>32</width>
    </special-port>
    <return-address>ra</return-address>
    <ctrl-operation>
      <name>jump</name>
      <bind name="1">pc</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
      </pipeline>
    </ctrl-operation>
    <ctrl-operation>
      <name>call</name>
      <bind name="1">pc</bind>
      <pipeline>
        <reads name="1">
          <start-cycle>0</start-cycle>
          <cycles>1</cycles>
        </reads>
      </pipeline>
    </ctrl-operation>
    <address-space>instructions</address-space>
    <delay-slots>3</delay-slots>
    <guard-latency>1</guard-latency>
  </global-control-unit>

</adf>
