summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
...
* Remove unused statisticNate Begeman2005-08-241-3/+5
| | | | | | Prefer 'neg X' to 'subfic 0, X' since neg does not set XER[CA] llvm-svn: 23001
* Add the "ppc specific" setcc-equivalent select_cc casesNate Begeman2005-08-241-4/+25
| | | | | | Prefer 'neg X' to 'subfic 0, X' since it does not set XER[CA] llvm-svn: 23000
* Teach SelectionDAG how to simplify a few more setcc-equivalent select_ccNate Begeman2005-08-241-6/+21
| | | | | | nodes so that backends don't have to. llvm-svn: 22999
* Add callseq_begin/end supportChris Lattner2005-08-241-0/+10
| | | | | | Call stil not supported yet llvm-svn: 22998
* Make -view-isel-dags show the dag before instruction selecting, in caseChris Lattner2005-08-241-2/+2
| | | | | | the target isel crashes due to unimplemented features like calls :) llvm-svn: 22997
* Fix optimization of select_cc seteq X, 0, 1, 0 -> srl (ctlz X), log2 X sizeNate Begeman2005-08-241-3/+3
| | | | llvm-svn: 22995
* Implement LiveVariables.h changeChris Lattner2005-08-241-0/+30
| | | | llvm-svn: 22994
* Keep the killed/dead sets sorted, so that "KillsRegister" can do a quickChris Lattner2005-08-241-22/+26
| | | | | | | | | | | | | binary search to test for membership. This speeds up LLC a bit more on KC++, e.g. on itanium from 16.6974s to 14.8272s, PPC from 11.4926s to 10.7089s and X86 from 10.8128s to 9.7943s, with no difference in generated code (like all of the RA patches). With these changes, isel is the slowest pass for PPC/X86, but linscan+live intervals is still > 50% of the compile time for itanium. More work could be done, but this is the last for now. llvm-svn: 22993
* adjust to new live variables interfaceChris Lattner2005-08-233-35/+32
| | | | llvm-svn: 22992
* Adjust to new livevars interfaceChris Lattner2005-08-231-4/+4
| | | | llvm-svn: 22991
* Change live variables from using multimaps to using maps of vectors andChris Lattner2005-08-231-46/+62
| | | | | | | | | | | | | | rearrange some of the accessors to be more efficient. This makes it much more efficient to iterate over all of the things with the same value. This speeds up liveintervals analysis from 8.63s to 3.79s with a release build of llc on kc++ with -march=ia64. This also speeds up live var from 1.66s -> 0.87s as well, reducing total llc time from 20.1s->15.2s. This also speeds up other targets slightly, e.g. llc time on X86 from 16.84 -> 16.45s, and PPC from 17.64->17.03s. llvm-svn: 22990
* Simplify this code by using higher-level LiveVariables methodsChris Lattner2005-08-231-20/+10
| | | | llvm-svn: 22989
* Simplify this code by using LiveVariables::KillsRegisterChris Lattner2005-08-231-35/+11
| | | | llvm-svn: 22988
* Add RegisterDefIsDead to correspond to KillsRegister, mark both constChris Lattner2005-08-231-2/+14
| | | | llvm-svn: 22987
* Keep track of which registers are related to which other registers.Chris Lattner2005-08-231-21/+86
| | | | | | | | | | | | | Use this information to avoid doing expensive interval intersections for registers that could not possible be interesting. This speeds up linscan on ia64 compiling kc++ in release mode from taking 7.82s to 4.8s(!), total itanium llc time on this program is 27.3s now. This marginally speeds up PPC and X86, but they appear to be limited by other parts of linscan, not this code. On this program, on itanium, live intervals now takes 41% of llc time. llvm-svn: 22986
* add a methodChris Lattner2005-08-231-0/+2
| | | | llvm-svn: 22985
* Fix PR618 and Regression/CodeGen/CBackend/2005-08-23-Fmod.ll by not emittingChris Lattner2005-08-231-0/+14
| | | | | | x%y for 'rem' on fp values. llvm-svn: 22984
* New testcase for PR618Chris Lattner2005-08-231-0/+6
| | | | llvm-svn: 22983
* add a noteChris Lattner2005-08-231-0/+20
| | | | llvm-svn: 22982
* Ack, typoNate Begeman2005-08-231-1/+1
| | | | llvm-svn: 22981
* Add an option to make SetCC illegal as a beta optionNate Begeman2005-08-231-0/+10
| | | | llvm-svn: 22979
* Teach the SelectionDAG how to transform select_cc eq, X, 0, 1, 0 intoNate Begeman2005-08-231-0/+17
| | | | | | | either seteq X, 0 or srl (ctlz X), size(X-1), depending on what's legal for the target. llvm-svn: 22978
* Teach Legalize how to turn setcc into select_ccNate Begeman2005-08-231-18/+31
| | | | llvm-svn: 22977
* Remove some instructions we no longer generateNate Begeman2005-08-231-24/+0
| | | | llvm-svn: 22976
* Remove some regs that are not used.Chris Lattner2005-08-222-8/+1
| | | | llvm-svn: 22975
* Nate noticed that 30% of the malloc/frees in llc come from calls to ↵Chris Lattner2005-08-222-44/+44
| | | | | | | | | | LowercaseString in the asmprinter. This changes the .td files to use lower case register names, avoiding the need to do this call. This speeds up the asmprinter from 1.52s to 1.06s on kc++ in a release build. llvm-svn: 22974
* Fix a crash I introduced into the IA64 backend with my copyfromreg change.Chris Lattner2005-08-221-1/+3
| | | | | | It used to crash on any function that took float arguments. llvm-svn: 22973
* Try to avoid scanning the fixed list. On architectures with a non-stupidChris Lattner2005-08-221-20/+55
| | | | | | | | | | | | | number of regs (e.g. most riscs), many functions won't need to use callee clobbered registers. Do a speculative check to see if we can get a free register without processing the fixed list (which has all of these). This saves a lot of time on machines with lots of callee clobbered regs (e.g. ppc and itanium, also x86). This reduces ppc llc compile time from 184s -> 172s on kc++. This is probably worth FAR FAR more on itanium though. llvm-svn: 22972
* Move some code in the register assignment case that only needs to happen ifChris Lattner2005-08-221-17/+26
| | | | | | | | we spill out of the fast path. The scan of active_ and the calls to updateSpillWeights don't need to happen unless a spill occurs. This reduces debug llc time of kc++ with ppc from 187.3s to 183.2s. llvm-svn: 22971
* Add a pass name for -time-passes outputChris Lattner2005-08-221-0/+1
| | | | llvm-svn: 22970
* Fix a problem where constant expr shifts would not have their shift amountChris Lattner2005-08-221-5/+5
| | | | | | promoted to the right type. This fixes: IA64/2005-08-22-LegalizerCrash.ll llvm-svn: 22969
* Testcase for a crash in the legalizer on ia64. This is reduced from kc++.Chris Lattner2005-08-221-0/+11
| | | | llvm-svn: 22968
* Add a long-overdue itanium regression test dir: hint hint Duraid :)Chris Lattner2005-08-221-0/+3
| | | | llvm-svn: 22967
* Speed up this loop a bit, based on some observations that Nate made, andChris Lattner2005-08-221-8/+34
| | | | | | add some comments. This loop really needs to be reevaluated! llvm-svn: 22966
* Revert my patch which changed the code to not work.Chris Lattner2005-08-221-2/+1
| | | | llvm-svn: 22965
* Make the example a bit easier to understand, suggested by Jim.Chris Lattner2005-08-221-1/+2
| | | | llvm-svn: 22964
* Implement stores.Chris Lattner2005-08-221-0/+26
| | | | llvm-svn: 22963
* 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
* Fix compilation of:Chris Lattner2005-08-221-1/+1
| | | | | | | | | | | | float %test2(float* %P) { %Q = load float* %P %R = add float %Q, %Q ret float %R } By returning the right result. llvm-svn: 22961
* Make sure expressions only have one use before emitting them into a place ↵Chris Lattner2005-08-221-3/+4
| | | | | | that is conditionally executed llvm-svn: 22960
* Implement most of load support. There is still a bug though.Chris Lattner2005-08-211-8/+96
| | | | llvm-svn: 22959
* add a methodChris Lattner2005-08-211-0/+3
| | | | llvm-svn: 22958
* add anew methodChris Lattner2005-08-211-0/+10
| | | | llvm-svn: 22957
* Add support for frame index nodesChris Lattner2005-08-211-3/+4
| | | | llvm-svn: 22956
* add a methodChris Lattner2005-08-211-0/+9
| | | | llvm-svn: 22955
* ADd a methodChris Lattner2005-08-211-0/+2
| | | | llvm-svn: 22954
* Don't print out the MBB label for the entry mbbChris Lattner2005-08-211-2/+6
| | | | llvm-svn: 22953
* Simplify the logic for BRTWOWAY_CC handling. The isel code alreadyChris Lattner2005-08-211-16/+7
| | | | | | | | simplifies BRTWOWAY into BR if one of the results is a fall-through. Unless I'm missing something, there is no reason to duplicate this in the target-specific code. llvm-svn: 22952
* Implement selection for branches.Chris Lattner2005-08-211-0/+83
| | | | llvm-svn: 22951
* Add 5-operand version of SelectNodeToChris Lattner2005-08-212-0/+15
| | | | llvm-svn: 22950
OpenPOWER on IntegriCloud