- Mar 27, 2008
-
-
Evan Cheng authored
llvm-svn: 48855
-
Evan Cheng authored
llvm-svn: 48854
-
- Mar 25, 2008
-
-
Dan Gohman authored
other things, this allows the scheduler to unfold a load operand in the 2008-01-08-SchedulerCrash.ll testcase, so it now successfully clones the comparison to avoid a pushf+popf. llvm-svn: 48777
-
- Mar 21, 2008
-
-
Chris Lattner authored
ST(0)/ST(1). llvm-svn: 48634
-
- Mar 16, 2008
-
-
Christopher Lamb authored
Make insert_subreg a two-address instruction, vastly simplifying LowerSubregs pass. Add a new TII, subreg_to_reg, which is like insert_subreg except that it takes an immediate implicit value to insert into rather than a register. llvm-svn: 48412
-
- Mar 13, 2008
-
-
Christopher Lamb authored
Get rid of a pseudo instruction and replace it with subreg based operation on real instructions, ridding the asm printers of the hack used to do this previously. In the process, update LowerSubregs to be careful about eliminating copies that have side affects. Note: the coalescer will have to be careful about this too, when it starts coalescing insert_subreg nodes. llvm-svn: 48329
-
- Mar 11, 2008
-
-
Chris Lattner authored
llvm-svn: 48241
-
Chris Lattner authored
llvm-svn: 48240
-
Christopher Lamb authored
llvm-svn: 48224
-
Chris Lattner authored
llvm-svn: 48199
-
- Mar 10, 2008
-
-
Evan Cheng authored
llvm-svn: 48167
-
Christopher Lamb authored
Change insert/extract subreg instructions to be able to be used in TableGen patterns. Use the above features to reimplement an x86-64 pseudo instruction as a pattern. llvm-svn: 48130
-
- Mar 09, 2008
-
-
Chris Lattner authored
an RFP register class. Teach ScheduleDAG how to handle CopyToReg with different src/dst reg classes. This allows us to compile trivial inline asms that expect stuff on the top of x87-fp stack. llvm-svn: 48107
-
Chris Lattner authored
RST -> RFP{32/64/80}. We only handle ST(0) for now. llvm-svn: 48104
-
Chris Lattner authored
llvm-svn: 48101
-
- Feb 23, 2008
-
-
Evan Cheng authored
llvm-svn: 47524
-
Evan Cheng authored
No need recognize load from a fixed argument slot as re-materializable. LiveIntervalAnalysis already handles it as a special case. llvm-svn: 47522
-
- Feb 22, 2008
-
-
Evan Cheng authored
llvm-svn: 47476
-
- Feb 13, 2008
-
-
Evan Cheng authored
llvm-svn: 47043
-
- Feb 08, 2008
-
-
Evan Cheng authored
It's not always safe to fold movsd into xorpd, etc. Check the alignment of the load address first to make sure it's 16 byte aligned. llvm-svn: 46893
-
Evan Cheng authored
llvm-svn: 46866
-
- Feb 07, 2008
-
-
Evan Cheng authored
llvm-svn: 46849
-
- Jan 12, 2008
-
-
Chris Lattner authored
llvm-svn: 45896
-
Chris Lattner authored
This allows us to sink things like: cvtsi2sd 32(%esp), %xmm1 when reading from the argument area, for example. llvm-svn: 45895
-
- Jan 11, 2008
-
-
Chris Lattner authored
llvm-svn: 45871
-
Chris Lattner authored
llvm-svn: 45870
-
Chris Lattner authored
both work right according to the new flags. This removes the TII::isReallySideEffectFree predicate, and adds TII::isInvariantLoad. It removes NeverHasSideEffects+MayHaveSideEffects and adds UnmodeledSideEffects as machine instr flags. Now the clients can decide everything they need. I think isRematerializable can be implemented in terms of the flags we have now, though I will let others tackle that. llvm-svn: 45843
-
- Jan 10, 2008
-
-
Chris Lattner authored
or being side-effect free. llvm-svn: 45816
-
- Jan 09, 2008
-
-
Chris Lattner authored
llvm-svn: 45768
-
- Jan 07, 2008
-
-
Bill Wendling authored
llvm-svn: 45699
-
Chris Lattner authored
Make MachineInstr::getDesc return a reference instead of a pointer, since it can never be null. llvm-svn: 45695
-
Chris Lattner authored
llvm-svn: 45680
-
Chris Lattner authored
llvm-svn: 45679
-
Chris Lattner authored
over to using them, instead of diddling Flags directly. Change the various flags from const variables to enums. llvm-svn: 45677
-
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
-
- Jan 06, 2008
-
-
Bill Wendling authored
llvm-svn: 45638
-
- Jan 05, 2008
-
-
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
-