Commit Graph

4 Commits

Author SHA1 Message Date
Tim Shen f72252e679 [libcxx] fix `>> 42` UB in <experimental/simd>
llvm-svn: 338325
2018-07-30 23:05:40 +00:00
Tim Shen 38cd7de5ac Re-apply "[libcxx] implement <simd> ABI for Clang/GCC vector extension, constructors, copy_from and copy_to."
...with proper guarding #ifdefs for unsupported C++11.

llvm-svn: 338318
2018-07-30 22:27:38 +00:00
Tim Shen 6f33ea4ef6 Revert "[libcxx] implement <simd> ABI for Clang/GCC vector extension, constructors, copy_from and copy_to."
This reverts commit r338309.

llvm-svn: 338316
2018-07-30 22:21:22 +00:00
Tim Shen 47ad09b339 [libcxx] implement <simd> ABI for Clang/GCC vector extension, constructors, copy_from and copy_to.
Summary:
This patch adds a new macro _LIBCPP_HAS_NO_VECTOR_EXTENSION for detecting
whether a vector extension (\_\_attribute\_\_((vector_size(num_bytes)))) is
available.

On the top of that, this patch implements the following API:
* all constructors
* operator[]
* copy_from
* copy_to

It also defines simd_abi::native to use vector extension, if available.
In GCC and Clang, certain values with vector extension are passed by registers,
instead of memory.

Based on D41148.

Reviewers: mclow.lists, EricWF

Subscribers: cfe-commits, MaskRay, lichray, sanjoy

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

llvm-svn: 338309
2018-07-30 21:23:13 +00:00