llvm-6502/lib/CodeGen
Chris Lattner 3603cd62ae Turn any_extend nodes into zero_extend nodes when it allows us to remove an
and instruction.  This allows us to compile stuff like this:

bool %X(int %X) {
        %Y = add int %X, 14
        %Z = setne int %Y, 12345
        ret bool %Z
}

to this:

_X:
        cmpl $12331, 4(%esp)
        setne %al
        movzbl %al, %eax
        ret

instead of this:

_X:
        cmpl $12331, 4(%esp)
        setne %al
        movzbl %al, %eax
        andl $1, %eax
        ret

This occurs quite a bit with the X86 backend.  For example, 25 times in
lambda, 30 times in 177.mesa, 14 times in galgel,  70 times in fma3d,
25 times in vpr, several hundred times in gcc, ~45 times in crafty,
~60 times in parser, ~140 times in eon, 110 times in perlbmk, 55 on gap,
16 times on bzip2, 14 times on twolf, and 1-2 times in many other SPEC2K
programs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25901 91177308-0d34-0410-b5e6-96231b3b80d8
2006-02-02 07:17:31 +00:00
..
SelectionDAG Turn any_extend nodes into zero_extend nodes when it allows us to remove an 2006-02-02 07:17:31 +00:00
AsmPrinter.cpp Implement smart printing of inline asm strings, handling variants and 2006-02-01 22:41:11 +00:00
BranchFolding.cpp
DwarfWriter.cpp Using bit size of integers instead of ambiguous "long" et all. 2006-01-27 20:31:25 +00:00
ELFWriter.cpp
IntrinsicLowering.cpp
LiveInterval.cpp
LiveIntervalAnalysis.cpp Add explicit #includes of <iostream> 2006-01-22 23:41:00 +00:00
LiveVariables.cpp
MachineBasicBlock.cpp
MachineCodeEmitter.cpp
MachineDebugInfo.cpp Fix build error that is apparently only a warning with some compilers. 2006-01-27 17:31:30 +00:00
MachineFunction.cpp Allow the specification of explicit alignments for constant pool entries. 2006-01-31 22:23:14 +00:00
MachineInstr.cpp
Makefile
Passes.cpp
PHIElimination.cpp
PhysRegTracker.h
PrologEpilogInserter.cpp
RegAllocLinearScan.cpp Add explicit #includes of <iostream> 2006-01-22 23:41:00 +00:00
RegAllocLocal.cpp Add explicit #includes of <iostream> 2006-01-22 23:41:00 +00:00
RegAllocSimple.cpp Add explicit #includes of <iostream> 2006-01-22 23:41:00 +00:00
TwoAddressInstructionPass.cpp Add explicit #includes of <iostream> 2006-01-22 23:41:00 +00:00
UnreachableBlockElim.cpp
VirtRegMap.cpp Add explicit #includes of <iostream> 2006-01-22 23:41:00 +00:00
VirtRegMap.h