This PR is one of the many PRs in the SYCL upstreaming effort focusing on device code linking during the SYCL offload compilation process. RFC: https://discourse.llvm.org/t/rfc-offloading-design-for-sycl-offload-kind-and-spir-targets/74088 In this PR, we introduce a new tool that will be used to perform device code linking for SYCL offload kind. It accepts SYCL device objects in LLVM IR bitcode format and will generate a fully linked device object that can then be wrapped and linked into the host object. A primary use case for this tool is to perform device code linking for objects with SYCL offload kind inside the clang-linker-wrapper. It can also be invoked via clang driver as follows: `clang --target=spirv64 --sycl-link input.bc` Device code linking for SYCL offloading kind has a number of known quirks that makes it difficult to use in a unified offloading setting. Two of the primary issues are: 1. Several finalization steps are required to be run on the fully-linked LLVM IR bitcode to gaurantee conformance to SYCL standards. This step is unique to SYCL offloading compilation flow. 2. SPIR-V LLVM Translator tool is an extenal tool and hence SPIR-V IR code generation cannot be done as part of LTO. This limitation will be lifted once SPIR-V backend is available as a viable LLVM backend. Hence, we introduce this new tool to provide a clean wrapper to perform SYCL device linking. Co-Author: Michael Toguchi Thanks --------- Signed-off-by: Arvind Sudarsanam <arvind.sudarsanam@intel.com>
126 lines
2.2 KiB
ReStructuredText
126 lines
2.2 KiB
ReStructuredText
.. Clang documentation master file, created by
|
|
sphinx-quickstart on Sun Dec 9 20:01:55 2012.
|
|
You can adapt this file completely to your liking, but it should at least
|
|
contain the root `toctree` directive.
|
|
|
|
.. title:: Welcome to Clang's documentation!
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
|
|
ReleaseNotes
|
|
|
|
Using Clang as a Compiler
|
|
=========================
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
|
|
UsersManual
|
|
Toolchain
|
|
LanguageExtensions
|
|
ClangCommandLineReference
|
|
AttributeReference
|
|
DiagnosticsReference
|
|
CrossCompilation
|
|
ClangStaticAnalyzer
|
|
ThreadSafetyAnalysis
|
|
SafeBuffers
|
|
DataFlowAnalysisIntro
|
|
FunctionEffectAnalysis
|
|
AddressSanitizer
|
|
ThreadSanitizer
|
|
MemorySanitizer
|
|
UndefinedBehaviorSanitizer
|
|
DataFlowSanitizer
|
|
LeakSanitizer
|
|
RealtimeSanitizer
|
|
SanitizerCoverage
|
|
SanitizerStats
|
|
SanitizerSpecialCaseList
|
|
BoundsSafety
|
|
BoundsSafetyImplPlans
|
|
ControlFlowIntegrity
|
|
LTOVisibility
|
|
SafeStack
|
|
ShadowCallStack
|
|
SourceBasedCodeCoverage
|
|
StandardCPlusPlusModules
|
|
Modules
|
|
MSVCCompatibility
|
|
MisExpect
|
|
OpenCLSupport
|
|
OpenMPSupport
|
|
SYCLSupport
|
|
HIPSupport
|
|
HLSL/HLSLDocs
|
|
ThinLTO
|
|
APINotes
|
|
DebuggingCoroutines
|
|
AMDGPUSupport
|
|
CommandGuide/index
|
|
FAQ
|
|
|
|
Using Clang as a Library
|
|
========================
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
|
|
Tooling
|
|
ExternalClangExamples
|
|
IntroductionToTheClangAST
|
|
LibTooling
|
|
LibClang
|
|
LibFormat
|
|
ClangPlugins
|
|
RAVFrontendAction
|
|
LibASTMatchersTutorial
|
|
LibASTMatchers
|
|
ClangTransformerTutorial
|
|
LibASTImporter
|
|
HowToSetupToolingForLLVM
|
|
JSONCompilationDatabase
|
|
RefactoringEngine
|
|
|
|
Using Clang Tools
|
|
=================
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
|
|
ClangTools
|
|
ClangCheck
|
|
ClangFormat
|
|
ClangFormatStyleOptions
|
|
ClangLinkerWrapper
|
|
ClangNVLinkWrapper
|
|
ClangOffloadBundler
|
|
ClangOffloadPackager
|
|
ClangRepl
|
|
ClangSYCLLinker
|
|
|
|
Design Documents
|
|
================
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
|
|
Maintainers
|
|
InternalsManual
|
|
DriverInternals
|
|
Multilib
|
|
OffloadingDesign
|
|
PCHInternals
|
|
ItaniumMangleAbiTags
|
|
HardwareAssistedAddressSanitizerDesign.rst
|
|
ConstantInterpreter
|
|
|
|
|
|
Indices and tables
|
|
==================
|
|
|
|
* :ref:`genindex`
|
|
* :ref:`search`
|
|
|