Revision tags: llvmorg-2.4.0 |
|
#
2d636b52 |
| 07-Nov-2008 |
Duncan Sands <baldrick@free.fr> |
Sign-extend rather than zero-extend when promoting the condition for a BRCOND, according to what is returned by getSetCCResultContents. Since all targets return the same thing (ZeroOrOneSetCCResult)
Sign-extend rather than zero-extend when promoting the condition for a BRCOND, according to what is returned by getSetCCResultContents. Since all targets return the same thing (ZeroOrOneSetCCResult), this should be harmless! The point is that all over the place the result of SETCC is fed directly into BRCOND. On machines for which getSetCCResultContents returns ZeroOrNegativeOneSetCCResult, this is a sign-extended boolean. So it seems dangerous to also feed BRCOND zero-extended booleans in some circumstances - for example, when promoting the condition.
llvm-svn: 58861
show more ...
|
#
a1a388ca |
| 22-Oct-2008 |
Duncan Sands <baldrick@free.fr> |
Add some comments explaining the meaning of a boolean that is not of type MVT::i1 in SELECT and SETCC nodes. Relax the LegalizeTypes SELECT condition promotion sanity checks to allow other condition
Add some comments explaining the meaning of a boolean that is not of type MVT::i1 in SELECT and SETCC nodes. Relax the LegalizeTypes SELECT condition promotion sanity checks to allow other condition types than i1.
llvm-svn: 57966
show more ...
|
#
82860267 |
| 21-Oct-2008 |
Bill Wendling <isanbard@gmail.com> |
Fix comment to name "TokenFactor" instead of "Token factor".
llvm-svn: 57939
|
#
2fe6bee5 |
| 18-Oct-2008 |
Dan Gohman <gohman@apple.com> |
Teach DAGCombine to fold constant offsets into GlobalAddress nodes, and add a TargetLowering hook for it to use to determine when this is legal (i.e. not in PIC mode, etc.)
This allows instruction s
Teach DAGCombine to fold constant offsets into GlobalAddress nodes, and add a TargetLowering hook for it to use to determine when this is legal (i.e. not in PIC mode, etc.)
This allows instruction selection to emit folded constant offsets in more cases, such as the included testcase, eliminating the need for explicit arithmetic instructions.
This eliminates the need for the C++ code in X86ISelDAGToDAG.cpp that attempted to achieve the same effect, but wasn't as effective.
Also, fix handling of offsets in GlobalAddressSDNodes in several places, including changing GlobalAddressSDNode's offset from int to int64_t.
The Mips, Alpha, Sparc, and CellSPU targets appear to be unaware of GlobalAddress offsets currently, so set the hook to false on those targets.
llvm-svn: 57748
show more ...
|
#
85f48ade |
| 17-Oct-2008 |
Mon P Wang <wangmp@apple.com> |
Added MemIntrinsicNode which is useful to represent target intrinsics that touches memory and need an associated MemOperand
llvm-svn: 57712
|
#
07d53b1d |
| 14-Oct-2008 |
Evan Cheng <evan.cheng@apple.com> |
Rename LoadX to LoadExt.
llvm-svn: 57526
|
#
4f0bd68c |
| 09-Oct-2008 |
Dale Johannesen <dalej@apple.com> |
Add a "loses information" return value to APFloat::convert and APFloat::convertToInteger. Restore return value to IEEE754. Adjust all users accordingly.
llvm-svn: 57329
|
#
6e054833 |
| 26-Sep-2008 |
Dan Gohman <gohman@apple.com> |
Rename ConstantSDNode's getSignExtended to getSExtValue, for consistancy with ConstantInt, and re-implement it in terms of ConstantInt's getSExtValue.
llvm-svn: 56700
|
#
0e32a2c9 |
| 26-Sep-2008 |
Dale Johannesen <dalej@apple.com> |
Add "inreg" field to CallSDNode (doesn't increase its size). Adjust various lowering functions to pass this info through from CallInst. Use it to implement sseregparm returns on X86. Remove X86_ss
Add "inreg" field to CallSDNode (doesn't increase its size). Adjust various lowering functions to pass this info through from CallInst. Use it to implement sseregparm returns on X86. Remove X86_ssecall calling convention.
llvm-svn: 56677
show more ...
|
#
c50ada2f |
| 25-Sep-2008 |
Dale Johannesen <dalej@apple.com> |
Accept 'inreg' attribute on x86 functions as meaning sse_regparm (i.e. float/double values go in XMM0 instead of ST0). Update documentation to reflect reality.
llvm-svn: 56619
|
#
b0f876d5 |
| 20-Sep-2008 |
Cedric Venet <cedric.venet@laposte.net> |
Update VS projects. Change some class to struct for coherency.
llvm-svn: 56389
|
#
83ee17cd |
| 19-Sep-2008 |
Dan Gohman <gohman@apple.com> |
Now that ConstantSDNode doesn't hold an APInt, use ARG_FLAGSSDNode as the most aligned node type, as it contains an int64_t, which is 8-byte aligned on mingw.
llvm-svn: 56358
|
#
24c79f28 |
| 16-Sep-2008 |
Bill Wendling <isanbard@gmail.com> |
Reverting r56249. On further investigation, this functionality isn't needed.
Apologies for the thrashing.
llvm-svn: 56251
|
#
8bc392fb |
| 16-Sep-2008 |
Bill Wendling <isanbard@gmail.com> |
- Change "ExternalSymbolSDNode" to "SymbolSDNode". - Add linkage to SymbolSDNode (default to external). - Change ISD::ExternalSymbol to ISD::Symbol. - Change ISD::TargetExternalSymbol to ISD::TargetS
- Change "ExternalSymbolSDNode" to "SymbolSDNode". - Add linkage to SymbolSDNode (default to external). - Change ISD::ExternalSymbol to ISD::Symbol. - Change ISD::TargetExternalSymbol to ISD::TargetSymbol
These changes pave the way to allowing SymbolSDNodes with non-external linkage.
llvm-svn: 56249
show more ...
|
#
3c7b9ba5 |
| 15-Sep-2008 |
Dan Gohman <gohman@apple.com> |
Re-enable SelectionDAG CSE for calls. It matters in the case of libcalls, as in this testcase on ARM.
llvm-svn: 56226
|
#
d3fe174c |
| 13-Sep-2008 |
Dan Gohman <gohman@apple.com> |
Define CallSDNode, an SDNode subclass for use with ISD::CALL. Currently it just holds the calling convention and flags for isVarArgs and isTailCall.
And it has several utility methods, which elimina
Define CallSDNode, an SDNode subclass for use with ISD::CALL. Currently it just holds the calling convention and flags for isVarArgs and isTailCall.
And it has several utility methods, which eliminate magic 5+2*i and similar index computations in several places.
CallSDNodes are not CSE'd. Teach UpdateNodeOperands to handle nodes that are not CSE'd gracefully.
llvm-svn: 56183
show more ...
|
#
ec270fb6 |
| 12-Sep-2008 |
Dan Gohman <gohman@apple.com> |
Change ConstantSDNode and ConstantFPSDNode to use ConstantInt* and ConstantFP* instead of APInt and APFloat directly.
This reduces the amount of time to create ConstantSDNode and ConstantFPSDNode no
Change ConstantSDNode and ConstantFPSDNode to use ConstantInt* and ConstantFP* instead of APInt and APFloat directly.
This reduces the amount of time to create ConstantSDNode and ConstantFPSDNode nodes when ConstantInt* and ConstantFP* respectively are already available, as is the case in SelectionDAGBuild.cpp. Also, it reduces the amount of time to legalize constants into constant pools, and the amount of time to add ConstantFP operands to MachineInstrs, due to eliminating ConstantInt::get and ConstantFP::get calls.
It increases the amount of work needed to create new constants in cases where the client doesn't already have a ConstantInt* or ConstantFP*, such as legalize expanding 64-bit integer constants to 32-bit constants. And it adds a layer of indirection for the accessor methods. But these appear to be outweight by the benefits in most cases.
It will also make it easier to make ConstantSDNode and ConstantFPNode more consistent with ConstantInt and ConstantFP.
llvm-svn: 56162
show more ...
|
#
effb8944 |
| 12-Sep-2008 |
Dan Gohman <gohman@apple.com> |
Rename ConstantSDNode::getValue to getZExtValue, for consistency with ConstantInt. This led to fixing a bug in TargetLowering.cpp using getValue instead of getAPIntValue.
llvm-svn: 56159
|
#
58d084c0 |
| 11-Sep-2008 |
Dale Johannesen <dalej@apple.com> |
The version of AtomicSDNode::AtomicSDNode used (only) for cmp-and-swap reversed the Cmp and Swap arguments; comments make it clear this is unintentional. Unfortunately, the x86 BE had a compensating
The version of AtomicSDNode::AtomicSDNode used (only) for cmp-and-swap reversed the Cmp and Swap arguments; comments make it clear this is unintentional. Unfortunately, the x86 BE had a compensating reversal, which is removed here. PPC is OK.
From inspection of the Alpha code I think it is OK, but if somebody has that platform please check it out. I cannot test on that platform.
llvm-svn: 56091
show more ...
|
#
da2d8068 |
| 04-Sep-2008 |
Dale Johannesen <dalej@apple.com> |
Add intrinsics for log, log2, log10, exp, exp2. No functional change (and no FE change to generate them).
llvm-svn: 55753
|
#
f304a7aa |
| 28-Aug-2008 |
Gabor Greif <ggreif@gmail.com> |
erect abstraction boundaries for accessing SDValue members, rename Val -> Node to reflect semantics
llvm-svn: 55504
|
#
41be0d44 |
| 28-Aug-2008 |
Dale Johannesen <dalej@apple.com> |
Split the ATOMIC NodeType's to include the size, e.g. ATOMIC_LOAD_ADD_{8,16,32,64} instead of ATOMIC_LOAD_ADD. Increased the Hardcoded Constant OpActionsCapacity to match. Large but boring; no functi
Split the ATOMIC NodeType's to include the size, e.g. ATOMIC_LOAD_ADD_{8,16,32,64} instead of ATOMIC_LOAD_ADD. Increased the Hardcoded Constant OpActionsCapacity to match. Large but boring; no functional change.
This is to support partial-word atomics on ppc; i8 is not a valid type there, so by the time we get to lowering, the ATOMIC_LOAD nodes looks the same whether the type was i8 or i32. The information can be added to the AtomicSDNode, but that is the largest SDNode; I don't fully understand the SDNode allocation, but it is sensitive to the largest node size, so increasing that must be bad. This is the alternative.
llvm-svn: 55457
show more ...
|
#
abfdf928 |
| 26-Aug-2008 |
Gabor Greif <ggreif@gmail.com> |
disallow direct access to SDValue::ResNo, provide a getter instead
llvm-svn: 55394
|
#
b4a173e9 |
| 26-Aug-2008 |
Gabor Greif <ggreif@gmail.com> |
fix doxygen comment
llvm-svn: 55372
|
#
0c19df48 |
| 23-Aug-2008 |
Chris Lattner <sabre@nondot.org> |
Switch the asmprinter (.ll) and all the stuff it requires over to use raw_ostream instead of std::ostream. Among other goodness, this speeds up llvm-dis of kc++ with a release build from 0.85s to 0.
Switch the asmprinter (.ll) and all the stuff it requires over to use raw_ostream instead of std::ostream. Among other goodness, this speeds up llvm-dis of kc++ with a release build from 0.85s to 0.49s (88% faster).
Other interesting changes: 1) This makes Value::print be non-virtual. 2) AP[S]Int and ConstantRange can no longer print to ostream directly, use raw_ostream instead. 3) This fixes a bug in raw_os_ostream where it didn't flush itself when destroyed. 4) This adds a new SDNode::print method, instead of only allowing "dump".
A lot of APIs have both std::ostream and raw_ostream versions, it would be useful to go through and systematically anihilate the std::ostream versions.
This passes dejagnu, but there may be minor fallout, plz let me know if so and I'll fix it.
llvm-svn: 55263
show more ...
|