llvm-project/llvm/lib
James Molloy ae5ff990ae [Thumb] Reapply r272251 with a fix for PR28348 (mk 2)
The important thing I was missing was ensuring newly added constants were kept in topological order. Repositioning the node is correct if the constant is newly added (so it has no topological ordering) but wrong if it already existed - positioning it next in the worklist would break the topological ordering.

Original commit message:
  [Thumb] Select a BIC instead of AND if the immediate can be encoded more optimally negated

  If an immediate is only used in an AND node, it is possible that the immediate can be more optimally materialized when negated. If this is the case, we can negate the immediate and use a BIC instead;

    int i(int a) {
      return a & 0xfffffeec;
    }

  Used to produce:
      ldr r1, [CONSTPOOL]
      ands r0, r1
    CONSTPOOL: 0xfffffeec

  And now produces:
      movs    r1, #255
      adds    r1, #20  ; Less costly immediate generation
      bics    r0, r1

llvm-svn: 274543
2016-07-05 12:37:13 +00:00
..
Analysis Add writeonly IR attribute 2016-07-04 08:01:29 +00:00
AsmParser Add writeonly IR attribute 2016-07-04 08:01:29 +00:00
Bitcode Add writeonly IR attribute 2016-07-04 08:01:29 +00:00
CodeGen Fixed warning caused by r274402. 2016-07-04 12:10:08 +00:00
DebugInfo [pdb] Check the display name for <unnamed-tag>, not the linkage name 2016-07-01 18:43:29 +00:00
ExecutionEngine Reformat blank lines. 2016-07-04 01:26:33 +00:00
Fuzzer [libFuzzer] Let user specify extra stats file. 2016-06-30 20:43:06 +00:00
IR [IR,X86] Remove some intrinsic prefixes earlier in the auto-upgrade code so we can shorten the length of the comparison strings and avoid repeatedly comparing the common prefix. No functional change intended. 2016-07-04 20:56:38 +00:00
IRReader Remove autoconf support 2016-01-26 21:29:08 +00:00
LTO [UpdateCompilerUsed] API rename and cleanup, suggested by Rafaael. 2016-06-22 19:50:42 +00:00
LibDriver Object: Replace NewArchiveIterator with a simpler NewArchiveMember class. NFCI. 2016-06-29 22:27:42 +00:00
LineEditor Fix Clang-tidy modernize-deprecated-headers warnings in some files; other minor fixes. 2016-03-28 17:40:08 +00:00
Linker IR: New representation for CFI and virtual call optimization pass metadata. 2016-06-24 21:21:32 +00:00
MC Add support for allowing us to create uniquely identified "COMDAT" or "ELF 2016-07-01 06:07:38 +00:00
Object Object: support empty UID/GID fields 2016-07-05 00:23:05 +00:00
ObjectYAML [YAML] Fix YAML tags appearing before the start of sequence elements 2016-06-28 21:10:26 +00:00
Option Option parser: class for consuming a joined arg in addition to all remaining args 2016-04-15 00:23:30 +00:00
Passes [PM] Port LoopAccessInfo analysis to new PM 2016-07-02 21:18:40 +00:00
ProfileData Revert "[Coverage] Move logic to encode filenames and mappings into llvm (NFC)" 2016-06-29 05:33:26 +00:00
Support [Support][Error] Make logAllUnhandledErrors take a Twine for the banner, rather 2016-07-04 22:47:53 +00:00
TableGen Avoid copies of std::strings and APInt/APFloats where we only read from it 2016-06-08 10:01:20 +00:00
Target [Thumb] Reapply r272251 with a fix for PR28348 (mk 2) 2016-07-05 12:37:13 +00:00
Transforms [InstCombine] enable vector select of bools -> logic folds 2016-07-03 14:34:39 +00:00
CMakeLists.txt Move ObjectYAML code to a new library. 2016-03-01 19:15:06 +00:00
LLVMBuild.txt Add LLVMBuild for ObjectYAML. 2016-03-01 21:29:33 +00:00