1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-25 05:52:53 +02:00
llvm-mirror/lib
Sanjay Patel 2d36a55f0e [TargetLowering] add special-case for demanded bits analysis of 'not'
We treat bitwise 'not' as a special operation and try not to reduce its all-ones mask. 
Presumably, this is because a 'not' may be cheaper than a generic 'xor' or it may get
folded into another logic op if the target has those. However, if we can remove a logic
instruction by changing the xor's constant mask value, that should always be a win.

Note that the IR version of SimplifyDemandedBits() does not treat 'not' as a special-case
currently (although that's marked with a FIXME). So if you run this IR through -instcombine,
you should get the same end result. I'm hoping to add a different backend transform that 
will expose this problem though, so I need to solve this first.

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

llvm-svn: 288676
2016-12-05 15:58:21 +00:00
..
Analysis [InstSimplify] add more helper functions for SimplifyICmpInst; NFCI 2016-12-03 18:03:53 +00:00
AsmParser [AsmParser] Avoid recursing when lexing ';'. NFC. 2016-11-16 22:25:05 +00:00
Bitcode Bitcode: The index used by ModuleSummaryIndexBitcodeReader is now required, so make it a reference. NFCI. 2016-12-01 06:21:08 +00:00
CodeGen [TargetLowering] add special-case for demanded bits analysis of 'not' 2016-12-05 15:58:21 +00:00
DebugInfo [DebugInfo] Fix some Clang-tidy modernize-use-default and Include What You Use warnings; other minor fixes (NFC). 2016-11-23 23:16:32 +00:00
Demangle Demangle: remove references to allocator for default allocator 2016-11-20 00:20:27 +00:00
ExecutionEngine IR: Change the gep_type_iterator API to avoid always exposing the "current" type. 2016-12-02 02:24:42 +00:00
Fuzzer Resubmit "[LibFuzzer] Split FuzzerUtil for Posix and Windows." 2016-12-02 23:02:01 +00:00
IR IR: Move NumElements field from {Array,Vector}Type to SequentialType. 2016-12-02 03:20:58 +00:00
IRReader Timer: Track name and description. 2016-11-18 19:43:18 +00:00
LibDriver
LineEditor
Linker IR: Move NumElements field from {Array,Vector}Type to SequentialType. 2016-12-02 03:20:58 +00:00
LTO [LTOs] Allow generation of hotness information 2016-12-02 17:53:56 +00:00
MC [MC] Generalize MCContext's SectionSymbols field. 2016-12-03 23:55:57 +00:00
Object [Object][MachO] Reference-ify some helper function arguments. NFC. 2016-12-04 01:56:10 +00:00
ObjectYAML
Option
Passes [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
ProfileData Make the Error class constructor protected 2016-11-11 04:28:40 +00:00
Support Support escaping in TrigramIndex. 2016-12-02 23:30:16 +00:00
TableGen TableGen: Some more std::string->StringInit* replacements 2016-12-05 07:35:13 +00:00
Target [x86] fold fand (fxor X, -1) Y --> fandn X, Y 2016-12-05 15:45:27 +00:00
Transforms [InstCombine] change select type to eliminate bitcasts 2016-12-03 15:25:16 +00:00
CMakeLists.txt
LLVMBuild.txt