- Jan 07, 2008
-
-
Chris Lattner authored
that it is cheap and efficient to get. Move a variety of predicates from TargetInstrInfo into TargetInstrDescriptor, which makes it much easier to query a predicate when you don't have TII around. Now you can use MI->getDesc()->isBranch() instead of going through TII, and this is much more efficient anyway. Not all of the predicates have been moved over yet. Update old code that used MI->getInstrDescriptor()->Flags to use the new predicates in many places. llvm-svn: 45674
-
Owen Anderson authored
Some day I'll get it all moved over... llvm-svn: 45672
-
Gordon Henriksen authored
up to the various compiler pipelines. This doesn't actually add support for any GC algorithms, which means it temporarily breaks a few tests. To be fixed shortly. llvm-svn: 45669
-
Chris Lattner authored
llvm-svn: 45668
-
Chris Lattner authored
llvm-svn: 45667
-
- Jan 06, 2008
-
-
Chris Lattner authored
llvm-svn: 45656
-
Chris Lattner authored
instead of "ISD::STORE". This allows us to mark target-specific dag nodes as storing (such as ppc byteswap stores). This allows us to remove more explicit isStore flags from the .td files. Finally, add a warning for when a .td file contains an explicit isStore and tblgen is able to infer it. llvm-svn: 45654
-
Chris Lattner authored
llvm-svn: 45653
-
Chris Lattner authored
llvm-svn: 45652
-
Bill Wendling authored
llvm-svn: 45638
-
- Jan 05, 2008
-
-
Nate Begeman authored
the target independent legalizer. llvm-svn: 45631
-
Gordon Henriksen authored
unifying the copied algorithms and saving over 500 LOC. There should be no functionality change, but please test on your favorite x86 target. llvm-svn: 45627
-
Bill Wendling authored
checking that there was a from a global instead of a load from the stub for a global, which is the one that's safe to hoist. Consider this program: volatile char G[100]; int B(char *F, int N) { for (; N > 0; --N) F[N] = G[N]; } In static mode, we shouldn't be hoisting the load from G: $ llc -relocation-model=static -o - a.bc -march=x86 -machine-licm LBB1_1: # bb.preheader leal -1(%eax), %edx testl %edx, %edx movl $1, %edx cmovns %eax, %edx xorl %esi, %esi LBB1_2: # bb movb _G(%eax), %bl movb %bl, (%ecx,%eax) llvm-svn: 45626
-
Chris Lattner authored
for remat, but can't due to an RA bug. llvm-svn: 45623
-
Chris Lattner authored
llvm-svn: 45622
-
Chris Lattner authored
llvm-svn: 45621
-
Chris Lattner authored
isReallySideEffectFree and isReallyTriviallyReMaterializable. Why is a load from a global considered side-effect-free but not rematable? llvm-svn: 45620
-
Chris Lattner authored
llvm-svn: 45618
-
Evan Cheng authored
llvm-svn: 45616
-
Evan Cheng authored
llvm-svn: 45605
-
Owen Anderson authored
llvm-svn: 45603
-
- Jan 04, 2008
-
-
Evan Cheng authored
llvm-svn: 45576
-
Evan Cheng authored
llvm-svn: 45575
-
Evan Cheng authored
llvm-svn: 45562
-
- Jan 03, 2008
-
-
Gordon Henriksen authored
llvm-svn: 45536
-
Evan Cheng authored
for non-function GV relocations that require function address stubs (e.g. Mac OS X in non-static mode). llvm-svn: 45527
-
Evan Cheng authored
llvm-svn: 45515
-
- Jan 02, 2008
-
-
Bill Wendling authored
check that register isn't 0 before going further. llvm-svn: 45498
-
Chris Lattner authored
llvm-svn: 45494
-
Chris Lattner authored
llvm-svn: 45493
-
- Jan 01, 2008
-
-
Owen Anderson authored
llvm-svn: 45484
-
Chris Lattner authored
Fix a bug in my previous patch: refer to the impl not the pure virtual version. It's unclear why gcc would ever compile this... llvm-svn: 45476
-
Chris Lattner authored
a header file from libcodegen. This violates a layering order: codegen depends on target, not the other way around. The fix to this is to split TII into two classes, TII and TargetInstrInfoImpl, which defines stuff that depends on libcodegen. It is defined in libcodegen, where the base is not. llvm-svn: 45475
-
- Dec 31, 2007
-
-
Owen Anderson authored
Machine-level API cleanup instigated by Chris. llvm-svn: 45470
-
Chris Lattner authored
that "machine" classes are used to represent the current state of the code being compiled. Given this expanded name, we can start moving other stuff into it. For now, move the UsedPhysRegs and LiveIn/LoveOuts vectors from MachineFunction into it. Update all the clients to match. This also reduces some needless #includes, such as MachineModuleInfo from MachineFunction. llvm-svn: 45467
-
Chris Lattner authored
e.g. MO.isMBB() instead of MO.isMachineBasicBlock(). I don't plan on switching everything over, so new clients should just start using the shorter names. Remove old long accessors, switching everything over to use the short accessor: getMachineBasicBlock() -> getMBB(), getConstantPoolIndex() -> getIndex(), setMachineBasicBlock -> setMBB(), etc. llvm-svn: 45464
-
- Dec 30, 2007
-
-
Chris Lattner authored
- Eliminate the static "print" method for operands, moving it into MachineOperand::print. - Change various set* methods for register flags to take a bool for the value to set it to. Remove unset* methods. - Group methods more logically by operand flavor in MachineOperand.h llvm-svn: 45461
-
Chris Lattner authored
Use MachineOperand::getImm instead of MachineOperand::getImmedValue. Likewise setImmedValue -> setImm llvm-svn: 45453
-
Bill Wendling authored
function, then go ahead and hoist it out of the loop. This is the result: $ cat a.c volatile int G; int A(int N) { for (; N > 0; --N) G++; } $ llc -o - -relocation-model=pic _A: ... LBB1_2: # bb movl L_G$non_lazy_ptr-"L1$pb"(%eax), %esi incl (%esi) incl %edx cmpl %ecx, %edx jne LBB1_2 # bb ... $ llc -o - -relocation-model=pic -machine-licm _A: ... movl L_G$non_lazy_ptr-"L1$pb"(%eax), %eax LBB1_2: # bb incl (%eax) incl %edx cmpl %ecx, %edx jne LBB1_2 # bb ... I'm limiting this to the MOV32rm x86 instruction for now. llvm-svn: 45444
-
Chris Lattner authored
llvm-svn: 45437
-