title: Selecting appropriate ARM -mfpu option in gcc based on CPU features
body: <p>My CPU has following CPU features</p>
  
  <pre><code>cat /proc/cpuinfo 
  Processor       : ARMv7 Processor rev 4 (v7l)
  processor       : 0
  BogoMIPS        : 1192.96
  
  processor       : 1
  BogoMIPS        : 1197.05
  
  Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt 
  CPU implementer : 0x41
  CPU architecture: 7
  CPU variant     : 0x0
  CPU part        : 0xc07
  CPU revision    : 4
  
  Hardware        : sun7i
  Revision        : 0000
  </code></pre>
  
  <p>And gcc sets</p>
  
  <pre><code>-march=armv7ve -mfloat-abi=hard -mfpu=vfpv3-d16 -meabi=5
  </code></pre>
  
  <p>options for</p>
  
  <pre><code>cat main.c
  #include &lt;stdio.h&gt;
  
  void main()
  {
      printf("Hello World!\n");
  }
  </code></pre>
  
  <p>compiled with</p>
  
  <pre><code>gcc -march=native -mtune=native -Q -v main.c
  </code></pre>
  
  <p>Isn't <code>neon-vfpv4</code>, which seems to be supported by CPU features, is superior to <code>vfpv3-d16</code>, which gcc sets?</p>
  
  <p>I got only vague explanation of what <code>vfpv3-d16</code> is from <a href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0491c/CIHCJIFE.html" rel="noreferrer">ARM's documentation</a> and nothing on <code>neon-vfpv4</code>.</p>
  
  <p>I'm using gcc 4.9.1</p>