llvm-6502/lib/CodeGen/SelectionDAG
Chris Lattner 111c228241 Compile:
int %test(ulong *%tmp) {
        %tmp = load ulong* %tmp         ; <ulong> [#uses=1]
        %tmp.mask = shr ulong %tmp, ubyte 50            ; <ulong> [#uses=1]
        %tmp.mask = cast ulong %tmp.mask to ubyte
        %tmp2 = and ubyte %tmp.mask, 3          ; <ubyte> [#uses=1]
        %tmp2 = cast ubyte %tmp2 to int         ; <int> [#uses=1]
        ret int %tmp2
}

to:

_test:
        movl 4(%esp), %eax
        movl 4(%eax), %eax
        shrl $18, %eax
        andl $3, %eax
        ret

instead of:

_test:
        movl 4(%esp), %eax
        movl 4(%eax), %eax
        shrl $18, %eax
        # TRUNCATE movb %al, %al
        andb $3, %al
        movzbl %al, %eax
        ret


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30558 91177308-0d34-0410-b5e6-96231b3b80d8
2006-09-21 06:14:31 +00:00
..
DAGCombiner.cpp Compile: 2006-09-21 06:14:31 +00:00
LegalizeDAG.cpp Expand 64-bit shifts more optimally if we know that the high bit of the 2006-09-20 03:38:48 +00:00
Makefile For PR780: 2006-07-26 16:18:00 +00:00
ScheduleDAG.cpp Added support for machine specific constantpool values. These are useful for 2006-09-12 21:00:35 +00:00
ScheduleDAGList.cpp s|llvm/Support/Visibility.h|llvm/Support/Compiler.h| 2006-08-27 12:54:02 +00:00
ScheduleDAGRRList.cpp s|llvm/Support/Visibility.h|llvm/Support/Compiler.h| 2006-08-27 12:54:02 +00:00
ScheduleDAGSimple.cpp s|llvm/Support/Visibility.h|llvm/Support/Compiler.h| 2006-08-27 12:54:02 +00:00
SelectionDAG.cpp Fold extract_element(cst) to cst 2006-09-19 05:02:39 +00:00
SelectionDAGCSEMap.cpp Added support for machine specific constantpool values. These are useful for 2006-09-12 21:00:35 +00:00
SelectionDAGISel.cpp absolute addresses must match pointer size 2006-09-18 17:59:35 +00:00
SelectionDAGPrinter.cpp Added support for machine specific constantpool values. These are useful for 2006-09-12 21:00:35 +00:00
TargetLowering.cpp Change the default to 0, which means 'default'. 2006-09-05 17:39:15 +00:00