summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/PowerPC/PPC32ISelPattern.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Back out the previous change to SelectBranchCC, since there are cases itNate Begeman2005-04-051-4/+11
| | | | | | could miscompile. A correct solution will be found in the near future. llvm-svn: 21095
* Rename canUseAsImmediateForOpcode to getImmediateForOpcode to betterNate Begeman2005-04-051-17/+23
| | | | | | | | | indicate that it is not a boolean function. Properly emit the pseudo instruction for conditional branch, so that we can fix up conditional branches whose displacements are too large. Reserve the right amount of opcode space for said pseudo instructions. llvm-svn: 21094
* Implement SDIV by power of 2 as srawi/addze rather than load imm, divwNate Begeman2005-04-051-0/+24
| | | | llvm-svn: 21091
* Pattern match fp mul-add, mul-sub, neg-mul-add, and neg-mul-subNate Begeman2005-04-041-4/+56
| | | | llvm-svn: 21090
* Make sure that arg regs used by the call instruction are marked as such, soNate Begeman2005-04-041-15/+25
| | | | | | | that regalloc doesn't cleverly reuse early arg regs loading later arg regs. This fixes almost all outstanding failures in the pattern isel. llvm-svn: 21086
* i1 loads should also be from the low byte of the argument word.Nate Begeman2005-04-041-1/+1
| | | | llvm-svn: 21077
* Fix i64 return, fix CopyFromRegNate Begeman2005-04-041-3/+14
| | | | llvm-svn: 21076
* Full varargs support. All of UnitTests now passesNate Begeman2005-04-031-5/+15
| | | | llvm-svn: 21070
* Pass the correct value for the chain to the storeNate Begeman2005-04-031-3/+2
| | | | llvm-svn: 21066
* Fix SHL_PARTSNate Begeman2005-04-031-2/+10
| | | | | | Start implementation of integer varargs llvm-svn: 21065
* Keeping up with the Joneses.Nate Begeman2005-04-031-10/+51
| | | | | | Implement not, nor, nand, and eqv llvm-svn: 21060
* Set shift amount to ExtendNate Begeman2005-04-021-24/+101
| | | | | | | | Implement ISD::FABS and ISD::FNEG nodes Implement SHL_PARTS, SRL_PARTS, and SRA_PARTS Generate PowerPC 'fneg', 'fabs', and 'fnabs' instructions llvm-svn: 21018
* This target doesn't support fabs/fneg yet.Chris Lattner2005-04-021-0/+4
| | | | llvm-svn: 21010
* Fix i64 returnsNate Begeman2005-04-021-8/+9
| | | | | | Generate PowerPC 'subfic' instruction when appropriate llvm-svn: 20995
* Add ISD::UNDEF nodeNate Begeman2005-04-011-41/+67
| | | | | | | | | Teach the SelectionDAG code how to expand and promote it Have PPC32 LowerCallTo generate ISD::UNDEF for int arg regs used up by fp arguments, but not shadowing their value. This allows us to do the right thing with both fixed and vararg floating point arguments. llvm-svn: 20988
* Fix Olden/bh, CR0 was being set in the wrong orderNate Begeman2005-04-011-5/+3
| | | | | | | LowerCallTo and ISD::CALL are going to need to be modified, regs are being set in the wrong order. llvm-svn: 20981
* Also apply Chris's fix to FP select and SETCCNate Begeman2005-04-011-6/+8
| | | | llvm-svn: 20979
* Move the selection of the arms of the select operation up to the conditionalChris Lattner2005-04-011-2/+3
| | | | | | part to make sure we get the side effects and to avoid confusing the CFG. llvm-svn: 20977
* Fix stores to global addressesNate Begeman2005-04-011-7/+3
| | | | | | Fix calls with no arguments llvm-svn: 20975
* Support indexed loads and stores. This drops Shootout/matrix time fromNate Begeman2005-04-011-11/+40
| | | | | | | 18.8 to 14.8 seconds. The Pattern ISel is now often faster than the Simple ISel, esp. on memory intensive code. llvm-svn: 20973
* Implement FP_TO_SINT and FP_TO_UINTNate Begeman2005-04-011-11/+86
| | | | llvm-svn: 20972
* Add support for adding 0.0 and -0.0 to the constant pool, since we lie andNate Begeman2005-04-011-3/+11
| | | | | | say that we support them, for the purposes of generating fsel instructions. llvm-svn: 20970
* Factor out common code, support FP comparison in folded SetCCNate Begeman2005-04-011-84/+40
| | | | llvm-svn: 20969
* fsel generation for f32 and f64 selectNate Begeman2005-03-311-35/+181
| | | | | | | | | | generate compare immediate for integer compare with constant fold setcc into branch fold setcc into select Code generation quality for Shootout is now on par with the Simple ISel llvm-svn: 20968
* Pass the correct values to the chain argument for node construction duringNate Begeman2005-03-311-6/+14
| | | | | | | | LowerCallTo. Handle ISD::ADD in SelectAddr, allowing us to have nonzero immediates for loads and stores, amazing! llvm-svn: 20946
* Rewrite LowerCallTo and Select(ISD::CALL) to properly handle float varargsNate Begeman2005-03-311-135/+82
| | | | | | | | | | | | Tell the SelectionDAG ISel to expand SEXTLOAD of i1 and i8, rather than complicate the code in ISD::SEXTLOAD to do it by hand Combine the FP and Int ISD::LOAD codegen Generate better code for constant pool loads As a result, all of Shootout, and likely many other programs are now working. llvm-svn: 20945
* Fix calls whose arguments fit entirely in registers to not break the Chain.Nate Begeman2005-03-301-4/+51
| | | | | | | Implement SINT_TO_FP and UINT_TO_FP Remove some dead code from the simple ISel llvm-svn: 20944
* Fix frame index code to generate legal PowerPC instructions. About half ofNate Begeman2005-03-301-9/+7
| | | | | | Shootout now works. llvm-svn: 20940
* Fix external symbol printing in the AsmPrinter. Tell the ISel that weNate Begeman2005-03-301-0/+6
| | | | | | | don't support things like memcpy directly. This allows a handful of the Shootout programs to work, yay! llvm-svn: 20939
* Fix BranchCC (it's still dumb), and implement FP select (also dumb)Nate Begeman2005-03-291-4/+49
| | | | llvm-svn: 20935
* Implement integer select and i1 sign extendNate Begeman2005-03-291-2/+49
| | | | llvm-svn: 20934
* Implement SetCC, fix ZERO_EXTEND_INREGNate Begeman2005-03-291-6/+73
| | | | llvm-svn: 20933
* fix a warning in the optimized buildChris Lattner2005-03-291-0/+2
| | | | llvm-svn: 20920
* Implement div, rem, and frameindexNate Begeman2005-03-291-8/+27
| | | | llvm-svn: 20907
* Pattern ISel: fix argument loading for i64s (thanks chris)Nate Begeman2005-03-281-40/+13
| | | | | | Simple ISel: fix i64 subtract llvm-svn: 20903
* Remove fake instruction 'subc' (mnemonic for subfc).Nate Begeman2005-03-281-9/+41
| | | | | | More pattern isel updates llvm-svn: 20902
* Implement proper loads and zero-extends of all typesNate Begeman2005-03-281-12/+61
| | | | llvm-svn: 20897
* Fix that pesky floats in integer regs problem by assigning the f32 type toNate Begeman2005-03-261-8/+4
| | | | | | | the correct register class. Also remove the loading of float data into int regs part of varargs; it will need to be implemented differently later. llvm-svn: 20857
* Get closer to having varargs working. There's still something strangeNate Begeman2005-03-261-37/+38
| | | | | | | going on with copies between floating point and integer register files being generated. Once that is solved, varargs will be done. llvm-svn: 20856
* Make 64bit args and float args work correct with calls. Thanks to ChrisNate Begeman2005-03-261-10/+28
| | | | | | for explaining EXTRACT_ELEMENT to me. llvm-svn: 20847
* Next round of pattern isel changes, mostly dealing with calls.Nate Begeman2005-03-261-31/+139
| | | | llvm-svn: 20841
* Support global addresses and fix call returns. Varargs still aren'tNate Begeman2005-03-251-6/+50
| | | | | | | handled correctly for floating point arguments, or more than 8 arguemnts. This does however, allow hello world to run. llvm-svn: 20832
* Implement next round of Pattern ISel fixesNate Begeman2005-03-241-38/+162
| | | | | | | | 1. void returns 2. multiplies 3. calls llvm-svn: 20822
* Implement more of the PPC32 Pattern ISel:Nate Begeman2005-03-241-27/+118
| | | | | | | | | | | | | 1) dynamic stack alloc 2) loads 3) shifts 4) subtract 5) immediate form of add, and, or, xor 6) change flag from -pattern-isel to -enable-ppc-pattern-isel Remove dead arguments from getGlobalBaseReg in the simple ISel llvm-svn: 20810
* Fix silly "no newline at end of file" warningChris Lattner2005-03-241-1/+2
| | | | llvm-svn: 20809
* Addition of the PPC32 Pattern ISel. While it is far from complete, it willNate Begeman2005-03-241-0/+756
be brought up to parity with the current simple ISel in the coming days. Currently, -pattern-isel is required to trigger it. llvm-svn: 20805
OpenPOWER on IntegriCloud