llvm-6502/lib/Transforms
Bill Wendling 7d9f2b93a3 This test case:
long test(long x) { return (x & 123124) | 3; }

Currently compiles to:

_test:
        orl     $3, %edi
        movq    %rdi, %rax
        andq    $123127, %rax
        ret

This is because instruction and DAG combiners canonicalize

  (or (and x, C), D) -> (and (or, D), (C | D))

However, this is only profitable if (C & D) != 0. It gets in the way of the
3-addressification because the input bits are known to be zero.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97616 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-03 00:35:56 +00:00
..
Hello Prune #includes. 2010-03-01 17:42:17 +00:00
InstCombine This test case: 2010-03-03 00:35:56 +00:00
Instrumentation Uniformize the names of type predicates: rather than having isFloatTy and 2010-02-15 16:12:20 +00:00
IPO Fix rdar://7694996 a miscompile of 183.equake from my patch yesterday, 2010-02-26 23:42:13 +00:00
Scalar Non-affine post-inc SCEV expansions have more code which must be 2010-03-02 01:59:21 +00:00
Utils Add some debug output to LoopSimplify. 2010-03-01 17:55:27 +00:00
Makefile move instcombine to its own library, it's past time. 2010-01-04 06:23:24 +00:00