diff options
author | Ulrich Weigand <ulrich.weigand@de.ibm.com> | 2014-07-10 16:39:01 +0000 |
---|---|---|
committer | Ulrich Weigand <ulrich.weigand@de.ibm.com> | 2014-07-10 16:39:01 +0000 |
commit | f4eba98853dbb8fa1adbd29a2e697f94818c5a7a (patch) | |
tree | 463af82fe09042f06572cacb03e97f312c18c710 /clang/lib/Frontend/InitPreprocessor.cpp | |
parent | 57417d0d972f41c99173663a0131f1e85ee991f5 (diff) | |
download | llvm-f4eba98853dbb8fa1adbd29a2e697f94818c5a7a.zip llvm-f4eba98853dbb8fa1adbd29a2e697f94818c5a7a.tar.gz llvm-f4eba98853dbb8fa1adbd29a2e697f94818c5a7a.tar.bz2 |
[PowerPC] ABI support for non-Altivec vector types
This patch adds support for passing arguments of non-Altivec vector type
(i.e. defined via attribute ((vector_size (...)))) on powerpc64-linux.
While such types are not mentioned in the formal ABI document, this
patch implements a calling convention compatible with GCC:
- Vectors of size < 16 bytes are passed in a GPR
- Vectors of size > 16 bytes are passed via reference
Note that vector types with a number of elements that is not a power
of 2 are not supported by GCC, so there is no pre-existing ABI to
follow. We choose to pass those (of size < 16) as if widened to the
next power of two, so they might end up in a vector register or
in a GPR. (Sizes > 16 are always passed via reference as well.)
Reviewed by Hal Finkel.
llvm-svn: 212734
Diffstat (limited to 'clang/lib/Frontend/InitPreprocessor.cpp')
0 files changed, 0 insertions, 0 deletions