Hi all,
According to ARM pcs are vector arguments passed in a format of integer types.
In little endian both integer and vector types are of the same bit representation.
However in big endian any vector argument need to be converted in an integer type (and vice versa) when passing as procedure argument.
Such conversion between vector and integer data types is implemented by VREV instructions.
You can find a deep discussion on neon vector types (although for AArch64, but essentially valid for ARM32 as well):
http://llvm.org/docs/BigEndianNEON.html
This patch provides tests for caller and callee processing of vector arguments for both soft and hard float ABIs.
Please review.
Thanks,
Christian
Ah ha! I suspected such testing was necessary to weed out more bugs :)