forked from OSchip/llvm-project
19dbb230a2
Introduces the scatter/gather operations to the Vector dialect (important memory operations for sparse computations), together with a first reference implementation that lowers to the LLVM IR dialect to enable running on CPU (and other targets that support the corresponding LLVM IR intrinsics). The operations can be used directly where applicable, or can be used during progressively lowering to bring other memory operations closer to hardware ISA support for a gather/scatter. The semantics of the operation closely correspond to those of the corresponding llvm intrinsics. Note that the operation allows for a dynamic index vector (which is important for sparse computations). However, this first reference lowering implementation "serializes" the address computation when base + index_vector is converted to a vector of pointers. Exploring how to use SIMD properly during these step is TBD. More general memrefs and idiomatic versions of striding are also TBD. Reviewed By: arpith-jacob Differential Revision: https://reviews.llvm.org/D84039 |
||
---|---|---|
.. | ||
Analysis | ||
Bindings/Python | ||
Conversion | ||
Dialect | ||
EDSC | ||
Examples | ||
IR | ||
Pass | ||
SDBM | ||
Target | ||
Transforms | ||
Unit | ||
lib | ||
mlir-cpu-runner | ||
mlir-cuda-runner | ||
mlir-linalg-ods-gen | ||
mlir-opt | ||
mlir-reduce | ||
mlir-rocm-runner | ||
mlir-tblgen | ||
mlir-vulkan-runner | ||
APITest.h | ||
CMakeLists.txt | ||
lit.cfg.py | ||
lit.site.cfg.py.in |