diff options
author | Ulrich Weigand <ulrich.weigand@de.ibm.com> | 2015-05-05 19:29:21 +0000 |
---|---|---|
committer | Ulrich Weigand <ulrich.weigand@de.ibm.com> | 2015-05-05 19:29:21 +0000 |
commit | cd2a1b5341a3c42b1a56f8f301bd0de0343b5e8e (patch) | |
tree | 1a531a74e28c6c4ffbffa35ad6872e8cbe5f38e3 /clang/lib/Basic/Targets.cpp | |
parent | 49506d78e7f437785f4d3f68063f4aa9c622bb2c (diff) | |
download | bcm5719-llvm-cd2a1b5341a3c42b1a56f8f301bd0de0343b5e8e.tar.gz bcm5719-llvm-cd2a1b5341a3c42b1a56f8f301bd0de0343b5e8e.zip |
[SystemZ] Handle sub-128 vectors
The ABI allows sub-128 vectors to be passed and returned in registers,
with the vector occupying the upper part of a register. We therefore
want to legalize those types by widening the vector rather than promoting
the elements.
The patch includes some simple tests for sub-128 vectors and also tests
that we can recognize various pack sequences, some of which use sub-128
vectors as temporary results. One of these forms is based on the pack
sequences generated by llvmpipe when no intrinsics are used.
Signed unpacks are recognized as BUILD_VECTORs whose elements are
individually sign-extended. Unsigned unpacks can have the equivalent
form with zero extension, but they also occur as shuffles in which some
elements are zero.
Based on a patch by Richard Sandiford.
llvm-svn: 236525
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
0 files changed, 0 insertions, 0 deletions