<?xml version="1.0" encoding="UTF-8"?>

<compiler_spec>
  <global>
    <range space="ram"/>
  </global>
  <stackpointer register="r1" space="ram"/>
  <default_proto>
    <prototype name="__stdcall" extrapop="0" stackshift="0">
      <input pointermax="8">
        <pentry minsize="1" maxsize="8" metatype="float" extension="float">
          <register name="f1"/>
        </pentry>
        <pentry minsize="1" maxsize="8" metatype="float" extension="float">
          <register name="f2"/>
        </pentry>
        <pentry minsize="1" maxsize="8" metatype="float" extension="float">
          <register name="f3"/>
        </pentry>
        <pentry minsize="1" maxsize="8" metatype="float" extension="float">
          <register name="f4"/>
        </pentry>
        <pentry minsize="1" maxsize="8" metatype="float" extension="float">
          <register name="f5"/>
        </pentry>
        <pentry minsize="1" maxsize="8" metatype="float" extension="float">
          <register name="f6"/>
        </pentry>
        <pentry minsize="1" maxsize="8" metatype="float" extension="float">
          <register name="f7"/>
        </pentry>
        <pentry minsize="1" maxsize="8" metatype="float" extension="float">
          <register name="f8"/>
        </pentry>
        <pentry minsize="1" maxsize="4">
          <register name="r3"/>
        </pentry>
        <pentry minsize="1" maxsize="4">
          <register name="r4"/>
        </pentry>
        <pentry minsize="1" maxsize="4">
          <register name="r5"/>
        </pentry>
        <pentry minsize="1" maxsize="4">
          <register name="r6"/>
        </pentry>
        <pentry minsize="1" maxsize="4">
          <register name="r7"/>
        </pentry>
        <pentry minsize="1" maxsize="4">
          <register name="r8"/>
        </pentry>
        <pentry minsize="1" maxsize="4">
          <register name="r9"/>
        </pentry>
        <pentry minsize="1" maxsize="4">
          <register name="r10"/>
        </pentry>
        <pentry minsize="1" maxsize="500" align="4">
          <addr offset="8" space="stack"/>
        </pentry>
        <rule>
          <datatype name="float"/>
          <consume storage="float"/>
        </rule>
        <rule>
          <datatype name="float"/>
          <goto_stack/>
        </rule>
        <rule>
          <datatype name="struct"/>
          <convert_to_ptr/>
        </rule>
        <rule>
          <datatype name="union"/>
          <convert_to_ptr/>
        </rule>
        <rule>
          <datatype name="any"/>
          <join align="true"/>
        </rule>
      </input>
      <output>
        <pentry minsize="1" maxsize="8" metatype="float" extension="float">
          <register name="f1"/>
        </pentry>
        <pentry minsize="1" maxsize="4" extension="inttype">
          <register name="r3"/>
        </pentry>
        <pentry minsize="1" maxsize="4" extension="inttype">
          <register name="r4"/>
        </pentry>
        <rule>
          <datatype name="float"/>
          <consume storage="float"/>
        </rule>
        <rule>
          <datatype name="any"/>
          <join/>
        </rule>
      </output>
      <unaffected>
        <register name="r1"/>  <!-- stack pointer -->
        <register name="r2"/>  <!-- _SDA2_BASE_ -->
      	<register name="r13"/> <!-- _SDA_BASE_  -->
        <register name="r14"/>
        <register name="r15"/>
        <register name="r16"/>
        <register name="r17"/>
        <register name="r18"/>
        <register name="r19"/>
        <register name="r20"/>
        <register name="r21"/>
        <register name="r22"/>
        <register name="r23"/>
        <register name="r24"/>
        <register name="r25"/>
        <register name="r26"/>
        <register name="r27"/>
        <register name="r28"/>
        <register name="r29"/>
        <register name="r30"/>
        <register name="r31"/>
        <register name="f14"/>
        <register name="f15"/>
        <register name="f16"/>
        <register name="f17"/>
        <register name="f18"/>
        <register name="f19"/>
        <register name="f20"/>
        <register name="f21"/>
        <register name="f22"/>
        <register name="f23"/>
        <register name="f24"/>
        <register name="f25"/>
        <register name="f26"/>
        <register name="f27"/>
        <register name="f28"/>
        <register name="f29"/>
        <register name="f30"/>
        <register name="f31"/>
        <register name="cr2"/>
        <register name="cr3"/>
        <register name="cr4"/>
      </unaffected>
      <killedbycall>
        <register name="r3"/>
        <register name="r4"/>
        <register name="f1"/>
      </killedbycall>
    </prototype>
  </default_proto>

  <callfixup name="get_pc_thunk_lr">
    <target name="__get_pc_thunk_lr"/>
    <pcode>
      <body><![CDATA[
      LR = inst_dest + 4;
      ]]></body>
    </pcode>
  </callfixup>

</compiler_spec>
