Go to file
Artem Belevich 29bbdc1c32 [NVPTX] Unify vectorization of load/stores of aggregate arguments and return values.
Original code only used vector loads/stores for explicit vector arguments.
It could also do more loads/stores than necessary (e.g v5f32 would
touch 8 f32 values). Aggregate types were loaded one element at a time,
even the vectors contained within.

This change attempts to generalize (and simplify) parameter space
loads/stores so that vector loads/stores can be used more broadly.
Functionality of the patch has been verified by compiling thrust
test suite and manually checking the differences between PTX
generated by llvm with and without the patch.

General algorithm:
* ComputePTXValueVTs() flattens input/output argument into a flat list
  of scalars to load/store and returns their types and offsets.
* VectorizePTXValueVTs() uses that data to create vectorization plan
  which returns an array of flags marking boundaries of vectorized
  load/stores. Scalars are represented as 1-element vectors.
* Code that generates loads/stores implements a simple state machine
  that constructs a vector according to the plan.

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

llvm-svn: 295784
2017-02-21 22:56:05 +00:00
clang Declare lgamma library builtins as never being const 2017-02-21 22:37:27 +00:00
clang-tools-extra [clang-tidy] Reword the "code outside header guard" warning. 2017-02-21 11:25:45 +00:00
compiler-rt [compiler-rt] Prevent symbolizer from starting itself. 2017-02-21 21:39:24 +00:00
debuginfo-tests New round of fixes for "Always compile debuginfo-tests for the host triple" 2014-10-18 23:47:59 +00:00
libclc Move BufferPtr into the block where it it being used 2017-02-12 21:33:49 +00:00
libcxx Revert "threading_support: make __thread_sleep_for be alertable" 2017-02-18 19:28:43 +00:00
libcxxabi [CMake][libcxxabi] Update the libc++ test module path 2017-02-18 04:37:59 +00:00
libunwind [libunwind][CMake] Use libc++ headers when available 2017-02-16 05:18:08 +00:00
lld [ELF] Insert linkerscript symbols directly into symbol table 2017-02-21 22:32:51 +00:00
lldb Log: Fix race in accessing the stream variable 2017-02-21 09:58:23 +00:00
llgo [llgo] Remove support for LLVM attributes 2016-12-06 19:22:04 +00:00
llvm [NVPTX] Unify vectorization of load/stores of aggregate arguments and return values. 2017-02-21 22:56:05 +00:00
openmp [stats] add stats-gathering for static_steal scheduling method 2017-02-17 17:06:16 +00:00
parallel-libs [Axccel] Remove -Wno-missing-braces in build 2016-12-19 21:34:07 +00:00
polly [DependenceInfo] Simplify creation and subsequent use of AccessSchedule [NFC] 2017-02-21 15:38:31 +00:00