llvm-project/llvm/lib/CodeGen/SelectionDAG
Konstantin Zhuravlyov bb80d3e1d3 Enhance synchscope representation
OpenCL 2.0 introduces the notion of memory scopes in atomic operations to
  global and local memory. These scopes restrict how synchronization is
  achieved, which can result in improved performance.

  This change extends existing notion of synchronization scopes in LLVM to
  support arbitrary scopes expressed as target-specific strings, in addition to
  the already defined scopes (single thread, system).

  The LLVM IR and MIR syntax for expressing synchronization scopes has changed
  to use *syncscope("<scope>")*, where <scope> can be "singlethread" (this
  replaces *singlethread* keyword), or a target-specific name. As before, if
  the scope is not specified, it defaults to CrossThread/System scope.

  Implementation details:
    - Mapping from synchronization scope name/string to synchronization scope id
      is stored in LLVM context;
    - CrossThread/System and SingleThread scopes are pre-defined to efficiently
      check for known scopes without comparing strings;
    - Synchronization scope names are stored in SYNC_SCOPE_NAMES_BLOCK in
      the bitcode.

Differential Revision: https://reviews.llvm.org/D21723

llvm-svn: 307722
2017-07-11 22:23:00 +00:00
..
CMakeLists.txt [DAG] Move BaseIndexOffset into separate Libarary. NFC. 2017-06-21 15:40:43 +00:00
DAGCombiner.cpp Revert "[DAG] Improve Aliasing of operations to static alloca" 2017-07-10 20:51:30 +00:00
FastISel.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
FunctionLoweringInfo.cpp ISel: Fix FastISel of swifterror values 2017-06-15 17:34:42 +00:00
InstrEmitter.cpp fix typos in comments and error messages; NFC 2017-07-10 12:44:25 +00:00
InstrEmitter.h Pass DebugLoc and SDLoc by const ref. 2016-06-12 15:39:02 +00:00
LLVMBuild.txt
LegalizeDAG.cpp Fix libcall expansion creating DAG nodes with invalid type post type legalization. 2017-07-05 22:01:49 +00:00
LegalizeFloatTypes.cpp [legalize-types] Clean up softening machinery. 2017-07-04 01:08:55 +00:00
LegalizeIntegerTypes.cpp Revert "[mips] Fix multiprecision arithmetic." 2017-06-29 20:59:47 +00:00
LegalizeTypes.cpp [legalize-types] Clean up softening machinery. 2017-07-04 01:08:55 +00:00
LegalizeTypes.h [legalize-types] Clean up softening machinery. 2017-07-04 01:08:55 +00:00
LegalizeTypesGeneric.cpp [legalize-types] Clean up softening machinery. 2017-07-04 01:08:55 +00:00
LegalizeVectorOps.cpp Added LLVM_FALLTHROUGH to address warning: this statement may fall through. NFC. 2017-06-03 05:11:14 +00:00
LegalizeVectorTypes.cpp [X86] Relax an assertion when legalizing vector types. 2017-07-09 19:22:48 +00:00
ResourcePriorityQueue.cpp Refactoring with range-based for, NFC 2017-05-04 13:35:17 +00:00
SDNodeDbgValue.h Apply clang-tidy's misc-move-constructor-init throughout LLVM. 2016-05-27 14:27:24 +00:00
ScheduleDAGFast.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
ScheduleDAGRRList.cpp [SelectionDAG] Fix an use-after-free issue introduced in r305775. 2017-06-20 09:29:43 +00:00
ScheduleDAGSDNodes.cpp Remove redundant call to GluedNodes.back() [NFC] 2017-02-19 16:56:18 +00:00
ScheduleDAGSDNodes.h [Target] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-11 01:45:03 +00:00
ScheduleDAGVLIW.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
SelectionDAG.cpp Enhance synchscope representation 2017-07-11 22:23:00 +00:00
SelectionDAGAddressAnalysis.cpp Rewrite areNonVolatileConsecutiveLoads to use BaseIndexOffset 2017-07-05 01:21:23 +00:00
SelectionDAGBuilder.cpp Enhance synchscope representation 2017-07-11 22:23:00 +00:00
SelectionDAGBuilder.h Handle ConstantExpr correctly in SelectionDAGBuilder 2017-07-09 16:01:04 +00:00
SelectionDAGDumper.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
SelectionDAGISel.cpp [FastISel] fix a fallback diagnostic. 2017-07-09 05:55:20 +00:00
SelectionDAGPrinter.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
SelectionDAGTargetInfo.cpp
StatepointLowering.cpp Reland "[SelectionDAG] Enable target specific vector scalarization of calls and returns" 2017-06-09 14:37:08 +00:00
StatepointLowering.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
TargetLowering.cpp [SelectionDAG] Use APInt::isSubsetOf. NFC 2017-06-16 23:19:14 +00:00