llvm-6502/lib/CodeGen
Chris Lattner 1d6373c1af teach selection dag mask tracking about the fact that select_cc operates like
select.  Also teach it that the bit count instructions can only set the low bits
of the result, depending on the size of the input.

This allows us to compile this:

int %eq0(int %a) {
        %tmp.1 = seteq int %a, 0                ; <bool> [#uses=1]
        %tmp.2 = cast bool %tmp.1 to int                ; <int> [#uses=1]
        ret int %tmp.2
}

To this:

_eq0:
        cntlzw r2, r3
        srwi r3, r2, 5
        blr

instead of this:

_eq0:
        cntlzw r2, r3
        rlwinm r3, r2, 27, 31, 31
        blr

when setcc is marked illegal on ppc (which restores parity to non-illegal
setcc).  Thanks to Nate for pointing this out.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23013 91177308-0d34-0410-b5e6-96231b3b80d8
2005-08-24 16:46:55 +00:00
..
SelectionDAG teach selection dag mask tracking about the fact that select_cc operates like 2005-08-24 16:46:55 +00:00
AsmPrinter.cpp Culling out use of unions for converting FP to bits and vice versa. 2005-08-17 19:34:49 +00:00
BranchFolding.cpp Remove trailing whitespace 2005-04-21 22:36:52 +00:00
ELFWriter.cpp Fix VC++ constant truncation warning. 2005-08-19 16:19:21 +00:00
IntrinsicLowering.cpp Eliminate all remaining tabs and trailing spaces. 2005-07-27 06:12:32 +00:00
LiveInterval.cpp Print the symbolic register name in a register allocator debug dump. 2005-05-14 05:34:15 +00:00
LiveInterval.h Print the symbolic register name in a register allocator debug dump. 2005-05-14 05:34:15 +00:00
LiveIntervalAnalysis.cpp Simplify this code by using higher-level LiveVariables methods 2005-08-23 22:51:41 +00:00
LiveIntervalAnalysis.h Allow the live interval analysis pass to be a bit more aggressive about 2005-03-09 23:05:19 +00:00
LiveVariables.cpp Implement LiveVariables.h change 2005-08-24 00:09:33 +00:00
MachineBasicBlock.cpp Remove trailing whitespace 2005-04-21 22:36:52 +00:00
MachineCodeEmitter.cpp new is not a valid default anywhere, so make this pure virtual 2005-07-28 18:13:59 +00:00
MachineFunction.cpp print stack object alignment in -print-machineinstr dumps 2005-05-13 22:54:44 +00:00
MachineInstr.cpp Remove trailing whitespace 2005-04-21 22:36:52 +00:00
Makefile Change Library Names Not To Conflict With Others When Installed 2004-10-27 23:18:45 +00:00
Passes.cpp Remove trailing whitespace 2005-04-21 22:36:52 +00:00
PHIElimination.cpp adjust to new live variables interface 2005-08-23 23:42:17 +00:00
PhysRegTracker.h Improved PhysRegTracker interface. RegAlloc lazily allocates the register tracker using a std::auto_ptr 2004-02-23 06:10:13 +00:00
PrologEpilogInserter.cpp When inserting callee-save register reloads, make sure to skip over any 2005-05-15 03:09:58 +00:00
RegAllocIterativeScan.cpp Update these register allocators to set the PhysRegUsed info in MachineFunction. 2005-01-23 22:45:13 +00:00
RegAllocLinearScan.cpp Keep track of which registers are related to which other registers. 2005-08-23 22:27:31 +00:00
RegAllocLocal.cpp adjust to new live variables interface 2005-08-23 23:42:17 +00:00
RegAllocSimple.cpp Convert tabs to spaces 2005-04-22 04:01:18 +00:00
TwoAddressInstructionPass.cpp Remove trailing whitespace 2005-04-21 22:36:52 +00:00
UnreachableBlockElim.cpp Remove trailing whitespace 2005-04-21 22:36:52 +00:00
VirtRegMap.cpp Remove trailing whitespace 2005-04-21 22:36:52 +00:00
VirtRegMap.h Remove trailing whitespace 2005-04-21 22:36:52 +00:00