llvm-project/llvm
Simon Pilgrim c8e20b1150 [X86][AVX] Added support for lowering to VBROADCASTF128/VBROADCASTI128
As reported on PR26235, we don't currently make use of the VBROADCASTF128/VBROADCASTI128 instructions (or the AVX512 equivalents) to load+splat a 128-bit vector to both lanes of a 256-bit vector.

This patch enables lowering from subvector insertion/concatenation patterns and auto-upgrades the llvm.x86.avx.vbroadcastf128.pd.256 / llvm.x86.avx.vbroadcastf128.ps.256 intrinsics to match.

We could possibly investigate using VBROADCASTF128/VBROADCASTI128 to load repeated constants as well (similar to how we already do for scalar broadcasts).

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

llvm-svn: 276281
2016-07-21 14:10:54 +00:00
..
bindings [OCaml] Add functions for accessing metadata nodes. 2016-06-22 03:30:24 +00:00
cmake Add AIX support to Path.inc, Host.h, and CMake. 2016-07-19 22:46:39 +00:00
docs [docs] Update release docs 2016-07-21 12:00:50 +00:00
examples [Kaleidoscope][BuildingAJIT] Start filling in text for chapter 3. 2016-07-15 01:39:49 +00:00
include [DenseMap] Add a C++17-style try_emplace method. 2016-07-21 13:37:53 +00:00
lib [X86][AVX] Added support for lowering to VBROADCASTF128/VBROADCASTI128 2016-07-21 14:10:54 +00:00
projects
resources
runtimes [CMake] Add LLVM runtimes directory 2016-06-23 22:07:21 +00:00
test [X86][AVX] Added support for lowering to VBROADCASTF128/VBROADCASTI128 2016-07-21 14:10:54 +00:00
tools Reapply r276185 2016-07-20 22:24:52 +00:00
unittests [DenseMap] Add a C++17-style try_emplace method. 2016-07-21 13:37:53 +00:00
utils GlobalISel: Remove explicit enumerator values from .def file. 2016-07-20 22:58:01 +00:00
.arcconfig Upgrade all the .arcconfigs to https. 2016-07-14 13:15:37 +00:00
.clang-format
.clang-tidy
.gitignore [CMake] Add LLVM runtimes directory 2016-06-23 22:07:21 +00:00
CMakeLists.txt Add AIX support to Path.inc, Host.h, and CMake. 2016-07-19 22:46:39 +00:00
CODE_OWNERS.TXT Transfer ownership of the gold plugin. 2016-07-05 20:49:50 +00:00
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
README.txt
configure
llvm.spec.in

README.txt

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for LLVM,
a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.