llvm-6502/lib
Hal Finkel ccc83e4a08 [PowerPC] Fold i1 extensions with other ops
Consider this function from our README.txt file:

  int foo(int a, int b) { return (a < b) << 4; }

We now explicitly track CR bits by default, so the comment in the README.txt
about not really having a SETCC is no longer accurate, but we did generate this
somewhat silly code:

        cmpw 0, 3, 4
        li 3, 0
        li 12, 1
        isel 3, 12, 3, 0
        sldi 3, 3, 4
        blr

which generates the zext as a select between 0 and 1, and then shifts the
result by a constant amount. Here we preprocess the DAG in order to fold the
results of operations on an extension of an i1 value into the SELECT_I[48]
pseudo instruction when the resulting constant can be materialized using one
instruction (just like the 0 and 1). This was not implemented as a DAGCombine
because the resulting code would have been anti-canonical and depends on
replacing chained user nodes, which does not fit well into the lowering
paradigm. Now we generate:

        cmpw 0, 3, 4
        li 3, 0
        li 12, 16
        isel 3, 12, 3, 0
        blr

which is less silly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225203 91177308-0d34-0410-b5e6-96231b3b80d8
2015-01-05 21:10:24 +00:00
..
Analysis [PM] Don't run the machinery of invalidating all the analysis passes 2015-01-05 12:32:11 +00:00
AsmParser
Bitcode [PM] Switch the new pass manager to use a reference-based API for IR 2015-01-05 02:47:05 +00:00
CodeGen Replace several 'assert(false' with 'llvm_unreachable' or fold a condition into the assert. 2015-01-05 10:15:49 +00:00
DebugInfo
ExecutionEngine RTDyldMemoryManager.cpp: Make the reference to __morestack weak. 2014-12-30 22:52:33 +00:00
IR IR: Prune arguments to ValueAsMetadata::ValueAsMetadata() 2015-01-05 20:41:25 +00:00
IRReader
LineEditor
Linker
LTO
MC Add r224985 back with a fix. 2014-12-31 17:19:34 +00:00
Object Add printing the LC_THREAD load commands with llvm-objdump’s -private-headers. 2014-12-23 22:56:39 +00:00
Option
ProfileData
Support [APFloat][ADT] Fix sign handling logic for FMA results that truncate to zero. 2015-01-04 01:20:55 +00:00
TableGen
Target [PowerPC] Fold i1 extensions with other ops 2015-01-05 21:10:24 +00:00
Transforms SymbolRewriter: use iplist::splice 2015-01-05 17:56:32 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile