Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Checking types here is not safe, because multiple types can map to the same | Chris Lattner | 2005-08-26 | 1 | -3/+0 | |
| | | | | | | register class. llvm-svn: 23103 | |||||
* | Revampt ReplaceAllUsesWith to be more efficient and easier to use. | Chris Lattner | 2005-08-26 | 1 | -5/+53 | |
| | | | | llvm-svn: 23087 | |||||
* | Change ConstantPoolSDNode to actually hold the Constant itself instead of | Chris Lattner | 2005-08-26 | 1 | -12/+11 | |
| | | | | | | | | putting it into the constant pool. This allows the isel machinery to create constants that it will end up deciding are not needed, without them ending up in the resultant function constant pool. llvm-svn: 23081 | |||||
* | Fix a huge annoyance: SelectNodeTo took types before the opcode unlike | Chris Lattner | 2005-08-26 | 1 | -19/+17 | |
| | | | | | | every other SD API. Fix it to take the opcode before the types. llvm-svn: 23079 | |||||
* | Fix a nasty bug from a previous patch of mine | Chris Lattner | 2005-08-26 | 1 | -1/+1 | |
| | | | | llvm-svn: 23069 | |||||
* | New fold for SELECT_CC | Nate Begeman | 2005-08-25 | 1 | -1/+19 | |
| | | | | llvm-svn: 23058 | |||||
* | Don't auto-cse nodes that return flags | Chris Lattner | 2005-08-25 | 1 | -17/+38 | |
| | | | | llvm-svn: 23055 | |||||
* | simplify the code a bit using isOperationLegal | Chris Lattner | 2005-08-25 | 1 | -4/+3 | |
| | | | | llvm-svn: 23053 | |||||
* | ADd support for TargetConstantPool nodes | Chris Lattner | 2005-08-25 | 1 | -1/+14 | |
| | | | | llvm-svn: 23041 | |||||
* | add a new TargetFrameIndex node | Chris Lattner | 2005-08-25 | 1 | -1/+13 | |
| | | | | llvm-svn: 23035 | |||||
* | add a method | Chris Lattner | 2005-08-24 | 1 | -0/+6 | |
| | | | | llvm-svn: 23027 | |||||
* | Add ReplaceAllUsesWith that can take a vector of replacement values. | Chris Lattner | 2005-08-24 | 1 | -15/+90 | |
| | | | | | | Add some foldings to hopefully help the illegal setcc issue, and move some code around. llvm-svn: 23025 | |||||
* | teach selection dag mask tracking about the fact that select_cc operates like | Chris Lattner | 2005-08-24 | 1 | -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 | |||||
* | Teach SelectionDAG how to simplify a few more setcc-equivalent select_cc | Nate Begeman | 2005-08-24 | 1 | -6/+21 | |
| | | | | | | nodes so that backends don't have to. llvm-svn: 22999 | |||||
* | Fix optimization of select_cc seteq X, 0, 1, 0 -> srl (ctlz X), log2 X size | Nate Begeman | 2005-08-24 | 1 | -3/+3 | |
| | | | | llvm-svn: 22995 | |||||
* | Teach the SelectionDAG how to transform select_cc eq, X, 0, 1, 0 into | Nate Begeman | 2005-08-23 | 1 | -0/+17 | |
| | | | | | | | either seteq X, 0 or srl (ctlz X), size(X-1), depending on what's legal for the target. llvm-svn: 22978 | |||||
* | add anew method | Chris Lattner | 2005-08-21 | 1 | -0/+10 | |
| | | | | llvm-svn: 22957 | |||||
* | add a method | Chris Lattner | 2005-08-21 | 1 | -0/+9 | |
| | | | | llvm-svn: 22955 | |||||
* | add a method | Chris Lattner | 2005-08-21 | 1 | -0/+9 | |
| | | | | llvm-svn: 22949 | |||||
* | Add support for TargetGlobalAddress nodes | Chris Lattner | 2005-08-19 | 1 | -1/+14 | |
| | | | | llvm-svn: 22938 | |||||
* | Fix a bug in previous commit | Chris Lattner | 2005-08-19 | 1 | -1/+2 | |
| | | | | llvm-svn: 22936 | |||||
* | Print physreg register nodes with target names (e.g. F1) instead of numbers | Chris Lattner | 2005-08-19 | 1 | -1/+5 | |
| | | | | llvm-svn: 22934 | |||||
* | Fix VC++ precedence warning. | Jeff Cohen | 2005-08-19 | 1 | -1/+1 | |
| | | | | llvm-svn: 22902 | |||||
* | Add support for target DAG nodes that take 4 operands, such as PowerPC's | Nate Begeman | 2005-08-18 | 1 | -0/+8 | |
| | | | | | | rlwinm. llvm-svn: 22856 | |||||
* | Fix printing of VTSDNodes | Chris Lattner | 2005-08-18 | 1 | -0/+3 | |
| | | | | llvm-svn: 22853 | |||||
* | Move the code dependency for MathExtras.h from SelectionDAGNodes.h. | Jim Laskey | 2005-08-17 | 1 | -1/+21 | |
| | | | | | | Added some class dividers in SelectionDAG.cpp. llvm-svn: 22841 | |||||
* | Culling out use of unions for converting FP to bits and vice versa. | Jim Laskey | 2005-08-17 | 1 | -14/+3 | |
| | | | | llvm-svn: 22838 | |||||
* | Fix a bug in RemoveDeadNodes where it would crash when its "optional" | Chris Lattner | 2005-08-17 | 1 | -1/+77 | |
| | | | | | | | | argument is not specified. Implement ReplaceAllUsesWith. llvm-svn: 22834 | |||||
* | add a new TargetConstant node | Chris Lattner | 2005-08-17 | 1 | -1/+19 | |
| | | | | llvm-svn: 22813 | |||||
* | Eliminate the RegSDNode class, which 3 nodes (CopyFromReg/CopyToReg/ImplicitDef) | Chris Lattner | 2005-08-16 | 1 | -2/+20 | |
| | | | | | | | | | | | | | | used to tack a register number onto the node. Instead of doing this, make a new node, RegisterSDNode, which is a leaf containing a register number. These three operations just become normal DAG nodes now, instead of requiring special handling. Note that with this change, it is no longer correct to make illegal CopyFromReg/CopyToReg nodes. The legalizer will not touch them, and this is bad, so don't do it. :) llvm-svn: 22806 | |||||
* | Implement BR_CC and BRTWOWAY_CC. This allows the removal of a rather nasty | Nate Begeman | 2005-08-16 | 1 | -1/+7 | |
| | | | | | | | fixme from the PowerPC backend. Emit slightly better code for legalizing select_cc. llvm-svn: 22805 | |||||
* | Allow passing a dag into dump and getOperationName. If one is available | Chris Lattner | 2005-08-16 | 1 | -9/+21 | |
| | | | | | | | when printing a node, use it to render target operations with their target instruction name instead of "<<unknown>>". llvm-svn: 22804 | |||||
* | Add some methods for dag->dag isel. | Chris Lattner | 2005-08-16 | 1 | -18/+58 | |
| | | | | | | Split RemoveNodeFromCSEMaps out of DeleteNodesIfDead to do it. llvm-svn: 22801 | |||||
* | Remove an unncessary argument to SimplifySelectCC and add an additional | Nate Begeman | 2005-08-13 | 1 | -8/+10 | |
| | | | | | | assert when creating a select_cc node. llvm-svn: 22780 | |||||
* | Fix the fabs regression on x86 by abstracting the select_cc optimization | Nate Begeman | 2005-08-13 | 1 | -68/+83 | |
| | | | | | | | out into SimplifySelectCC. This allows both ISD::SELECT and ISD::SELECT_CC to use the same set of simplifying folds. llvm-svn: 22779 | |||||
* | implement a couple of simple shift foldings. | Chris Lattner | 2005-08-12 | 1 | -0/+18 | |
| | | | | | | e.g. (X & 7) >> 3 -> 0 llvm-svn: 22774 | |||||
* | Add a select_cc optimization for recognizing abs(int). This speeds up an | Nate Begeman | 2005-08-11 | 1 | -0/+16 | |
| | | | | | | integer MPEG encoding loop by a factor of two. llvm-svn: 22758 | |||||
* | Some SELECT_CC cleanups: | Nate Begeman | 2005-08-11 | 1 | -53/+59 | |
| | | | | | | | | | | | | 1. move assertions for node creation to getNode() 2. legalize the values returned in ExpandOp immediately 3. Move select_cc optimizations from SELECT's getNode() to SELECT_CC's, allowing them to be cleaned up significantly. This paves the way to pick up additional optimizations on SELECT_CC, such as sum-of-absolute-differences. llvm-svn: 22757 | |||||
* | Add new node, SELECT_CC. This node is for targets that don't natively | Nate Begeman | 2005-08-10 | 1 | -2/+1 | |
| | | | | | | implement SELECT. llvm-svn: 22755 | |||||
* | Fix an oversight that may be causing PR617. | Chris Lattner | 2005-08-10 | 1 | -4/+13 | |
| | | | | llvm-svn: 22753 | |||||
* | Fix spelling, fix some broken canonicalizations by my last patch | Chris Lattner | 2005-08-09 | 1 | -12/+11 | |
| | | | | llvm-svn: 22734 | |||||
* | add cc nodes to the AllNodes list so they show up in Graphviz output | Chris Lattner | 2005-08-09 | 1 | -1/+3 | |
| | | | | llvm-svn: 22731 | |||||
* | Eliminate the SetCCSDNode in favor of a CondCodeSDNode class. This pulls the | Chris Lattner | 2005-08-09 | 1 | -128/+138 | |
| | | | | | | | | CC out of the SetCC operation, making SETCC a standard ternary operation and CC's a standard DAG leaf. This will make it possible for other node to use CC's as operands in the future... llvm-svn: 22728 | |||||
* | add a small simplification that can be exposed after promotion/expansion | Chris Lattner | 2005-08-07 | 1 | -2/+7 | |
| | | | | llvm-svn: 22691 | |||||
* | Fix a use-of-dangling-pointer bug, from the introduction of SrcValue's. | Chris Lattner | 2005-08-05 | 1 | -0/+5 | |
| | | | | llvm-svn: 22679 | |||||
* | Update to use the new MathExtras.h support for log2 computation. | Chris Lattner | 2005-08-02 | 1 | -14/+6 | |
| | | | | | | Patch contributed by Jim Laskey! llvm-svn: 22594 | |||||
* | Eliminate all remaining tabs and trailing spaces. | Jeff Cohen | 2005-07-27 | 1 | -4/+4 | |
| | | | | llvm-svn: 22523 | |||||
* | Change *EXTLOAD to use an VTSDNode operand instead of being an MVTSDNode. | Chris Lattner | 2005-07-10 | 1 | -68/+38 | |
| | | | | | | | | | This is the last MVTSDNode. This allows us to eliminate a bunch of special case code for handling MVTSDNodes. llvm-svn: 22367 | |||||
* | Change TRUNCSTORE to use a VTSDNode operand instead of being an MVTSTDNode | Chris Lattner | 2005-07-10 | 1 | -42/+35 | |
| | | | | llvm-svn: 22366 | |||||
* | Introduce a new VTSDNode class with the ultimate goal of eliminating the | Chris Lattner | 2005-07-10 | 1 | -62/+79 | |
| | | | | | | | | MVTSDNode class. This class is used to provide an operand to operators that require an extra type. We start by converting FP_ROUND_INREG and SIGN_EXTEND_INREG over to using it. llvm-svn: 22364 |