summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* 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 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
* 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 a methodChris Lattner2005-08-211-0/+9
| | | | llvm-svn: 22949
* Add support for basic blocks, fix a bug in result # computationChris Lattner2005-08-211-2/+7
| | | | llvm-svn: 22948
* When legalizing brcond ->brcc or select -> selectcc, make sure to truncateChris Lattner2005-08-211-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the old condition to a one bit value. The incoming value must have been promoted, and the top bits are undefined. This causes us to generate: _test: rlwinm r2, r3, 0, 31, 31 li r3, 17 cmpwi cr0, r2, 0 bne .LBB_test_2 ; .LBB_test_1: ; li r3, 1 .LBB_test_2: ; blr instead of: _test: rlwinm r2, r3, 0, 31, 31 li r2, 17 cmpwi cr0, r3, 0 bne .LBB_test_2 ; .LBB_test_1: ; li r2, 1 .LBB_test_2: ; or r3, r2, r2 blr for: int %test(bool %c) { %retval = select bool %c, int 17, int 1 ret int %retval } llvm-svn: 22947
* If the false value for a select_cc is really simple (has no inputs), evaluateChris Lattner2005-08-211-1/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | it in the block. This codegens: int %test(bool %c) { %retval = select bool %c, int 17, int 1 ret int %retval } as: _test: rlwinm r2, r3, 0, 31, 31 li r2, 17 cmpwi cr0, r3, 0 bne .LBB_test_2 ; .LBB_test_1: ; li r2, 1 .LBB_test_2: ; or r3, r2, r2 blr instead of: _test: rlwinm r2, r3, 0, 31, 31 li r2, 17 li r4, 1 cmpwi cr0, r3, 0 bne .LBB_test_2 ; .LBB_test_1: ; or r2, r4, r4 .LBB_test_2: ; or r3, r2, r2 blr ... which is one fewer instruction. The savings are more significant for global address and constantfp nodes. llvm-svn: 22946
* reenable collapse of loadimm+AND -> dep.z (thanks guys)Duraid Madina2005-08-211-5/+6
| | | | llvm-svn: 22944
* fix bogus warningChris Lattner2005-08-201-1/+1
| | | | llvm-svn: 22943
* Repair an out by one error for IA64.Jim Laskey2005-08-201-1/+1
| | | | llvm-svn: 22942
* add support for global address, including PIC support.Chris Lattner2005-08-191-1/+48
| | | | | | This REALLY should be lowered by the legalizer! llvm-svn: 22941
* Add support for global address nodesChris Lattner2005-08-191-0/+3
| | | | llvm-svn: 22940
* Add support for TargetGlobalAddress nodesChris Lattner2005-08-191-1/+14
| | | | llvm-svn: 22938
* 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
* Fix a bug in previous commitChris Lattner2005-08-191-1/+2
| | | | llvm-svn: 22936
* Fix a typeo, no wonder all tokenfactor edges were the same!Chris Lattner2005-08-191-1/+1
| | | | llvm-svn: 22935
* Print physreg register nodes with target names (e.g. F1) instead of numbersChris Lattner2005-08-192-2/+12
| | | | llvm-svn: 22934
OpenPOWER on IntegriCloud