#
87cb471e |
| 28-Aug-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Remove extra MayLoad/MayStore flags from atomic_load/store.
These extra flags are not required to properly order the atomic load/store instructions. SelectionDAGBuilder chains atomics as if they wer
Remove extra MayLoad/MayStore flags from atomic_load/store.
These extra flags are not required to properly order the atomic load/store instructions. SelectionDAGBuilder chains atomics as if they were volatile, and SelectionDAG::getAtomic() sets the isVolatile bit on the memory operands of all atomic operations.
The volatile bit is enough to order atomic loads and stores during and after SelectionDAG.
This means we set mayLoad on atomic_load, mayStore on atomic_store, and mayLoad+mayStore on the remaining atomic read-modify-write operations.
llvm-svn: 162733
show more ...
|
#
50882f79 |
| 16-Aug-2012 |
Nadav Rotem <nrotem@apple.com> |
Add dump/dumpr methods to SDValue.
llvm-svn: 162014
|
#
505715d8 |
| 07-Aug-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add SelectionDAG::getTargetIndex.
This adds support for TargetIndex operands during isel. The meaning of these (index, offset, flags) operands is entirely defined by the target.
llvm-svn: 161453
|
#
a62368c9 |
| 15-Jul-2012 |
Nadav Rotem <nadav.rotem@intel.com> |
Refactor the code that checks that all operands of a node are UNDEFs. Add a micro-optimization to getNode of CONCAT_VECTORS when both operands are undefs. Can't find a testcase for this because VECTO
Refactor the code that checks that all operands of a node are UNDEFs. Add a micro-optimization to getNode of CONCAT_VECTORS when both operands are undefs. Can't find a testcase for this because VECTOR_SHUFFLE already handles undef operands, but Duncan suggested that we add this.
Together with Michael Kuperstein <michael.m.kuperstein@intel.com>
llvm-svn: 160229
show more ...
|
Revision tags: llvmorg-3.1.0, llvmorg-3.1.0-rc3, llvmorg-3.1.0-rc2, llvmorg-3.1.0-rc1 |
|
#
80c540e6 |
| 31-Mar-2012 |
Rafael Espindola <rafael.espindola@gmail.com> |
Teach CodeGen's version of computeMaskedBits to understand the range metadata. This is the CodeGen equivalent of r153747. I tested that there is not noticeable performance difference with any combina
Teach CodeGen's version of computeMaskedBits to understand the range metadata. This is the CodeGen equivalent of r153747. I tested that there is not noticeable performance difference with any combination of -O0/-O2 /-g when compiling gcc as a single compilation unit.
llvm-svn: 153817
show more ...
|
#
9349351d |
| 18-Jan-2012 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Add a RegisterMaskSDNode class.
This SelectionDAG node will be attached to call nodes by LowerCall(), and eventually becomes a MO_RegisterMask MachineOperand on the MachineInstr representing the cal
Add a RegisterMaskSDNode class.
This SelectionDAG node will be attached to call nodes by LowerCall(), and eventually becomes a MO_RegisterMask MachineOperand on the MachineInstr representing the call instruction.
LowerCall() will attach a register mask that depends on the calling convention.
llvm-svn: 148436
show more ...
|
#
339ced4e |
| 15-Jan-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
Return an ArrayRef from ShuffleVectorSDNode::getMask and push it through CodeGen.
llvm-svn: 148218
|
Revision tags: llvmorg-3.0.0, llvmorg-3.0.0-rc4 |
|
#
c5c49466 |
| 10-Nov-2011 |
Owen Anderson <resistor@mac.com> |
Add additional checking to ensure that MachineMemOperands are never set to null, which can happen in weird circumstances where target intrinsic hooks are implemented incorrectly.
llvm-svn: 144303
|
#
82cd9e81 |
| 08-Nov-2011 |
Pete Cooper <peter_cooper@apple.com> |
Added invariant field to the DAG.getLoad method and changed all calls.
When this field is true it means that the load is from constant (runt-time or compile-time) and so can be hoisted from loops or
Added invariant field to the DAG.getLoad method and changed all calls.
When this field is true it means that the load is from constant (runt-time or compile-time) and so can be hoisted from loops or moved around other memory accesses
llvm-svn: 144100
show more ...
|
Revision tags: llvmorg-3.0.0-rc3, llvmorg-3.0.0-rc2, llvmorg-3.0.0-rc1 |
|
#
e978d2f6 |
| 07-Sep-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Relax the MemOperands on atomics a bit. Fixes -verify-machineinstrs failures for atomic laod/store on ARM.
(The fix for the related failures on x86 is going to be nastier because we actually need A
Relax the MemOperands on atomics a bit. Fixes -verify-machineinstrs failures for atomic laod/store on ARM.
(The fix for the related failures on x86 is going to be nastier because we actually need Acquire memoperands attached to the atomic load instrs, etc.)
llvm-svn: 139221
show more ...
|
#
342e8df0 |
| 24-Aug-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Basic x86 code generation for atomic load and store instructions.
llvm-svn: 138478
|
#
adec587d |
| 29-Jul-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Misc optimizer+codegen work for 'cmpxchg' and 'atomicrmw'. They appear to be working on x86 (at least for trivial testcases); other architectures will need more work so that they actually emit the a
Misc optimizer+codegen work for 'cmpxchg' and 'atomicrmw'. They appear to be working on x86 (at least for trivial testcases); other architectures will need more work so that they actually emit the appropriate instructions for orderings stricter than 'monotonic'. (As far as I can tell, the ARM, PPC, Mips, and Alpha backends need such changes.)
llvm-svn: 136457
show more ...
|
#
229907cd |
| 18-Jul-2011 |
Chris Lattner <sabre@nondot.org> |
land David Blaikie's patch to de-constify Type, with a few tweaks.
llvm-svn: 135375
|
#
5a00499e |
| 07-Jul-2011 |
Lang Hames <lhames@gmail.com> |
Add functions 'hasPredecessor' and 'hasPredecessorHelper' to SDNode. The hasPredecessorHelper function allows predecessors to be cached to speed up repeated invocations. This fixes PR10186.
X.isPred
Add functions 'hasPredecessor' and 'hasPredecessorHelper' to SDNode. The hasPredecessorHelper function allows predecessors to be cached to speed up repeated invocations. This fixes PR10186.
X.isPredecessorOf(Y) now just calls Y.hasPredecessor(X)
Y.hasPredecessor(X) calls Y.hasPredecessorHelper(X, Visited, Worklist) with empty Visited and Worklist sets (i.e. no caching over invocations).
Y.hasPredecessorHelper(X, Visited, Worklist) caches search state in Visited and Worklist to speed up repeated calls. The Visited set is searched for X before going to the worklist to further search the DAG if necessary.
llvm-svn: 134592
show more ...
|
#
0ab5e2cd |
| 15-Apr-2011 |
Chris Lattner <sabre@nondot.org> |
Fix a ton of comment typos found by codespell. Patch by Luis Felipe Strano Moraes!
llvm-svn: 129558
|
Revision tags: llvmorg-2.9.0, llvmorg-2.9.0-rc3, llvmorg-2.9.0-rc2, llvmorg-2.9.0-rc1 |
|
#
11a33811 |
| 23-Dec-2010 |
Chris Lattner <sabre@nondot.org> |
flags -> glue for selectiondag
llvm-svn: 122509
|
#
3e5fbd74 |
| 21-Dec-2010 |
Chris Lattner <sabre@nondot.org> |
rename MVT::Flag to MVT::Glue. "Flag" is a terrible name for something that just glues two nodes together, even if it is sometimes used for flags.
llvm-svn: 122310
|
#
447762da |
| 29-Nov-2010 |
Michael J. Spencer <bigcheesegs@gmail.com> |
Merge System into Support.
llvm-svn: 120298
|
#
14627770 |
| 03-Nov-2010 |
Duncan Sands <baldrick@free.fr> |
Simplify uses of MVT and EVT. An MVT can be compared directly with a SimpleValueType, while an EVT supports equality and inequality comparisons with SimpleValueType.
llvm-svn: 118169
|
#
e660f4d0 |
| 26-Oct-2010 |
Dale Johannesen <dalej@apple.com> |
Use a MemIntrinsicSDNode for ISD::PREFETCH, which touches memory, so a MachineMemOperand is useful (not propagated into the MachineInstr yet). No functional change except for dump output.
llvm-svn:
Use a MemIntrinsicSDNode for ISD::PREFETCH, which touches memory, so a MachineMemOperand is useful (not propagated into the MachineInstr yet). No functional change except for dump output.
llvm-svn: 117413
show more ...
|
#
a94cc6df |
| 20-Oct-2010 |
Dan Gohman <gohman@apple.com> |
Make CodeGen TBAA-aware.
llvm-svn: 116890
|
Revision tags: llvmorg-2.8.0, llvmorg-2.8.0-rc3 |
|
#
de93bb06 |
| 21-Sep-2010 |
Chris Lattner <sabre@nondot.org> |
add some helpful accessors.
llvm-svn: 114400
|
Revision tags: llvmorg-2.8.0-rc2, llvmorg-2.8.0-rc1, llvmorg-2.8.0-rc0 |
|
#
c54936c1 |
| 07-Jul-2010 |
Dan Gohman <gohman@apple.com> |
Move ArgFlagsTy, OutputArg, and InputArg out of SelectionDAGNodes.h and into a new header, TargetCallingConv.h.
llvm-svn: 107782
|
#
a3ca21b2 |
| 06-Jul-2010 |
Devang Patel <dpatel@apple.com> |
Propagate debug loc.
llvm-svn: 107710
|
#
4e49b59d |
| 06-Jul-2010 |
Dan Gohman <gohman@apple.com> |
Add versions of OutputArgReg, AnalyzeReturn, and AnalyzeCallOperands which do not depend on SelectionDAG.
llvm-svn: 107666
|