llvm-project/llvm
Simon Pilgrim 58c01ef270 [SelectionDAG] Merge FoldConstantVectorArithmetic into FoldConstantArithmetic (PR36544)
This patch merges FoldConstantVectorArithmetic back into FoldConstantArithmetic.

Like FoldConstantVectorArithmetic we now handle vector ops with any operand count, but we currently still only handle binops for scalar types - this can be improved in future patches - in particular some common unary/trinary ops still have poor constant folding.

There's one change in functionality causing test changes - FoldConstantVectorArithmetic bails early if the build/splat vector isn't all constant (with some undefs) elements, but FoldConstantArithmetic doesn't - it instead attempts to fold the scalar nodes and bails if they fail to regenerate a constant/undef result, allowing some additional identity/undef patterns to be handled.

Differential Revision: https://reviews.llvm.org/D113300
2021-11-09 11:31:01 +00:00
..
benchmarks
bindings
cmake [TableGen] Emit a warning for unused template args 2021-11-03 11:55:07 +00:00
docs [CUDA] Bump supported CUDA version to 11.5 2021-11-09 08:20:53 +00:00
examples Revert "Use `GNUInstallDirs` to support custom installation dirs. -- LLVM" 2021-11-02 19:11:44 +01:00
include [SelectionDAG] Merge FoldConstantVectorArithmetic into FoldConstantArithmetic (PR36544) 2021-11-09 11:31:01 +00:00
lib [SelectionDAG] Merge FoldConstantVectorArithmetic into FoldConstantArithmetic (PR36544) 2021-11-09 11:31:01 +00:00
projects Remove unused parallel-libs project 2021-10-21 14:34:39 -07:00
resources
runtimes
test [SelectionDAG] Merge FoldConstantVectorArithmetic into FoldConstantArithmetic (PR36544) 2021-11-09 11:31:01 +00:00
tools Add llvm-tli-checker 2021-11-08 16:29:28 -08:00
unittests [InferAddressSpaces] Support assumed addrspaces from addrspace predicates. 2021-11-08 16:51:57 -05:00
utils [gn build] Port ef717f3852 2021-11-09 07:11:34 +00:00
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt [NFC] Inclusive language: Remove instances of master in URLs 2021-11-05 08:48:41 -05:00
CODE_OWNERS.TXT
CREDITS.TXT
LICENSE.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.