[PATCH] D41376: [libcxx] Implement <simd> ABI for Clang/GCC vector extension, constructors, copy_from and copy_to.

Tim Shen via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Dec 18 18:10:51 PST 2017


timshen created this revision.
timshen added reviewers: mclow.lists, EricWF.
Herald added a subscriber: sanjoy.

This patch added a new macro _LIBCPP_HAS_VECTOR_EXTENSION for detecting
whether a vector extension (__attribute__((vector_size(num_bytes)))) is
available.

This patch also backports std::integer_sequence to C++11.

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 https://reviews.llvm.org/D41148.


https://reviews.llvm.org/D41376

Files:
  libcxx/include/__config
  libcxx/include/experimental/__config
  libcxx/include/experimental/simd
  libcxx/include/utility
  libcxx/test/std/experimental/simd/simd.abi/vector_extension.pass.cpp
  libcxx/test/std/experimental/simd/simd.access/default.pass.cpp
  libcxx/test/std/experimental/simd/simd.casts/simd_cast.pass.cpp
  libcxx/test/std/experimental/simd/simd.cons/broadcast.pass.cpp
  libcxx/test/std/experimental/simd/simd.cons/default.pass.cpp
  libcxx/test/std/experimental/simd/simd.cons/geneartor.pass.cpp
  libcxx/test/std/experimental/simd/simd.cons/load.pass.cpp
  libcxx/test/std/experimental/simd/simd.mem/load.pass.cpp
  libcxx/test/std/experimental/simd/simd.mem/store.pass.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D41376.127452.patch
Type: text/x-patch
Size: 35775 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20171219/58e1d794/attachment-0001.bin>


More information about the cfe-commits mailing list