llvm-6502/lib/CodeGen/SelectionDAG
Richard Sandiford 086791eca2 Add TargetLowering::prepareVolatileOrAtomicLoad
One unusual feature of the z architecture is that the result of a
previous load can be reused indefinitely for subsequent loads, even if
a cache-coherent store to that location is performed by another CPU.
A special serializing instruction must be used if you want to force
a load to be reattempted.

Since volatile loads are not supposed to be omitted in this way,
we should insert a serializing instruction before each such load.
The same goes for atomic loads.

The patch implements this at the IR->DAG boundary, in a similar way
to atomic fences.  It is a no-op for targets other than SystemZ.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196905 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-10 10:36:34 +00:00
..
CMakeLists.txt
DAGCombiner.cpp Fix PR18162 - Incorrect assertion assumed that the SDValue resno is zero. 2013-12-10 01:13:59 +00:00
FastISel.cpp Avoid illegal integer promotion in fastisel 2013-11-15 19:09:27 +00:00
FunctionLoweringInfo.cpp Debug Info: clean up usage of Verify. 2013-06-28 05:43:10 +00:00
InstrEmitter.cpp Fix patchpoint comments. 2013-11-19 05:05:43 +00:00
InstrEmitter.h Revert "Give internal classes hidden visibility." 2013-09-11 18:05:11 +00:00
LegalizeDAG.cpp Add support for legalizing SETNE/SETEQ by inverting the condition code and the result of the comparison. 2013-11-21 13:24:49 +00:00
LegalizeFloatTypes.cpp Keep TBAA info when rewriting SelectionDAG loads and stores 2013-10-28 11:17:59 +00:00
LegalizeIntegerTypes.cpp Keep TBAA info when rewriting SelectionDAG loads and stores 2013-10-28 11:17:59 +00:00
LegalizeTypes.cpp [DAG] Refactor vector splitting code in SelectionDAG. No functional change intended. 2013-11-19 21:20:17 +00:00
LegalizeTypes.h Correct word hyphenations 2013-12-05 05:44:44 +00:00
LegalizeTypesGeneric.cpp SelectionDAG: Optimize expansion of vec_type = BITCAST scalar_type 2013-11-22 00:41:05 +00:00
LegalizeVectorOps.cpp Keep TBAA info when rewriting SelectionDAG loads and stores 2013-10-28 11:17:59 +00:00
LegalizeVectorTypes.cpp Correct word hyphenations 2013-12-05 05:44:44 +00:00
LLVMBuild.txt
Makefile
ResourcePriorityQueue.cpp Rename variables for consistency. 2013-09-11 00:41:02 +00:00
ScheduleDAGFast.cpp Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size. 2013-07-14 04:42:23 +00:00
ScheduleDAGRRList.cpp Fix spelling intruction -> instruction. 2013-09-28 11:46:15 +00:00
ScheduleDAGSDNodes.cpp [PATCH] Fix PR17168 (DAG scheduler inserts DBG_VALUE before PHI with fast-isel) 2013-10-18 14:20:11 +00:00
ScheduleDAGSDNodes.h Revert "Give internal classes hidden visibility." 2013-09-11 18:05:11 +00:00
ScheduleDAGVLIW.cpp
SDNodeDbgValue.h Revert "Give internal classes hidden visibility." 2013-09-11 18:05:11 +00:00
SelectionDAG.cpp [DAG] Refactor vector splitting code in SelectionDAG. No functional change intended. 2013-11-19 21:20:17 +00:00
SelectionDAGBuilder.cpp Add TargetLowering::prepareVolatileOrAtomicLoad 2013-12-10 10:36:34 +00:00
SelectionDAGBuilder.h Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
SelectionDAGDumper.cpp Add addrspacecast instruction. 2013-11-15 01:34:59 +00:00
SelectionDAGISel.cpp Revert "Fix miscompile of MS inline assembly with stack realignment" 2013-12-10 05:31:27 +00:00
SelectionDAGPrinter.cpp
TargetLowering.cpp Lower stackmap intrinsics directly to their target opcode in the DAG builder. 2013-10-31 17:18:24 +00:00
TargetSelectionDAGInfo.cpp