summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp
Commit message (Collapse)AuthorAgeFilesLines
* No need to keep track of top and bottom nodes in a group since the vector isEvan Cheng2006-01-251-5/+0
| | | | | | already in order. Thanks Jim for pointing it out. llvm-svn: 25608
* Keep track of bottom / top element of a set of flagged nodes.Evan Cheng2006-01-251-1/+6
| | | | llvm-svn: 25600
* Factor out more instruction scheduler code to the base class.Evan Cheng2006-01-231-6/+234
| | | | llvm-svn: 25532
* Do some code refactoring on Jim's scheduler in preparation of the new listEvan Cheng2006-01-211-1127/+24
| | | | | | scheduler. llvm-svn: 25493
* purity++Duraid Madina2005-12-291-0/+1
| | | | llvm-svn: 25041
* Disengage DEBUG_LOC from non-PPC targets.Jim Laskey2005-12-211-1/+1
| | | | llvm-svn: 24919
* Amend comment.Jim Laskey2005-12-191-1/+2
| | | | llvm-svn: 24861
* Create a strong dependency for loads following stores. This will leave aJim Laskey2005-12-191-2/+6
| | | | | | latency period between the two. llvm-svn: 24860
* Keep VC++ happy.Jeff Cohen2005-12-181-0/+1
| | | | llvm-svn: 24835
* Fix a bug Sabre was having where the DAG root was a group. The group dominatorJim Laskey2005-12-181-1/+6
| | | | | | needed to be added to the ordering list, not the first member of the group. llvm-svn: 24816
* Groups were not emitted if the dominator node and the node in the ordering listJim Laskey2005-12-181-10/+6
| | | | | | were not the same node. Ultimately the test was bogus. llvm-svn: 24815
* Simplify codeChris Lattner2005-12-181-7/+2
| | | | llvm-svn: 24806
* Support multiple ValueTypes per RegisterClass, needed for upcoming vectorNate Begeman2005-12-011-1/+1
| | | | | | work. This change has no effect on generated code. llvm-svn: 24563
* Added an index field to GlobalAddressSDNode so it can represent X+12, etc.Evan Cheng2005-11-301-1/+1
| | | | llvm-svn: 24523
* Switch the allnodes list from a vector of pointers to an ilist of nodes.This ↵Chris Lattner2005-11-091-11/+8
| | | | | | | | eliminates the vector, allows constant time removal of a node froma graph, and makes iteration over the all nodes list stable when adding nodes to the graph. llvm-svn: 24263
* Explicitly initialize some instance varsChris Lattner2005-11-081-4/+5
| | | | llvm-svn: 24247
* Let's try ignoring resource utilization on the backward pass.Jim Laskey2005-11-071-0/+2
| | | | llvm-svn: 24231
* Fix logic bug in finding retry slot in tally.Jim Laskey2005-11-051-15/+33
| | | | llvm-svn: 24188
* Fix a warningJim Laskey2005-11-041-0/+1
| | | | llvm-svn: 24187
* Scheduling now uses itinerary data.Jim Laskey2005-11-041-166/+201
| | | | llvm-svn: 24180
* 1. Embed and not inherit vector for NodeGroup.Jim Laskey2005-10-311-20/+39
| | | | | | | | 2. Iterate operands and not uses (performance.) 3. Some long pending comment changes. llvm-svn: 24119
* Reduce the number of copies emitted as machine instructions byChris Lattner2005-10-301-16/+57
| | | | | | | | | | | | | | | | | generating results in vregs that will need them. In the case of something like this: CopyToReg((add X, Y), reg1024), we no longer emit code like this: reg1025 = add X, Y reg1024 = reg 1025 Instead, we emit: reg1024 = add X, Y Whoa! :) llvm-svn: 24111
* Inhibit instructions from being pushed before function calls. This willJim Laskey2005-10-131-3/+55
| | | | | | minimize unnecessary spilling. llvm-svn: 23710
* Finally committing to the new scheduler. Still -sched=none by default.Jim Laskey2005-10-121-249/+125
| | | | llvm-svn: 23702
* When emiting a CopyFromReg and the source is already a vreg, do not botherChris Lattner2005-10-091-27/+31
| | | | | | | | | | | creating a new vreg and inserting a copy: just use the input vreg directly. This speeds up the compile (e.g. about 5% on mesa with a debug build of llc) by not adding a bunch of copies and vregs to be coallesced away. On mesa, for example, this reduces the number of intervals from 168601 to 129040 going into the coallescer. llvm-svn: 23671
* Reverting to version - until problem isolated.Jim Laskey2005-10-041-70/+238
| | | | llvm-svn: 23622
* Refactor gathering node info and emission.Jim Laskey2005-10-031-238/+70
| | | | llvm-svn: 23610
* silence a bogus warningChris Lattner2005-10-021-1/+1
| | | | llvm-svn: 23595
* Add assertions to the trivial scheduler to check that the value types matchChris Lattner2005-10-021-0/+21
| | | | | | up between defs and uses. llvm-svn: 23590
* Codegen CopyFromReg using the regclass that matches the valuetype of theChris Lattner2005-10-021-9/+11
| | | | | | destination vreg. llvm-svn: 23586
* Add some very paranoid checking for operand/result reg class matchupChris Lattner2005-10-011-3/+20
| | | | | | | For instructions that define multiple results, use the right regclass to define the result, not always the rc of result #0 llvm-svn: 23580
* typoJim Laskey2005-10-011-1/+1
| | | | llvm-svn: 23574
* 1. Simplify the gathering of node groups.Jim Laskey2005-10-011-54/+22
| | | | | | 2. Printing node groups when displaying nodes. llvm-svn: 23573
* 1. Made things node-centric (from operand).Jim Laskey2005-09-301-244/+609
| | | | | | | | 2. Added node groups to handle flagged nodes. 3. Started weaning simple scheduling off existing emitter. llvm-svn: 23566
* Silence VC++ redeclaration warnings.Jeff Cohen2005-09-291-4/+6
| | | | llvm-svn: 23516
* Remove some redundancies.Jim Laskey2005-09-271-10/+10
| | | | llvm-svn: 23469
* Addition of a simple two pass scheduler. This version is currently hacked upJim Laskey2005-09-261-80/+771
| | | | | | | | 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
* Fix the release build, noticed by Eric van Riet PaapChris Lattner2005-09-021-1/+1
| | | | llvm-svn: 23215
* It is NDEBUG not _NDEBUGChris Lattner2005-09-011-2/+2
| | | | llvm-svn: 23186
* Name this variable to be what it really is!Chris Lattner2005-08-301-4/+4
| | | | llvm-svn: 23145
* Handle CopyToReg nodes with flag operands correctlyChris Lattner2005-08-301-1/+6
| | | | llvm-svn: 23144
* Add a hack to avoid some horrible code in some cases by always emittingChris Lattner2005-08-291-12/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | token chains first. For this C function: int test() { int i; for (i = 0; i < 100000; ++i) foo(); } Instead of emitting this (condition before call) .LBB_test_1: ; no_exit addi r30, r30, 1 lis r2, 1 ori r2, r2, 34464 cmpw cr2, r30, r2 bl L_foo$stub bne cr2, .LBB_test_1 ; no_exit Emit this: .LBB_test_1: ; no_exit bl L_foo$stub addi r30, r30, 1 lis r2, 1 ori r2, r2, 34464 cmpw cr0, r30, r2 bne cr0, .LBB_test_1 ; no_exit Which makes it so we don't have to save/restore cr2 in the prolog/epilog of the function. This also makes the code much more similar to what the pattern isel produces. llvm-svn: 23135
* fix PHI node emission for basic blocks that have select_cc's in them on ppc32Chris Lattner2005-08-271-2/+3
| | | | llvm-svn: 23113
* Call the InsertAtEndOfBasicBlock hook if the usesCustomDAGSchedInserterChris Lattner2005-08-261-1/+8
| | | | | | flag is set on an instruction. llvm-svn: 23098
* Change ConstantPoolSDNode to actually hold the Constant itself instead ofChris Lattner2005-08-261-2/+6
| | | | | | | | putting it into the constant pool. This allows the isel machinery to create constants that it will end up deciding are not needed, without them ending up in the resultant function constant pool. llvm-svn: 23081
* Add support for flag operandsChris Lattner2005-08-251-8/+18
| | | | llvm-svn: 23050
* Add support for external symbols, and support for variable arity instructionsChris Lattner2005-08-241-5/+12
| | | | llvm-svn: 23022
* Add a fast-path for register values. Add support for constant pool entries,Chris Lattner2005-08-221-1/+13
| | | | | | | | | | | | | | | | | | | | | allowing us to compile this: float %test2(float* %P) { %Q = load float* %P %R = add float %Q, 10.1 ret float %R } to this: _test2: lfs r2, 0(r3) lis r3, ha16(.CPI_test2_0) lfs r3, lo16(.CPI_test2_0)(r3) fadds f1, r2, r3 blr llvm-svn: 22962
* Add support for frame index nodesChris Lattner2005-08-211-3/+4
| | | | llvm-svn: 22956
* Add support for basic blocks, fix a bug in result # computationChris Lattner2005-08-211-2/+7
| | | | llvm-svn: 22948
OpenPOWER on IntegriCloud