1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 04:22:57 +02:00
llvm-mirror/include/llvm
Sanjay Patel 7708490317 [DAG] convert vector select-of-constants to logic/math
This goes back to a discussion about IR canonicalization. We'd like to preserve and convert
more IR to 'select' than we currently do because that's likely the best choice in IR:
http://lists.llvm.org/pipermail/llvm-dev/2016-September/105335.html
...but that's often not true for codegen, so we need to account for this pattern coming in
to the backend and transform it to better DAG ops.

Steps in this patch:

  1. Add an EVT param to the existing convertSelectOfConstantsToMath() TLI hook to more finely
     enable this transform. Other targets will probably want that anyway to distinguish scalars
     from vectors. We're using that here to exclude AVX512 targets, but it may not be necessary.

  2. Convert a vselect to ext+add. This eliminates a constant load/materialization, and the
     vector ext is often free.

Implementing a more general fold using xor+and can be a follow-up for targets that don't have
a legal vselect. It's also possible that we can remove the TLI hook for the special case fold
implemented here because we're eliminating a constant, but it needs to be tested on other
targets.

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

llvm-svn: 311731
2017-08-24 23:24:43 +00:00
..
ADT [ADT] Enable reverse iteration for DenseMap 2017-08-24 23:02:48 +00:00
Analysis Model cache size and associativity in TargetTransformInfo 2017-08-24 09:46:25 +00:00
AsmParser
BinaryFormat [RISCV] Recognize new relocation types 2017-08-15 12:11:10 +00:00
Bitcode Add strictfp attribute to prevent unwanted optimizations of libm calls 2017-08-14 21:15:13 +00:00
CodeGen Re-commit: [globalisel][tablegen] Add support for ImmLeaf without SDNodeXForm 2017-08-24 09:11:20 +00:00
Config Implement parsing and writing of a single xml manifest file. 2017-07-20 21:42:04 +00:00
DebugInfo [PDB] Serialize records into a stack-allocated buffer. 2017-08-21 20:17:19 +00:00
Demangle
ExecutionEngine Propagate error in LazyEmittingLayer::removeModule. 2017-08-15 02:25:36 +00:00
FuzzMutate Re-apply "Introduce FuzzMutate library" 2017-08-21 22:57:06 +00:00
IR Move accurate-sample-profile into the function attribute. 2017-08-24 21:37:04 +00:00
IRReader
LineEditor
Linker
LTO Delete Default and JITDefault code models 2017-08-03 02:16:21 +00:00
MC [X86AsmParser] Refactor AsmRewrite constructors, NFCI 2017-08-24 15:03:18 +00:00
Object Fix bug 34051 by handling empty .res files gracefully. 2017-08-24 02:36:50 +00:00
ObjectYAML [yaml2obj][ELF] Add support for program headers 2017-07-19 20:38:46 +00:00
Option Revert r311552: [Bash-autocompletion] Add support for static analyzer flags 2017-08-23 14:48:58 +00:00
Passes Refactor the build{Module|Function}SimplificationPipeline to expose optimization phase. 2017-07-30 04:55:39 +00:00
ProfileData Move two functions to a nicer spot. NFC. 2017-08-02 23:35:27 +00:00
Support [ADT] Enable reverse iteration for DenseMap 2017-08-24 23:02:48 +00:00
TableGen Fix Wdocumentation warning 2017-06-20 12:28:33 +00:00
Target [DAG] convert vector select-of-constants to logic/math 2017-08-24 23:24:43 +00:00
Testing/Support [Testing/Support] Remove the const_cast in TakeExpected 2017-06-22 13:11:50 +00:00
ToolDrivers llvm: add llvm-dlltool support to the archiver 2017-07-18 21:26:38 +00:00
Transforms fix typo; NFC 2017-08-24 15:00:13 +00:00
WindowsManifest llvm-mt: Merge manifest namespaces. 2017-08-19 00:37:41 +00:00
XRay [XRay][tools] Support new kinds of instrumentation map entries 2017-08-21 00:14:06 +00:00
CMakeLists.txt Support: Add a VCSRevision.h header file. 2017-04-13 01:26:12 +00:00
InitializePasses.h Update branch coalescing to be a PowerPC specific pass 2017-08-23 19:25:04 +00:00
LinkAllIR.h Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
LinkAllPasses.h Remove the BBVectorize pass. 2017-06-30 07:09:08 +00:00
module.modulemap Move manifest utils into separate lib, to reduce libxml2 deps. 2017-07-26 01:21:55 +00:00
module.modulemap.build
Pass.h Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
PassAnalysisSupport.h
PassInfo.h [LegacyPassManager] Remove TargetMachine constructors 2017-05-18 17:21:13 +00:00
PassRegistry.h
PassSupport.h [LegacyPassManager] Remove TargetMachine constructors 2017-05-18 17:21:13 +00:00