This is an archive of the discontinued LLVM Phabricator instance.

ARM-BE: test files for vector argument passing
ClosedPublic

Authored by cpirker on May 14 2014, 8:35 AM.

Details

Reviewers
jmolloy
Summary

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

Diff Detail

Event Timeline

cpirker updated this revision to Diff 9392.May 14 2014, 8:35 AM
cpirker retitled this revision from to ARM-BE: test files for vector argument passing.
cpirker updated this object.
cpirker edited the test plan for this revision. (Show Details)
cpirker added a subscriber: Unknown Object (MLST).
jmolloy accepted this revision.May 14 2014, 9:59 AM
jmolloy added a reviewer: jmolloy.
jmolloy added a subscriber: jmolloy.

Hi Christian,

Thanks. It's good that the testing found at least one bug, so I don't feel unjustified in asking for it :)

It all looks good. I really hope you didn't have to go through all that by hand...

Cheers,

James

lib/Target/ARM/ARMISelLowering.cpp
3968

Ah ha! I suspected such testing was necessary to weed out more bugs :)

This revision is now accepted and ready to land.May 14 2014, 9:59 AM
cpirker closed this revision.May 14 2014, 10:08 AM

I committed this patch as rL208793.