diff options
author | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2016-07-06 18:05:23 +0000 |
---|---|---|
committer | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2016-07-06 18:05:23 +0000 |
commit | 2ebe18b6098ea7ba78bba54c633d9c6c3357d786 (patch) | |
tree | 175581ee3a23c796825c30b38e6e7e186a49835e /llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp | |
parent | f9d0a40573064b1da260b6478a80c4c0962769ea (diff) | |
download | llvm-2ebe18b6098ea7ba78bba54c633d9c6c3357d786.zip llvm-2ebe18b6098ea7ba78bba54c633d9c6c3357d786.tar.gz llvm-2ebe18b6098ea7ba78bba54c633d9c6c3357d786.tar.bz2 |
[SemaExpr] Support assignments from vector to scalars with same size
Before r266366, clang used to support constructs like:
typedef __attribute__((vector_size(8))) double float64x1_t;
typedef __attribute__((vector_size(16))) double float64x2_t;
float64x1_t vget_low_f64(float64x2_t __p0);
double y = 3.0 + vget_low_f64(v);
But it would reject:
double y = vget_low_f64(v) + 3.0;
It also always rejected assignments:
double y = vget_low_f64(v);
This patch: (a) revivies the behavior of `3.0 + vget_low_f64(v)` prior to
r266366, (b) add support for `vget_low_f64(v) + 3.0` and (c) add support for
assignments.
These vector semantics have never really been tied up but it seems
odd that we used to support some binop froms but do not support
assignment. If we did support scalar for the purposes of arithmetic, we
should probably be able to reinterpret as scalar for the purposes of
assignment too.
Differential Revision: http://reviews.llvm.org/D21700
rdar://problem/26093791
llvm-svn: 274646
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp')
0 files changed, 0 insertions, 0 deletions