title: Does ARM sit idle while NEON is doing its operations?
body: <p>Might look similar to: <a href="https://stackoverflow.com/questions/12277484/arm-and-neon-can-work-in-parallel">ARM and NEON can work in parallel?</a>, but its not, I have some other issue ( may be problem with my understanding):</p>
  
  <p>In the protocol stack, while we compute checksum, that is done on the GPP, I’m handing over that task now to NEON as part of a function:</p>
  
  <p>Here is the checksum function that I have written as a part of NEON, posted in Stack Overflow: <a href="https://stackoverflow.com/questions/12066964/checksum-code-implementation-for-neon-in-intrinsics">Checksum code implementation for Neon in Intrinsics</a></p>
  
  <p>Now, suppose from linux this function is called,</p>
  
  <pre><code>ip_csum(){
    …
    …
    csum = do_csum(); //function call from arm
    …
    …
  }
  
  
  do_csum(){
    …
    …
    //NEON optimised code
    …
    …
    returns the final checksum to ip_csum/linux/ARM
  }
  </code></pre>
  
  <p>in this case.. what happens to ARM when NEON is doing the calculations? does ARM sit idle? or it moves on with other operations?</p>
  
  <p>as you can see do_csum is called and we are waiting on that result ( or that is what it looks like)..</p>
  
  <p><strong>NOTE:</strong></p>
  
  <ol>
  <li>Speaking in terms of cortex-a8</li>
  <li>do_csum as you can see from the link is coded with intrinsics</li>
  <li>compilation using gnu tool-chain</li>
  <li>Will be good if you also take Multi-threading or any other concept involved or comes into picture when these inter operations happen.</li>
  </ol>
  
  <p><strong>Questions:</strong></p>
  
  <ol>
  <li>Does ARM sit idle while NEON is doing its operations? ( in this particular case)</li>
  <li>Or does it shelve this current ip_csum related code, and take up another process/thread till NEON is done? ( I'm almost dumb as to what happens here)</li>
  <li>if its sitting idle, how can we make ARM work on something else till NEON is done?</li>
  </ol>