1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 03:53:04 +02:00
llvm-mirror/lib/Target/NVPTX
Arpith Chacko Jacob 82b0fc2a51 [NVPTX] Add intrinsics to support named barriers.
Support for barrier synchronization between a subset of threads
in a CTA through one of sixteen explicitly specified barriers.
These intrinsics are not directly exposed in CUDA but are
critical for forthcoming support of OpenMP on NVPTX GPUs.

The intrinsics allow the synchronization of an arbitrary
(multiple of 32) number of threads in a CTA at one of 16
distinct barriers. The two intrinsics added are as follows:

call void @llvm.nvvm.barrier.n(i32 10)
waits for all threads in a CTA to arrive at named barrier #10.

call void @llvm.nvvm.barrier(i32 15, i32 992)
waits for 992 threads in a CTA to arrive at barrier #15.

Detailed description of these intrinsics are available in the PTX manual.
http://docs.nvidia.com/cuda/parallel-thread-execution/#parallel-synchronization-and-communication-instructions

Reviewers: hfinkel, jlebar
Differential Revision: https://reviews.llvm.org/D17657

llvm-svn: 293384
2017-01-28 16:38:15 +00:00
..
InstPrinter [NVPTX] Added support for half-precision floating point. 2017-01-13 20:56:17 +00:00
MCTargetDesc [NVPTX] Remove string constants from NVPTXBaseInfo.h. 2016-12-14 22:32:44 +00:00
TargetInfo Move the global variables representing each Target behind accessor function 2016-10-09 23:00:34 +00:00
cl_common_defines.h
CMakeLists.txt [NVPTX] Remove NVPTXFavorNonGenericAddrSpaces pass. 2016-10-31 21:51:42 +00:00
LLVMBuild.txt NVPTXCodeGen: Add IPO to libdeps, since r293189. 2017-01-27 02:11:10 +00:00
ManagedStringPool.h [NVPTX] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-09 22:16:51 +00:00
NVPTX.h [NVPTX] Let there be One True Way to set NVVMReflect params. 2017-01-15 16:54:35 +00:00
NVPTX.td [NVPTX] Added intrinsics for atom.gen.{sys|cta}.* instructions. 2016-09-28 17:25:38 +00:00
NVPTXAllocaHoisting.cpp Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
NVPTXAllocaHoisting.h
NVPTXAsmPrinter.cpp [NVPTX] Support global variables of integer type larger than i64. 2017-01-18 00:29:53 +00:00
NVPTXAsmPrinter.h [NVPTX] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-09 22:16:51 +00:00
NVPTXAssignValidGlobalNames.cpp
NVPTXFrameLowering.cpp MachineFunction: Return reference for getFrameInfo(); NFC 2016-07-28 18:40:00 +00:00
NVPTXFrameLowering.h Change eliminateCallFramePseudoInstr() to return an iterator 2016-03-31 18:33:38 +00:00
NVPTXGenericToNVVM.cpp CodeGen: Remove MachineFunctionAnalysis => Enable (Machine)ModulePasses 2016-08-24 01:52:46 +00:00
NVPTXImageOptimizer.cpp Add optimization bisect opt-in calls for NVPTX passes 2016-04-26 23:44:31 +00:00
NVPTXInferAddressSpaces.cpp NVPTX: Make NVPTXInferAddressSpaces preserve CFG 2017-01-27 17:30:39 +00:00
NVPTXInstrFormats.td
NVPTXInstrInfo.cpp [NVPTX] Added support for half-precision floating point. 2017-01-13 20:56:17 +00:00
NVPTXInstrInfo.h [NVPTX] Remove dead code. 2016-12-14 23:20:40 +00:00
NVPTXInstrInfo.td [NVPTX] Standardize asm printer on "foo \tbar". 2017-01-18 00:09:36 +00:00
NVPTXIntrinsics.td [NVPTX] Add intrinsics to support named barriers. 2017-01-28 16:38:15 +00:00
NVPTXISelDAGToDAG.cpp [NVPTX] Move getDivF32Level, usePrecSqrtF32, and useF32FTZ into out of DAGToDAG and into TargetLowering. 2017-01-21 01:00:14 +00:00
NVPTXISelDAGToDAG.h [NVPTX] Added support for half-precision floating point. 2017-01-13 20:56:17 +00:00
NVPTXISelLowering.cpp [NVPTX] Move getDivF32Level, usePrecSqrtF32, and useF32FTZ into out of DAGToDAG and into TargetLowering. 2017-01-21 01:00:14 +00:00
NVPTXISelLowering.h [NVPTX] Move getDivF32Level, usePrecSqrtF32, and useF32FTZ into out of DAGToDAG and into TargetLowering. 2017-01-21 01:00:14 +00:00
NVPTXLowerAggrCopies.cpp Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
NVPTXLowerAggrCopies.h
NVPTXLowerAlloca.cpp [NVPTX] Remove NVPTXFavorNonGenericAddrSpaces pass. 2016-10-31 21:51:42 +00:00
NVPTXLowerArgs.cpp [NVPTX] Remove NVPTXFavorNonGenericAddrSpaces pass. 2016-10-31 21:51:42 +00:00
NVPTXMachineFunctionInfo.h
NVPTXMCExpr.cpp [NVPTX] Added support for half-precision floating point. 2017-01-13 20:56:17 +00:00
NVPTXMCExpr.h [NVPTX] Added support for half-precision floating point. 2017-01-13 20:56:17 +00:00
NVPTXPeephole.cpp [CodeGen] Rename MachineInstrBuilder::addOperand. NFC 2017-01-13 09:58:52 +00:00
NVPTXPrologEpilogPass.cpp MachineFunction: Return reference for getFrameInfo(); NFC 2016-07-28 18:40:00 +00:00
NVPTXRegisterInfo.cpp [NVPTX] Added support for half-precision floating point. 2017-01-13 20:56:17 +00:00
NVPTXRegisterInfo.h
NVPTXRegisterInfo.td [NVPTX] Added support for half-precision floating point. 2017-01-13 20:56:17 +00:00
NVPTXReplaceImageHandles.cpp Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
NVPTXSection.h [NVPTX] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-09 22:16:51 +00:00
NVPTXSubtarget.cpp [NVPTX] Added support for half-precision floating point. 2017-01-13 20:56:17 +00:00
NVPTXSubtarget.h [NVPTX] Added support for half-precision floating point. 2017-01-13 20:56:17 +00:00
NVPTXTargetMachine.cpp Replace addEarlyAsPossiblePasses callback with adjustPassManager 2017-01-26 16:49:08 +00:00
NVPTXTargetMachine.h Replace addEarlyAsPossiblePasses callback with adjustPassManager 2017-01-26 16:49:08 +00:00
NVPTXTargetObjectFile.h [NVPTX] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-09 22:16:51 +00:00
NVPTXTargetTransformInfo.cpp [X86] updating TTI costs for arithmetic instructions on X86\SLM arch. 2017-01-11 08:23:37 +00:00
NVPTXTargetTransformInfo.h [X86] updating TTI costs for arithmetic instructions on X86\SLM arch. 2017-01-11 08:23:37 +00:00
NVPTXUtilities.cpp [NVPTX] Remove dead code. 2016-12-14 23:20:40 +00:00
NVPTXUtilities.h [NVPTX] Remove dead #defines from NVPTXUtilities.h. 2016-12-15 00:45:06 +00:00
NVPTXVector.td
NVVMIntrRange.cpp [NVVMIntrRange] Only set range metadata if none is already present 2016-12-22 00:51:59 +00:00
NVVMReflect.cpp [NVPTX] Let there be One True Way to set NVVMReflect params. 2017-01-15 16:54:35 +00:00