summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* Fix a nasty bug from a previous patch of mineChris Lattner2005-08-261-1/+1
| | | | llvm-svn: 23069
* Emit the lo/hi parts in the right order :)Chris Lattner2005-08-251-1/+1
| | | | llvm-svn: 23068
* implement support for 64-bit add/sub, fix a broken assertion for 64-bitChris Lattner2005-08-251-2/+58
| | | | | | | return. Allow the udiv breaker-upper to work with any non-zero constant operand. llvm-svn: 23066
* simplify the add/sub_parts codeChris Lattner2005-08-251-16/+24
| | | | llvm-svn: 23065
* Finish implementing SDIV/UDIV by copying over the majik constant code fromChris Lattner2005-08-251-3/+180
| | | | | | ISelPattern llvm-svn: 23062
* Simplify some code. It's not clear why the UDIV expanded sequenceChris Lattner2005-08-251-13/+7
| | | | | | doesn't work for large uint constants, but we'll keep the current behavior llvm-svn: 23061
* Implement setcc correctly for G5 and non-G5 systemsChris Lattner2005-08-251-11/+17
| | | | llvm-svn: 23060
* implement setcc on the G5. We're still missing the non-g5 specific bits, butChris Lattner2005-08-251-0/+121
| | | | | | they will come later. llvm-svn: 23059
* New fold for SELECT_CCNate Begeman2005-08-251-1/+19
| | | | llvm-svn: 23058
* Remove option to make SetCC illegal on PowerPC after long discussion withNate Begeman2005-08-251-11/+0
| | | | | | | Chris. This will be accomplished through correctly modeling CR's and subregs. llvm-svn: 23056
* Don't auto-cse nodes that return flagsChris Lattner2005-08-251-17/+38
| | | | llvm-svn: 23055
* add printer support for flag operandsChris Lattner2005-08-251-0/+1
| | | | llvm-svn: 23054
* simplify the code a bit using isOperationLegalChris Lattner2005-08-251-4/+3
| | | | llvm-svn: 23053
* Add support for sdiv by 2^k and -2^k. Producing code like:Chris Lattner2005-08-251-1/+27
| | | | | | | | | _test: srawi r2, r3, 2 addze r3, r2 blr llvm-svn: 23052
* fit in 80 colsChris Lattner2005-08-251-1/+1
| | | | llvm-svn: 23051
* Add support for flag operandsChris Lattner2005-08-251-8/+18
| | | | llvm-svn: 23050
* add an enum valueChris Lattner2005-08-251-2/+3
| | | | llvm-svn: 23048
* Implement support for taking the address of constant pool indices, whichChris Lattner2005-08-251-0/+10
| | | | | | | is used by the int -> FP code among other things. This gets 2005-05-12-Int64ToFP past that failure, to dying on lack of support for add_parts llvm-svn: 23042
* ADd support for TargetConstantPool nodesChris Lattner2005-08-251-1/+14
| | | | llvm-svn: 23041
* Add support for FP constants, fixing UnitTests/2004-02-02-NegativeZeroChris Lattner2005-08-251-6/+25
| | | | llvm-svn: 23038
* Fully implement frame index, so that we can pass the address of alloca'sChris Lattner2005-08-251-4/+12
| | | | | | around to functions and stuff llvm-svn: 23036
* add a new TargetFrameIndex nodeChris Lattner2005-08-251-1/+13
| | | | llvm-svn: 23035
* implement unconditional branches, fixing UnitTests/2003-05-02-DependentPHI.cChris Lattner2005-08-251-1/+4
| | | | llvm-svn: 23034
* LFS/STFS load and store FP values, not integer ones. This change allows usChris Lattner2005-08-251-4/+4
| | | | | | | | | | | | | | | | | | | | | | | to codegen this: float foo() { return 1.245; } into this: _foo: lis r2, ha16(.CPI_foo_0) lfs f1, lo16(.CPI_foo_0)(r2) blr instead of this: _foo: lis r2, ha16(.CPI_foo_0) lfs r2, lo16(.CPI_foo_0)(r2) <-- ouch or f1, r2, r2 <-- ouch blr with the dag isel. llvm-svn: 23033
* Fix a broken assertionChris Lattner2005-08-251-1/+1
| | | | llvm-svn: 23032
* Fix a warningChris Lattner2005-08-251-0/+1
| | | | llvm-svn: 23031
* fix a warning in optimized buildChris Lattner2005-08-251-1/+1
| | | | llvm-svn: 23030
* Fix some warningsChris Lattner2005-08-252-0/+2
| | | | llvm-svn: 23029
* Split IMPLICIT_DEF into IMPLICIT_DEF_GPR and IMPLICIT_DEF_FP, so that theChris Lattner2005-08-245-7/+21
| | | | | | | instructions take a consistent reg class. Implement ISD::UNDEF in the dag->dag selector to generate this, fixing UnitTests/2003-07-06-IntOverflow. llvm-svn: 23028
* add a methodChris Lattner2005-08-241-0/+6
| | | | llvm-svn: 23027
* implement support for callsChris Lattner2005-08-241-3/+99
| | | | llvm-svn: 23026
* Add ReplaceAllUsesWith that can take a vector of replacement values.Chris Lattner2005-08-241-15/+90
| | | | | | Add some foldings to hopefully help the illegal setcc issue, and move some code around. llvm-svn: 23025
* Remove some dead cases.Chris Lattner2005-08-241-7/+1
| | | | | | | | | | | | | Emit the indcall sequence as: mtctr inreg mr R12, inreg btctr If inreg and R12 aren't coallesced, this reduces the odds of having the mtctr and btctr in the same dispatch group. :) llvm-svn: 23023
* Add support for external symbols, and support for variable arity instructionsChris Lattner2005-08-241-5/+12
| | | | llvm-svn: 23022
* Fix pasto that prevented VT ndoes from showing up in -view-isel-dags correctlyChris Lattner2005-08-241-1/+1
| | | | llvm-svn: 23021
* add an ideaChris Lattner2005-08-241-0/+30
| | | | llvm-svn: 23020
* Fix Regression/Transforms/Reassociate/2005-08-24-Crash.llChris Lattner2005-08-241-1/+7
| | | | llvm-svn: 23019
* Transform floor((double)FLT) -> (double)floorf(FLT), implementingChris Lattner2005-08-241-17/+55
| | | | | | | Regression/Transforms/SimplifyLibCalls/floor.ll. This triggers 19 times in 177.mesa. llvm-svn: 23017
* floor/ceil don't read/write memory. This allows gcse to eliminate 6 callsChris Lattner2005-08-241-0/+2
| | | | | | in mesa. llvm-svn: 23015
* teach selection dag mask tracking about the fact that select_cc operates likeChris Lattner2005-08-241-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | select. Also teach it that the bit count instructions can only set the low bits of the result, depending on the size of the input. This allows us to compile this: int %eq0(int %a) { %tmp.1 = seteq int %a, 0 ; <bool> [#uses=1] %tmp.2 = cast bool %tmp.1 to int ; <int> [#uses=1] ret int %tmp.2 } To this: _eq0: cntlzw r2, r3 srwi r3, r2, 5 blr instead of this: _eq0: cntlzw r2, r3 rlwinm r3, r2, 27, 31, 31 blr when setcc is marked illegal on ppc (which restores parity to non-illegal setcc). Thanks to Nate for pointing this out. llvm-svn: 23013
* Start using isOperationLegal and isTypeLegal to simplify the codeChris Lattner2005-08-241-28/+23
| | | | llvm-svn: 23012
* Adjust to new interfaceChris Lattner2005-08-241-4/+4
| | | | llvm-svn: 23010
* For PR616:Reid Spencer2005-08-241-3/+17
| | | | | | | | | | These patches make threading optional in LLVM. The configuration scripts are now modified to accept a --disable-threads switch. If this is used, the Mutex class will be implemented with all functions as no-op. Furthermore, linking against libpthread will not be done. Finally, the ParallelJIT example needs libpthread so its makefile was changed to always add -lpthread to the link line. llvm-svn: 23003
* Whoops, fix a thinko. All cases except SETNE are now handled by theNate Begeman2005-08-241-11/+3
| | | | | | target independent code in SelectionDAG.cpp llvm-svn: 23002
* 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
OpenPOWER on IntegriCloud