- Oct 05, 2005
-
-
Chris Lattner authored
store r12 -> [ss#2] R3 = load [ss#1] use R3 R3 = load [ss#2] R4 = load [ss#1] and turn it into this code: store R12 -> [ss#2] R3 = load [ss#1] use R3 R3 = R12 R4 = R3 <- oops! The problem was that promoting R3 = load[ss#2] to a copy missed the fact that the instruction invalidated R3 at that point. llvm-svn: 23638
-
Chris Lattner authored
with the dag combiner. This speeds up espresso by 8%, reaching performance parity with the dag-combiner-disabled llc. llvm-svn: 23636
-
Chris Lattner authored
llvm-svn: 23635
-
Chris Lattner authored
dead node elim and dag combiner passes where the root is potentially updated. This fixes a fixme in the dag combiner. llvm-svn: 23634
-
Chris Lattner authored
that testcase still does not pass with the dag combiner. This is because not all forms of br* are folded yet. Also, when we combine a node into another one, delete the node immediately instead of waiting for the node to potentially come up in the future. llvm-svn: 23632
-
Chris Lattner authored
the second phase of dag combining llvm-svn: 23631
-
Chris Lattner authored
llvm-svn: 23630
-
- Oct 04, 2005
-
-
Jim Laskey authored
llvm-svn: 23622
-
Nate Begeman authored
Since calls return more than one value, don't bail if one of their uses happens to be a node that's not an MVT::Other when following the chain from CALLSEQ_START to CALLSEQ_END. Once we've found a CALLSEQ_START, we can just return; there's no need to tail-recurse further up the graph. Most importantly, just because something only has one use doesn't mean we should use it's one use to follow from start to end. This faulty logic caused us to follow a chain of one-use FP operations back to a much earlier call, putting a cycle in the graph from a later start to an earlier end. This is a better fix that reverting to the workaround committed earlier today. llvm-svn: 23620
-
Nate Begeman authored
Neither of us have yet figured out why this code is necessary, but stuff breaks if its not there. Still tracking this down... llvm-svn: 23617
-
- Oct 03, 2005
-
-
Jim Laskey authored
llvm-svn: 23610
-
Chris Lattner authored
llvm-svn: 23609
-
Chris Lattner authored
llvm-svn: 23606
-
- Oct 02, 2005
-
-
Chris Lattner authored
large basic blocks because it was purely recursive. This switches it to an iterative/recursive hybrid. llvm-svn: 23596
-
Chris Lattner authored
llvm-svn: 23595
-
Chris Lattner authored
up between defs and uses. llvm-svn: 23590
-
Chris Lattner authored
destination vreg. llvm-svn: 23586
-
- Oct 01, 2005
-
-
Chris Lattner authored
For instructions that define multiple results, use the right regclass to define the result, not always the rc of result #0 llvm-svn: 23580
-
Jeff Cohen authored
llvm-svn: 23579
-
Chris Lattner authored
llvm-svn: 23575
-
Jim Laskey authored
llvm-svn: 23574
-
Jim Laskey authored
2. Printing node groups when displaying nodes. llvm-svn: 23573
-
- Sep 30, 2005
-
-
Jim Laskey authored
2. Added node groups to handle flagged nodes. 3. Started weaning simple scheduling off existing emitter. llvm-svn: 23566
-
Chris Lattner authored
llvm-svn: 23559
-
Chris Lattner authored
class into the spill/reload methods. Targets can now rely on that argument. llvm-svn: 23556
-
Chris Lattner authored
code. PrologEpilogInserter hasn't been updated yet though, so targets cannot use this info. llvm-svn: 23536
-
- Sep 29, 2005
-
-
Chris Lattner authored
llvm-svn: 23522
-
Jeff Cohen authored
llvm-svn: 23516
-
Chris Lattner authored
Though I have done extensive testing, it is possible that this will break things in configs I can't test. Please let me know if this causes a problem and I'll fix it ASAP. llvm-svn: 23504
-
- Sep 28, 2005
-
-
Chris Lattner authored
If the target prefers it, use _setjmp/_longjmp should be used instead of setjmp/longjmp for llvm.setjmp/llvm.longjmp. llvm-svn: 23481
-
- Sep 27, 2005
-
-
Jim Laskey authored
llvm-svn: 23469
-
- Sep 26, 2005
-
-
Jim Laskey authored
for testing and will require target machine info to do a proper scheduling. The simple scheduler can be turned on using -sched=simple (defaults to -sched=none) llvm-svn: 23455
-
- Sep 23, 2005
-
-
Chris Lattner authored
This happens all the time on PPC for bool values, e.g. eliminating a xori in inverted-bool-compares.ll. This should be added to the dag combiner as well. llvm-svn: 23403
-
- Sep 21, 2005
-
-
Chris Lattner authored
llvm-svn: 23400
-
- Sep 20, 2005
-
-
Nate Begeman authored
select_cc bits and then wrap it in a convenience function for use with regular select. llvm-svn: 23389
-
- Sep 19, 2005
-
-
Chris Lattner authored
when possible, avoiding the load (and avoiding the copy if the value is already in the right register). This patch came about when I noticed code like the following being generated: store R17 -> [SS1] ...blah... R4 = load [SS1] This was causing an LSU reject on the G5. This problem was due to the register allocator folding spill code into a reg-reg copy (producing the load), which prevented the spiller from being able to rewrite the load into a copy, despite the fact that the value was already available in a register. In the case above, we now rip out the R4 load and replace it with a R4 = R17 copy. This speeds up several programs on X86 (which spills a lot :) ), e.g. smg2k from 22.39->20.60s, povray from 12.93->12.66s, 168.wupwise from 68.54->53.83s (!), 197.parser from 7.33->6.62s (!), etc. This may have a larger impact in some cases on the G5 (by avoiding LSU rejects), though it probably won't trigger as often (less spilling in general). Targets that implement folding of loads/stores into copies should implement the isLoadFromStackSlot hook to get this. llvm-svn: 23388
-
- Sep 16, 2005
-
-
Nate Begeman authored
llvm-svn: 23371
-
- Sep 13, 2005
-
-
Chris Lattner authored
into particular vregs, emit copies into the entry MBB. llvm-svn: 23331
-
- Sep 10, 2005
-
-
Chris Lattner authored
when storing to an 8-bit memory location), as most don't. llvm-svn: 23303
-
Chris Lattner authored
llvm-svn: 23302
-