llvm-project/llvm
Simon Pilgrim 4171a91e92 [X86] combineVectorTruncationWithPACKUS - remove split/concatenation of mask
combineVectorTruncationWithPACKUS is currently splitting the upper bit bit masking into 128-bit subregs and then concatenating them back together.

This was originally done to avoid regressions that caused existing subregs to be concatenated to the larger type just for the AND masking before being extracted again. This was fixed by @spatel (notably rL303997 and rL347356).

This also lets SimplifyDemandedBits do some further improvements before it hits the recursive depth limit.

My only annoyance with this is that we were broadcasting some xmm masks but we seem to have lost them by moving to ymm - but that's a known issue as the logic in lowerBuildVectorAsBroadcast isn't great.

Differential Revision: https://reviews.llvm.org/D60375#inline-539623

llvm-svn: 358692
2019-04-18 17:23:09 +00:00
..
benchmarks
bindings [OCaml] Update api to account for FNeg and CallBr instructions 2019-04-16 15:00:19 +00:00
cmake [CMake] Allow custom extensions for externalized debug info 2019-04-18 16:37:07 +00:00
docs [llvm-profdata] Fix one bad format in llvm-profdata CommandGuide doc. NFC 2019-04-18 07:11:05 +00:00
examples
include MinidumpYAML: Add support for ModuleList stream 2019-04-18 14:57:31 +00:00
lib [X86] combineVectorTruncationWithPACKUS - remove split/concatenation of mask 2019-04-18 17:23:09 +00:00
projects
resources
runtimes
test [X86] combineVectorTruncationWithPACKUS - remove split/concatenation of mask 2019-04-18 17:23:09 +00:00
tools [llvm-objcopy] Add -B mips 2019-04-18 14:22:37 +00:00
unittests Test commit access [NFC] 2019-04-18 08:57:58 +00:00
utils gn build: Merge r358607 2019-04-18 14:27:38 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt [CMake] Move configuration of LLVM_CXX_STD to HandleLLVMOptions.cmake 2019-04-09 08:14:32 +00:00
CODE_OWNERS.TXT
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
README.txt
RELEASE_TESTERS.TXT
configure
llvm.spec.in

README.txt

The LLVM Compiler Infrastructure
================================

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.