summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
...
* Mark instructions that are cracked by the PPC970 decoder as such.Chris Lattner2006-03-134-26/+37
| | | | llvm-svn: 26720
* Several big changes:Chris Lattner2006-03-127-213/+317
| | | | | | | | | | | 1. Use flags on the instructions in the .td file to indicate the PPC970 unit type instead of a table in the .cpp file. Much cleaner. 2. Change the hazard recognizer to build d-groups according to the actual algorithm used, not my flawed understanding of it. 3. Model "must be in the first slot" and "must be the only instr in a group" accurately. llvm-svn: 26719
* Don't advance the hazard recognizer when there are no hazards and no ↵Chris Lattner2006-03-121-25/+40
| | | | | | | | | | | instructions to be emitted. Don't add one to the latency of a completed instruction if the latency of the op is 0. llvm-svn: 26718
* Chain operands aren't real uses: they don't require the full latency of theChris Lattner2006-03-121-4/+10
| | | | | | predecessor to finish before they can start. llvm-svn: 26717
* As a pending queue data structure to keep track of instructions whoseChris Lattner2006-03-121-36/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | operands have all issued, but whose results are not yet available. This allows us to compile: int G; int test(int A, int B, int* P) { return (G+A)*(B+1); } to: _test: lis r2, ha16(L_G$non_lazy_ptr) addi r4, r4, 1 lwz r2, lo16(L_G$non_lazy_ptr)(r2) lwz r2, 0(r2) add r2, r2, r3 mullw r3, r2, r4 blr instead of this, which has a stall between the lis/lwz: _test: lis r2, ha16(L_G$non_lazy_ptr) lwz r2, lo16(L_G$non_lazy_ptr)(r2) addi r4, r4, 1 lwz r2, 0(r2) add r2, r2, r3 mullw r3, r2, r4 blr llvm-svn: 26716
* Mark llvm.stacksave as only reading memory, this fixesChris Lattner2006-03-121-1/+1
| | | | | | Regression/Transforms/InstCombine/stacksaverestore.ll llvm-svn: 26715
* rename priorityqueue -> availablequeue. When a node is scheduled, rememberChris Lattner2006-03-111-34/+37
| | | | | | which cycle it lands on. llvm-svn: 26714
* Make CurrCycle a local var instead of an instance varChris Lattner2006-03-111-19/+20
| | | | llvm-svn: 26713
* Move some methods around so that BU specific code is together, TD specific codeChris Lattner2006-03-111-236/+245
| | | | | | is together, and direction independent code is together. llvm-svn: 26712
* merge preds/chainpreds -> preds setChris Lattner2006-03-111-93/+61
| | | | | | | | | merge succs/chainsuccs -> succs set This has no functionality change, simplifies the code, and reduces the size of sunits. llvm-svn: 26711
* blr is a branch tooChris Lattner2006-03-111-0/+1
| | | | llvm-svn: 26710
* add an exampleChris Lattner2006-03-111-0/+11
| | | | llvm-svn: 26709
* add a noteChris Lattner2006-03-111-0/+4
| | | | llvm-svn: 26708
* Fix PR681 by using the standard Lengauer and Tarjan algorithm for dominatorNate Begeman2006-03-112-174/+240
| | | | | | | | | | set construction, rather than intersecting various std::sets. This reduces the memory usage for the testcase in PR681 from 496 to 26MB of ram on my darwin system, and reduces the runtime from 32.8 to 0.8 seconds on a 2.5GHz G5. This also enables future code sharing between Dom and PostDom now that they share near-identical implementations. llvm-svn: 26707
* fix pasto in generate assertion msgChris Lattner2006-03-111-1/+1
| | | | llvm-svn: 26706
* Doh!Evan Cheng2006-03-111-2/+2
| | | | llvm-svn: 26705
* Added a parameter to control whether Constant::getStringValue() would chopEvan Cheng2006-03-103-6/+12
| | | | | | off the result string at the first null terminator. llvm-svn: 26704
* remove some dead codeChris Lattner2006-03-102-95/+0
| | | | llvm-svn: 26703
* remove ShouldEmitDebugFunctions, a hack to support llvm-db via the jitChris Lattner2006-03-101-5/+1
| | | | llvm-svn: 26702
* scrape out bits of llvm-dbChris Lattner2006-03-101-9/+0
| | | | llvm-svn: 26701
* Remove UnixLocalInferiorProcess: debugging via the JIT isn't a good idea.Chris Lattner2006-03-102-937/+6
| | | | | | Perhaps llvm-db will turn into a read debugger someday. llvm-svn: 26700
* Simplify this testcaseChris Lattner2006-03-101-14/+2
| | | | llvm-svn: 26699
* reorder these to make it work with static librariesChris Lattner2006-03-101-2/+2
| | | | llvm-svn: 26698
* teach the JIT to encode vector registersChris Lattner2006-03-101-32/+32
| | | | llvm-svn: 26697
* Fix another broken intrinsic.Chris Lattner2006-03-101-1/+1
| | | | llvm-svn: 26696
* weak globals on darwin require an extra load, breaking this testChris Lattner2006-03-101-1/+1
| | | | llvm-svn: 26695
* Fix incorrect definitions of these intrinsics, which broke a bunch ofChris Lattner2006-03-101-2/+4
| | | | | | stuff last night. llvm-svn: 26694
* Move simple-selector-specific types to the simple selector.Chris Lattner2006-03-102-201/+202
| | | | llvm-svn: 26693
* Simplify the interface to the schedulers, to not pass the selected heuristicin.Chris Lattner2006-03-102-9/+28
| | | | llvm-svn: 26692
* Simplify the interface to the schedulers, to not pass the selected heuristicChris Lattner2006-03-101-14/+4
| | | | | | in. llvm-svn: 26691
* Move some simple-sched-specific instance vars to the simple scheduler.Chris Lattner2006-03-104-29/+32
| | | | llvm-svn: 26690
* prune #includesChris Lattner2006-03-101-5/+0
| | | | llvm-svn: 26689
* move some simple scheduler methods into the simple schedulerChris Lattner2006-03-103-264/+266
| | | | llvm-svn: 26688
* Make EmitNode take a SDNode instead of a NodeInfo*Chris Lattner2006-03-103-13/+7
| | | | llvm-svn: 26687
* Move the VRBase field from NodeInfo to being a separate, explicit, map.Chris Lattner2006-03-102-13/+27
| | | | llvm-svn: 26686
* Store VRBase in a map, not in NodeInfo.Chris Lattner2006-03-101-12/+5
| | | | llvm-svn: 26685
* no need to build groups anymoreChris Lattner2006-03-101-2/+0
| | | | llvm-svn: 26684
* Create SUnits directly from the SelectionDAG.Chris Lattner2006-03-101-87/+87
| | | | llvm-svn: 26683
* Push PrepareNodeInfo/IdentifyGroups down the inheritance hierarchyChris Lattner2006-03-103-4/+10
| | | | llvm-svn: 26682
* make some methods protected instead of privateChris Lattner2006-03-101-4/+4
| | | | llvm-svn: 26681
* Teach the latency scheduler some new tricks. In particular, to break ties,Chris Lattner2006-03-101-9/+156
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | keep track of a sense of "mobility", i.e. how many other nodes scheduling one node will free up. For something like this: float testadd(float *X, float *Y, float *Z, float *W, float *V) { return (*X+*Y)*(*Z+*W)+*V; } For example, this makes us schedule *X then *Y, not *X then *Z. The former allows us to issue the add, the later only lets us issue other loads. This turns the above code from this: _testadd: lfs f0, 0(r3) lfs f1, 0(r6) lfs f2, 0(r4) lfs f3, 0(r5) fadds f0, f0, f2 fadds f1, f3, f1 lfs f2, 0(r7) fmadds f1, f0, f1, f2 blr into this: _testadd: lfs f0, 0(r6) lfs f1, 0(r5) fadds f0, f1, f0 lfs f1, 0(r4) lfs f2, 0(r3) fadds f1, f2, f1 lfs f2, 0(r7) fmadds f1, f1, f0, f2 blr llvm-svn: 26680
* Put intrinsics.gen in its proper place.Jeff Cohen2006-03-101-5/+7
| | | | llvm-svn: 26679
* add an aggregate method for reinserting scheduled nodes, add a callback forChris Lattner2006-03-101-8/+23
| | | | | | priority impls that want to be notified when a node is scheduled llvm-svn: 26678
* Fix an incorrect intrinsic descriptionChris Lattner2006-03-101-2/+3
| | | | llvm-svn: 26677
* Fix VC++ build breakage.Jeff Cohen2006-03-103-3/+34
| | | | llvm-svn: 26676
* Adding an intrinsic is simpler still.Chris Lattner2006-03-091-4/+0
| | | | llvm-svn: 26674
* use autogenerated side-effect informationChris Lattner2006-03-091-27/+5
| | | | llvm-svn: 26673
* generate side-effect infoChris Lattner2006-03-092-0/+27
| | | | llvm-svn: 26672
* Simpler stillChris Lattner2006-03-091-4/+0
| | | | llvm-svn: 26671
* Use autogenerated mod/ref info for intrinsics.Chris Lattner2006-03-091-22/+26
| | | | llvm-svn: 26670
OpenPOWER on IntegriCloud