summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
* fix bogus warningChris Lattner2005-08-201-1/+1
| | | | llvm-svn: 22943
* Add support for global address nodesChris Lattner2005-08-191-0/+3
| | | | llvm-svn: 22940
* Implement CopyFromReg, TokenFactor, and fix a bug in CopyToReg. This allowsChris Lattner2005-08-191-0/+30
| | | | | | | | | | | | | | | | | | | | | | | | us to compile stuff like this: double %test(double %A, double %B, double %C, double %E) { %F = mul double %A, %A %G = add double %F, %B %H = sub double -0.0, %G %I = mul double %H, %C %J = add double %I, %E ret double %J } to: _test: fnmadd f0, f1, f1, f2 fmadd f1, f0, f3, f4 blr woot! llvm-svn: 22937
* Before implementing copyfromreg, we'll implement copytoreg correctly.Chris Lattner2005-08-191-2/+6
| | | | | | | | | | | | | This gets us this for the previous testcase: _test: lis r2, 0 ori r3, r2, 65535 blr Note that we actually write to r3 (the return reg) correctly now :) llvm-svn: 22933
* Now that we have operand info for machine instructions, use it to createChris Lattner2005-08-191-8/+21
| | | | | | | | | | | | | | | | | | temporary registers for things that define a register. This allows dag->dag isel to compile this: int %test() { ret int 65535 } into: _test: lis r2, 0 ori r2, r2, 65535 blr Next up, getting CopyFromReg to work, allowing arguments and cross-bb values. llvm-svn: 22932
* Fix computation of # operands, add a temporary hack for CopyToRegChris Lattner2005-08-191-6/+17
| | | | llvm-svn: 22896
* add a new -view-sched-dags option to view dags as they are sent to the ↵Chris Lattner2005-08-181-0/+10
| | | | | | scheduler. llvm-svn: 22878
* Implement the first chunk of a code emitter. This is sophisticated enough toChris Lattner2005-08-181-1/+94
| | | | | | | | | | | | codegen: _empty: .LBB_empty_0: ; blr but can't do anything more (yet). :) llvm-svn: 22876
* new file, obviously just a stubChris Lattner2005-08-181-0/+23
llvm-svn: 22868
OpenPOWER on IntegriCloud