Is this for official Vita development? If so, you could ask on Sony's private developer site. They'll get back to you with an authoritative answer.
I think I will have to do that, but I won’t be able to have an account made until Monday, so I was hoping someone here knew.
As far as I know, NEON uses its own float registers.
Lets see what ARM has to say about it: http://www.arm.com/products/processors/technologies/neon.php
- Registers are considered as vectors of elements of the same data type
- Data types can be: signed/unsigned 8-bit, 16-bit, 32-bit, 64-bit, single precision floating point
- Instructions perform the same operation in all lanes
Thank you TheChubu but there is too much fine print in the documents. For example, yes, it can treat all types, including floats, as vectors, but it doesn’t mention that the registers for integers and floats are different and can be handled by a VFP co-processor (for example) which will ultimately end up determining floating-point performance.
It mentions that what happens happens in all lanes, but does not specify parallelism.
It also says it can execute with up to 64 bits at a time, but does not say that 2 32-bit floats will therefore be run in parallel. It simply means that it has a limit, and nothing more.
So basically the documents are simply not that useful for this question. You can’t infer anything from them except exactly what is written, and it almost seems as if they are specifically trying to be abstract on this issue and use words that lead many to believe parallelism is implied.
A perfect example is on Nintendo 3DS where I start writing VFP functions by pushing and popping all registers just for ease in coding, then remove the useless pushes and pops afterwards.
You can push and pop multiple registers at a time:
What they don’t tell you is that just because it is pushing multiple registers with a single instruction, each register takes an extra cycle. In other words the above example takes twice as long as:
I’ve benchmarked it. SIMD doesn’t imply parallelism.