ABISysV_arm64: compute return value for large vectors correctly
authorPavel Labath <labath@google.com>
Fri, 5 May 2017 10:50:02 +0000 (10:50 +0000)
committerPavel Labath <labath@google.com>
Fri, 5 May 2017 10:50:02 +0000 (10:50 +0000)
commit3559f20f17f7fa85a9b6c1d7dc8be3b3b6103d81
tree62c70a6915ee88c97fc10cc954dcf27339d08aad
parent807ca72e665ef48a47950d7b4d45fd28ec92ad99
ABISysV_arm64: compute return value for large vectors correctly

Summary:
Arm64 Procedure Call Standard specifies than only vectors up to 16 bytes
are stored in v0 (which makes sense, as that's the size of the
register). 32-byte vector types are passed as regular structs via x8
pointer. Treat them as such.

This fixes TestReturnValue for arm64-clang. I also split the test case
into two so I can avoid the if(gcc) line, and annotate each test
instead. (It seems the vector type tests fail with gcc only when
targetting x86 arches).

Reviewers: tberghammer, eugene

Subscribers: aemerson, omjavaid, rengolin, srhines, lldb-commits

Differential Revision: https://reviews.llvm.org/D32813

llvm-svn: 302220
lldb/packages/Python/lldbsuite/test/functionalities/return-value/TestReturnValue.py
lldb/source/Plugins/ABI/SysV-arm64/ABISysV_arm64.cpp