[docs,utils] Convert text files from CRLF to LF
Skip *.bat, *.natvis, utils/lit/tests/Inputs/shtest-shell/diff-in.dos
This commit is contained in:
@@ -27,18 +27,18 @@ Subcommands
|
||||
a different purpose. A brief summary of each command follows, with more detail
|
||||
in the sections that follow.
|
||||
|
||||
* :ref:`pretty_subcommand` - Dump symbol and type information in a format that
|
||||
* :ref:`pretty_subcommand` - Dump symbol and type information in a format that
|
||||
tries to look as much like the original source code as possible.
|
||||
* :ref:`dump_subcommand` - Dump low level types and structures from the PDB
|
||||
* :ref:`dump_subcommand` - Dump low level types and structures from the PDB
|
||||
file, including CodeView records, hash tables, PDB streams, etc.
|
||||
* :ref:`bytes_subcommand` - Dump data from the PDB file's streams, records,
|
||||
* :ref:`bytes_subcommand` - Dump data from the PDB file's streams, records,
|
||||
types, symbols, etc as raw bytes.
|
||||
* :ref:`yaml2pdb_subcommand` - Given a yaml description of a PDB file, produce
|
||||
* :ref:`yaml2pdb_subcommand` - Given a yaml description of a PDB file, produce
|
||||
a valid PDB file that matches that description.
|
||||
* :ref:`pdb2yaml_subcommand` - For a given PDB file, produce a YAML
|
||||
description of some or all of the file in a way that the PDB can be
|
||||
* :ref:`pdb2yaml_subcommand` - For a given PDB file, produce a YAML
|
||||
description of some or all of the file in a way that the PDB can be
|
||||
reconstructed.
|
||||
* :ref:`merge_subcommand` - Given two PDBs, produce a third PDB that is the
|
||||
* :ref:`merge_subcommand` - Given two PDBs, produce a third PDB that is the
|
||||
result of merging the two input PDBs.
|
||||
|
||||
.. _pretty_subcommand:
|
||||
@@ -49,7 +49,7 @@ pretty
|
||||
.. program:: llvm-pdbutil pretty
|
||||
|
||||
.. important::
|
||||
The **pretty** subcommand is built on the Windows DIA SDK, and as such is not
|
||||
The **pretty** subcommand is built on the Windows DIA SDK, and as such is not
|
||||
supported on non-Windows platforms.
|
||||
|
||||
USAGE: :program:`llvm-pdbutil` pretty [*options*] <input PDB file>
|
||||
@@ -57,10 +57,10 @@ USAGE: :program:`llvm-pdbutil` pretty [*options*] <input PDB file>
|
||||
Summary
|
||||
^^^^^^^^^^^
|
||||
|
||||
The *pretty* subcommand displays a very high level representation of your
|
||||
program's debug info. Since it is built on the Windows DIA SDK which is the
|
||||
standard API that Windows tools and debuggers query debug information, it
|
||||
presents a more authoritative view of how a debugger is going to interpret your
|
||||
The *pretty* subcommand displays a very high level representation of your
|
||||
program's debug info. Since it is built on the Windows DIA SDK which is the
|
||||
standard API that Windows tools and debuggers query debug information, it
|
||||
presents a more authoritative view of how a debugger is going to interpret your
|
||||
debug information than a mode which displays low-level CodeView records.
|
||||
|
||||
Options
|
||||
@@ -70,55 +70,55 @@ Filtering and Sorting Options
|
||||
+++++++++++++++++++++++++++++
|
||||
|
||||
.. note::
|
||||
*exclude* filters take priority over *include* filters. So if a filter
|
||||
*exclude* filters take priority over *include* filters. So if a filter
|
||||
matches both an include and an exclude rule, then it is excluded.
|
||||
|
||||
.. option:: -exclude-compilands=<string>
|
||||
|
||||
When dumping compilands, compiland source-file contributions, or per-compiland
|
||||
symbols, this option instructs **llvm-pdbutil** to omit any compilands that
|
||||
When dumping compilands, compiland source-file contributions, or per-compiland
|
||||
symbols, this option instructs **llvm-pdbutil** to omit any compilands that
|
||||
match the specified regular expression.
|
||||
|
||||
.. option:: -exclude-symbols=<string>
|
||||
|
||||
When dumping global, public, or per-compiland symbols, this option instructs
|
||||
**llvm-pdbutil** to omit any symbols that match the specified regular
|
||||
When dumping global, public, or per-compiland symbols, this option instructs
|
||||
**llvm-pdbutil** to omit any symbols that match the specified regular
|
||||
expression.
|
||||
|
||||
.. option:: -exclude-types=<string>
|
||||
|
||||
When dumping types, this option instructs **llvm-pdbutil** to omit any types
|
||||
When dumping types, this option instructs **llvm-pdbutil** to omit any types
|
||||
that match the specified regular expression.
|
||||
|
||||
.. option:: -include-compilands=<string>
|
||||
|
||||
When dumping compilands, compiland source-file contributions, or per-compiland
|
||||
symbols, limit the initial search to only those compilands that match the
|
||||
When dumping compilands, compiland source-file contributions, or per-compiland
|
||||
symbols, limit the initial search to only those compilands that match the
|
||||
specified regular expression.
|
||||
|
||||
.. option:: -include-symbols=<string>
|
||||
|
||||
When dumping global, public, or per-compiland symbols, limit the initial
|
||||
When dumping global, public, or per-compiland symbols, limit the initial
|
||||
search to only those symbols that match the specified regular expression.
|
||||
|
||||
.. option:: -include-types=<string>
|
||||
|
||||
When dumping types, limit the initial search to only those types that match
|
||||
When dumping types, limit the initial search to only those types that match
|
||||
the specified regular expression.
|
||||
|
||||
.. option:: -min-class-padding=<uint>
|
||||
|
||||
Only display types that have at least the specified amount of alignment
|
||||
Only display types that have at least the specified amount of alignment
|
||||
padding, accounting for padding in base classes and aggregate field members.
|
||||
|
||||
.. option:: -min-class-padding-imm=<uint>
|
||||
|
||||
Only display types that have at least the specified amount of alignment
|
||||
Only display types that have at least the specified amount of alignment
|
||||
padding, ignoring padding in base classes and aggregate field members.
|
||||
|
||||
.. option:: -min-type-size=<uint>
|
||||
|
||||
Only display types T where sizeof(T) is greater than or equal to the specified
|
||||
Only display types T where sizeof(T) is greater than or equal to the specified
|
||||
amount.
|
||||
|
||||
.. option:: -no-compiler-generated
|
||||
@@ -127,7 +127,7 @@ Filtering and Sorting Options
|
||||
|
||||
.. option:: -no-enum-definitions
|
||||
|
||||
When dumping an enum, don't show the full enum (e.g. the individual enumerator
|
||||
When dumping an enum, don't show the full enum (e.g. the individual enumerator
|
||||
values).
|
||||
|
||||
.. option:: -no-system-libs
|
||||
@@ -233,12 +233,12 @@ Other Options
|
||||
|
||||
.. option:: -color-output
|
||||
|
||||
Force color output on or off. By default, color if used if outputting to a
|
||||
Force color output on or off. By default, color if used if outputting to a
|
||||
terminal.
|
||||
|
||||
.. option:: -load-address=<uint>
|
||||
|
||||
When displaying relative virtual addresses, assume the process is loaded at the
|
||||
When displaying relative virtual addresses, assume the process is loaded at the
|
||||
given address and display what would be the absolute address.
|
||||
|
||||
.. _dump_subcommand:
|
||||
@@ -253,14 +253,14 @@ USAGE: :program:`llvm-pdbutil` dump [*options*] <input PDB file>
|
||||
Summary
|
||||
^^^^^^^^^^^
|
||||
|
||||
The **dump** subcommand displays low level information about the structure of a
|
||||
PDB file. It is used heavily by LLVM's testing infrastructure, but can also be
|
||||
used for PDB forensics. It serves a role similar to that of Microsoft's
|
||||
`cvdump` tool.
|
||||
|
||||
.. note::
|
||||
The **dump** subcommand exposes internal details of the file format. As
|
||||
such, the reader should be familiar with :doc:`/PDB/index` before using this
|
||||
The **dump** subcommand displays low level information about the structure of a
|
||||
PDB file. It is used heavily by LLVM's testing infrastructure, but can also be
|
||||
used for PDB forensics. It serves a role similar to that of Microsoft's
|
||||
`cvdump` tool.
|
||||
|
||||
.. note::
|
||||
The **dump** subcommand exposes internal details of the file format. As
|
||||
such, the reader should be familiar with :doc:`/PDB/index` before using this
|
||||
command.
|
||||
|
||||
Options
|
||||
@@ -388,8 +388,8 @@ Type Record Options
|
||||
When used in conjunction with :option:`-type-index` or :option:`-id-index`,
|
||||
dumps the entire dependency graph for the specified index instead of just the
|
||||
single record with the specified index. For example, if type index 0x4000 is
|
||||
a function whose return type has index 0x3000, and you specify
|
||||
`-dependents=0x4000`, then this would dump both records (as well as any other
|
||||
a function whose return type has index 0x3000, and you specify
|
||||
`-dependents=0x4000`, then this would dump both records (as well as any other
|
||||
dependents in the tree).
|
||||
|
||||
Miscellaneous Options
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,43 +1,43 @@
|
||||
Getting Started/Tutorials
|
||||
=========================
|
||||
|
||||
For those new to the LLVM system.
|
||||
|
||||
.. toctree::
|
||||
:hidden:
|
||||
|
||||
CompilerWriterInfo
|
||||
Frontend/PerformanceTips
|
||||
GettingStarted
|
||||
GettingStartedVS
|
||||
ProgrammersManual
|
||||
tutorial/index
|
||||
MyFirstTypoFix
|
||||
|
||||
:doc:`GettingStarted`
|
||||
Discusses how to get up and running quickly with the LLVM infrastructure.
|
||||
Everything from unpacking and compilation of the distribution to execution
|
||||
of some tools.
|
||||
|
||||
:doc:`tutorial/index`
|
||||
Tutorials about using LLVM. Includes a tutorial about making a custom
|
||||
language with LLVM.
|
||||
|
||||
:doc:`ProgrammersManual`
|
||||
Introduction to the general layout of the LLVM sourcebase, important classes
|
||||
and APIs, and some tips & tricks.
|
||||
|
||||
:doc:`Frontend/PerformanceTips`
|
||||
A collection of tips for frontend authors on how to generate IR
|
||||
which LLVM is able to effectively optimize.
|
||||
|
||||
:doc:`GettingStartedVS`
|
||||
An addendum to the main Getting Started guide for those using Visual Studio
|
||||
on Windows.
|
||||
|
||||
:doc:`CompilerWriterInfo`
|
||||
A list of helpful links for compiler writers.
|
||||
|
||||
:doc:`MyFirstTypoFix`
|
||||
This tutorial will guide you through the process of making a change to
|
||||
LLVM, and contributing it back to the LLVM project.
|
||||
Getting Started/Tutorials
|
||||
=========================
|
||||
|
||||
For those new to the LLVM system.
|
||||
|
||||
.. toctree::
|
||||
:hidden:
|
||||
|
||||
CompilerWriterInfo
|
||||
Frontend/PerformanceTips
|
||||
GettingStarted
|
||||
GettingStartedVS
|
||||
ProgrammersManual
|
||||
tutorial/index
|
||||
MyFirstTypoFix
|
||||
|
||||
:doc:`GettingStarted`
|
||||
Discusses how to get up and running quickly with the LLVM infrastructure.
|
||||
Everything from unpacking and compilation of the distribution to execution
|
||||
of some tools.
|
||||
|
||||
:doc:`tutorial/index`
|
||||
Tutorials about using LLVM. Includes a tutorial about making a custom
|
||||
language with LLVM.
|
||||
|
||||
:doc:`ProgrammersManual`
|
||||
Introduction to the general layout of the LLVM sourcebase, important classes
|
||||
and APIs, and some tips & tricks.
|
||||
|
||||
:doc:`Frontend/PerformanceTips`
|
||||
A collection of tips for frontend authors on how to generate IR
|
||||
which LLVM is able to effectively optimize.
|
||||
|
||||
:doc:`GettingStartedVS`
|
||||
An addendum to the main Getting Started guide for those using Visual Studio
|
||||
on Windows.
|
||||
|
||||
:doc:`CompilerWriterInfo`
|
||||
A list of helpful links for compiler writers.
|
||||
|
||||
:doc:`MyFirstTypoFix`
|
||||
This tutorial will guide you through the process of making a change to
|
||||
LLVM, and contributing it back to the LLVM project.
|
||||
|
||||
@@ -93,9 +93,9 @@ the compiler decided to emit is impractical. This differs from DWARF, where eve
|
||||
though we don't necessarily have O(1) lookup by basename within a given scope (including
|
||||
O(1) scope, we at least have O(n) access within a given scope).
|
||||
|
||||
.. important::
|
||||
Program-wide lookup of names by anything other than an exact textually matching fully
|
||||
qualified name is not possible.
|
||||
.. important::
|
||||
Program-wide lookup of names by anything other than an exact textually matching fully
|
||||
qualified name is not possible.
|
||||
|
||||
|
||||
S_GDATA32
|
||||
|
||||
@@ -1,234 +1,234 @@
|
||||
Reference
|
||||
=========
|
||||
|
||||
LLVM and API reference documentation.
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
.. toctree::
|
||||
:hidden:
|
||||
|
||||
Atomics
|
||||
BitCodeFormat
|
||||
BlockFrequencyTerminology
|
||||
BranchWeightMetadata
|
||||
Bugpoint
|
||||
CommandGuide/index
|
||||
ConvergenceAndUniformity
|
||||
ConvergentOperations
|
||||
Coroutines
|
||||
DependenceGraphs/index
|
||||
ExceptionHandling
|
||||
Extensions
|
||||
FaultMaps
|
||||
FuzzingLLVM
|
||||
GarbageCollection
|
||||
GetElementPtr
|
||||
GlobalISel/index
|
||||
GwpAsan
|
||||
HowToSetUpLLVMStyleRTTI
|
||||
HowToUseAttributes
|
||||
InAlloca
|
||||
LangRef
|
||||
LibFuzzer
|
||||
MarkedUpDisassembly
|
||||
MIRLangRef
|
||||
OptBisect
|
||||
PCSectionsMetadata
|
||||
PDB/index
|
||||
PointerAuth
|
||||
ScudoHardenedAllocator
|
||||
MemoryModelRelaxationAnnotations
|
||||
MemTagSanitizer
|
||||
Security
|
||||
SecurityTransparencyReports
|
||||
SegmentedStacks
|
||||
StackMaps
|
||||
SpeculativeLoadHardening
|
||||
Statepoints
|
||||
SymbolizerMarkupFormat
|
||||
SystemLibrary
|
||||
TestingGuide
|
||||
TransformMetadata
|
||||
TypeMetadata
|
||||
XRay
|
||||
XRayExample
|
||||
XRayFDRFormat
|
||||
YamlIO
|
||||
|
||||
API Reference
|
||||
-------------
|
||||
|
||||
`Doxygen generated documentation <https://llvm.org/doxygen/>`_
|
||||
(`classes <https://llvm.org/doxygen/inherits.html>`_)
|
||||
|
||||
:doc:`HowToUseAttributes`
|
||||
Answers some questions about the new Attributes infrastructure.
|
||||
|
||||
LLVM Reference
|
||||
--------------
|
||||
|
||||
======================
|
||||
Command Line Utilities
|
||||
======================
|
||||
|
||||
:doc:`LLVM Command Guide <CommandGuide/index>`
|
||||
A reference manual for the LLVM command line utilities ("man" pages for LLVM
|
||||
tools).
|
||||
|
||||
:doc:`Bugpoint`
|
||||
Automatic bug finder and test-case reducer description and usage
|
||||
information.
|
||||
|
||||
:doc:`OptBisect`
|
||||
A command line option for debugging optimization-induced failures.
|
||||
|
||||
:doc:`SymbolizerMarkupFormat`
|
||||
A reference for the log symbolizer markup accepted by ``llvm-symbolizer``.
|
||||
|
||||
:doc:`The Microsoft PDB File Format <PDB/index>`
|
||||
A detailed description of the Microsoft PDB (Program Database) file format.
|
||||
|
||||
==================
|
||||
Garbage Collection
|
||||
==================
|
||||
|
||||
:doc:`GarbageCollection`
|
||||
The interfaces source-language compilers should use for compiling GC'd
|
||||
programs.
|
||||
|
||||
:doc:`Statepoints`
|
||||
This describes a set of experimental extensions for garbage
|
||||
collection support.
|
||||
|
||||
=========
|
||||
LibFuzzer
|
||||
=========
|
||||
|
||||
:doc:`LibFuzzer`
|
||||
A library for writing in-process guided fuzzers.
|
||||
|
||||
:doc:`FuzzingLLVM`
|
||||
Information on writing and using Fuzzers to find bugs in LLVM.
|
||||
|
||||
========
|
||||
LLVM IR
|
||||
========
|
||||
|
||||
:doc:`LLVM Language Reference Manual <LangRef>`
|
||||
Defines the LLVM intermediate representation and the assembly form of the
|
||||
different nodes.
|
||||
|
||||
:doc:`InAlloca`
|
||||
Description of the ``inalloca`` argument attribute.
|
||||
|
||||
:doc:`BitCodeFormat`
|
||||
This describes the file format and encoding used for LLVM "bc" files.
|
||||
|
||||
:doc:`Machine IR (MIR) Format Reference Manual <MIRLangRef>`
|
||||
A reference manual for the MIR serialization format, which is used to test
|
||||
LLVM's code generation passes.
|
||||
|
||||
:doc:`GlobalISel/index`
|
||||
This describes the prototype instruction selection replacement, GlobalISel.
|
||||
|
||||
:doc:`ConvergentOperations`
|
||||
Description of ``convergent`` operation semantics and related intrinsics.
|
||||
|
||||
=====================
|
||||
Testing and Debugging
|
||||
=====================
|
||||
|
||||
:doc:`LLVM Testing Infrastructure Guide <TestingGuide>`
|
||||
A reference manual for using the LLVM testing infrastructure.
|
||||
|
||||
:doc:`TestSuiteGuide`
|
||||
Describes how to compile and run the test-suite benchmarks.
|
||||
|
||||
|
||||
:doc:`GwpAsan`
|
||||
A sampled heap memory error detection toolkit designed for production use.
|
||||
|
||||
====
|
||||
XRay
|
||||
====
|
||||
|
||||
:doc:`XRay`
|
||||
High-level documentation of how to use XRay in LLVM.
|
||||
|
||||
:doc:`XRayExample`
|
||||
An example of how to debug an application with XRay.
|
||||
|
||||
=================
|
||||
Additional Topics
|
||||
=================
|
||||
|
||||
:doc:`FaultMaps`
|
||||
LLVM support for folding control flow into faulting machine instructions.
|
||||
|
||||
:doc:`Atomics`
|
||||
Information about LLVM's concurrency model.
|
||||
|
||||
:doc:`ExceptionHandling`
|
||||
This document describes the design and implementation of exception handling
|
||||
in LLVM.
|
||||
|
||||
:doc:`Extensions`
|
||||
LLVM-specific extensions to tools and formats LLVM seeks compatibility with.
|
||||
|
||||
:doc:`HowToSetUpLLVMStyleRTTI`
|
||||
How to make ``isa<>``, ``dyn_cast<>``, etc. available for clients of your
|
||||
class hierarchy.
|
||||
|
||||
:doc:`BlockFrequencyTerminology`
|
||||
Provides information about terminology used in the ``BlockFrequencyInfo``
|
||||
analysis pass.
|
||||
|
||||
:doc:`BranchWeightMetadata`
|
||||
Provides information about Branch Prediction Information.
|
||||
|
||||
:doc:`GetElementPtr`
|
||||
Answers to some very frequent questions about LLVM's most frequently
|
||||
misunderstood instruction.
|
||||
|
||||
:doc:`ScudoHardenedAllocator`
|
||||
A library that implements a security-hardened `malloc()`.
|
||||
|
||||
:doc:`MemoryModelRelaxationAnnotations`
|
||||
Target-defined relaxation to LLVM's concurrency model.
|
||||
|
||||
:doc:`MemTagSanitizer`
|
||||
Security hardening for production code aiming to mitigate memory
|
||||
related vulnerabilities. Based on the Armv8.5-A Memory Tagging Extension.
|
||||
|
||||
:doc:`Dependence Graphs <DependenceGraphs/index>`
|
||||
A description of the design of the various dependence graphs such as
|
||||
the DDG (Data Dependence Graph).
|
||||
|
||||
:doc:`SpeculativeLoadHardening`
|
||||
A description of the Speculative Load Hardening mitigation for Spectre v1.
|
||||
|
||||
:doc:`SegmentedStacks`
|
||||
This document describes segmented stacks and how they are used in LLVM.
|
||||
|
||||
:doc:`MarkedUpDisassembly`
|
||||
This document describes the optional rich disassembly output syntax.
|
||||
|
||||
:doc:`StackMaps`
|
||||
LLVM support for mapping instruction addresses to the location of
|
||||
values and allowing code to be patched.
|
||||
|
||||
:doc:`Coroutines`
|
||||
LLVM support for coroutines.
|
||||
|
||||
:doc:`PointerAuth`
|
||||
A description of pointer authentication, its LLVM IR representation, and its
|
||||
support in the backend.
|
||||
|
||||
:doc:`YamlIO`
|
||||
A reference guide for using LLVM's YAML I/O library.
|
||||
|
||||
:doc:`ConvergenceAndUniformity`
|
||||
A description of uniformity analysis in the presence of irreducible
|
||||
control flow, and its implementation.
|
||||
Reference
|
||||
=========
|
||||
|
||||
LLVM and API reference documentation.
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
.. toctree::
|
||||
:hidden:
|
||||
|
||||
Atomics
|
||||
BitCodeFormat
|
||||
BlockFrequencyTerminology
|
||||
BranchWeightMetadata
|
||||
Bugpoint
|
||||
CommandGuide/index
|
||||
ConvergenceAndUniformity
|
||||
ConvergentOperations
|
||||
Coroutines
|
||||
DependenceGraphs/index
|
||||
ExceptionHandling
|
||||
Extensions
|
||||
FaultMaps
|
||||
FuzzingLLVM
|
||||
GarbageCollection
|
||||
GetElementPtr
|
||||
GlobalISel/index
|
||||
GwpAsan
|
||||
HowToSetUpLLVMStyleRTTI
|
||||
HowToUseAttributes
|
||||
InAlloca
|
||||
LangRef
|
||||
LibFuzzer
|
||||
MarkedUpDisassembly
|
||||
MIRLangRef
|
||||
OptBisect
|
||||
PCSectionsMetadata
|
||||
PDB/index
|
||||
PointerAuth
|
||||
ScudoHardenedAllocator
|
||||
MemoryModelRelaxationAnnotations
|
||||
MemTagSanitizer
|
||||
Security
|
||||
SecurityTransparencyReports
|
||||
SegmentedStacks
|
||||
StackMaps
|
||||
SpeculativeLoadHardening
|
||||
Statepoints
|
||||
SymbolizerMarkupFormat
|
||||
SystemLibrary
|
||||
TestingGuide
|
||||
TransformMetadata
|
||||
TypeMetadata
|
||||
XRay
|
||||
XRayExample
|
||||
XRayFDRFormat
|
||||
YamlIO
|
||||
|
||||
API Reference
|
||||
-------------
|
||||
|
||||
`Doxygen generated documentation <https://llvm.org/doxygen/>`_
|
||||
(`classes <https://llvm.org/doxygen/inherits.html>`_)
|
||||
|
||||
:doc:`HowToUseAttributes`
|
||||
Answers some questions about the new Attributes infrastructure.
|
||||
|
||||
LLVM Reference
|
||||
--------------
|
||||
|
||||
======================
|
||||
Command Line Utilities
|
||||
======================
|
||||
|
||||
:doc:`LLVM Command Guide <CommandGuide/index>`
|
||||
A reference manual for the LLVM command line utilities ("man" pages for LLVM
|
||||
tools).
|
||||
|
||||
:doc:`Bugpoint`
|
||||
Automatic bug finder and test-case reducer description and usage
|
||||
information.
|
||||
|
||||
:doc:`OptBisect`
|
||||
A command line option for debugging optimization-induced failures.
|
||||
|
||||
:doc:`SymbolizerMarkupFormat`
|
||||
A reference for the log symbolizer markup accepted by ``llvm-symbolizer``.
|
||||
|
||||
:doc:`The Microsoft PDB File Format <PDB/index>`
|
||||
A detailed description of the Microsoft PDB (Program Database) file format.
|
||||
|
||||
==================
|
||||
Garbage Collection
|
||||
==================
|
||||
|
||||
:doc:`GarbageCollection`
|
||||
The interfaces source-language compilers should use for compiling GC'd
|
||||
programs.
|
||||
|
||||
:doc:`Statepoints`
|
||||
This describes a set of experimental extensions for garbage
|
||||
collection support.
|
||||
|
||||
=========
|
||||
LibFuzzer
|
||||
=========
|
||||
|
||||
:doc:`LibFuzzer`
|
||||
A library for writing in-process guided fuzzers.
|
||||
|
||||
:doc:`FuzzingLLVM`
|
||||
Information on writing and using Fuzzers to find bugs in LLVM.
|
||||
|
||||
========
|
||||
LLVM IR
|
||||
========
|
||||
|
||||
:doc:`LLVM Language Reference Manual <LangRef>`
|
||||
Defines the LLVM intermediate representation and the assembly form of the
|
||||
different nodes.
|
||||
|
||||
:doc:`InAlloca`
|
||||
Description of the ``inalloca`` argument attribute.
|
||||
|
||||
:doc:`BitCodeFormat`
|
||||
This describes the file format and encoding used for LLVM "bc" files.
|
||||
|
||||
:doc:`Machine IR (MIR) Format Reference Manual <MIRLangRef>`
|
||||
A reference manual for the MIR serialization format, which is used to test
|
||||
LLVM's code generation passes.
|
||||
|
||||
:doc:`GlobalISel/index`
|
||||
This describes the prototype instruction selection replacement, GlobalISel.
|
||||
|
||||
:doc:`ConvergentOperations`
|
||||
Description of ``convergent`` operation semantics and related intrinsics.
|
||||
|
||||
=====================
|
||||
Testing and Debugging
|
||||
=====================
|
||||
|
||||
:doc:`LLVM Testing Infrastructure Guide <TestingGuide>`
|
||||
A reference manual for using the LLVM testing infrastructure.
|
||||
|
||||
:doc:`TestSuiteGuide`
|
||||
Describes how to compile and run the test-suite benchmarks.
|
||||
|
||||
|
||||
:doc:`GwpAsan`
|
||||
A sampled heap memory error detection toolkit designed for production use.
|
||||
|
||||
====
|
||||
XRay
|
||||
====
|
||||
|
||||
:doc:`XRay`
|
||||
High-level documentation of how to use XRay in LLVM.
|
||||
|
||||
:doc:`XRayExample`
|
||||
An example of how to debug an application with XRay.
|
||||
|
||||
=================
|
||||
Additional Topics
|
||||
=================
|
||||
|
||||
:doc:`FaultMaps`
|
||||
LLVM support for folding control flow into faulting machine instructions.
|
||||
|
||||
:doc:`Atomics`
|
||||
Information about LLVM's concurrency model.
|
||||
|
||||
:doc:`ExceptionHandling`
|
||||
This document describes the design and implementation of exception handling
|
||||
in LLVM.
|
||||
|
||||
:doc:`Extensions`
|
||||
LLVM-specific extensions to tools and formats LLVM seeks compatibility with.
|
||||
|
||||
:doc:`HowToSetUpLLVMStyleRTTI`
|
||||
How to make ``isa<>``, ``dyn_cast<>``, etc. available for clients of your
|
||||
class hierarchy.
|
||||
|
||||
:doc:`BlockFrequencyTerminology`
|
||||
Provides information about terminology used in the ``BlockFrequencyInfo``
|
||||
analysis pass.
|
||||
|
||||
:doc:`BranchWeightMetadata`
|
||||
Provides information about Branch Prediction Information.
|
||||
|
||||
:doc:`GetElementPtr`
|
||||
Answers to some very frequent questions about LLVM's most frequently
|
||||
misunderstood instruction.
|
||||
|
||||
:doc:`ScudoHardenedAllocator`
|
||||
A library that implements a security-hardened `malloc()`.
|
||||
|
||||
:doc:`MemoryModelRelaxationAnnotations`
|
||||
Target-defined relaxation to LLVM's concurrency model.
|
||||
|
||||
:doc:`MemTagSanitizer`
|
||||
Security hardening for production code aiming to mitigate memory
|
||||
related vulnerabilities. Based on the Armv8.5-A Memory Tagging Extension.
|
||||
|
||||
:doc:`Dependence Graphs <DependenceGraphs/index>`
|
||||
A description of the design of the various dependence graphs such as
|
||||
the DDG (Data Dependence Graph).
|
||||
|
||||
:doc:`SpeculativeLoadHardening`
|
||||
A description of the Speculative Load Hardening mitigation for Spectre v1.
|
||||
|
||||
:doc:`SegmentedStacks`
|
||||
This document describes segmented stacks and how they are used in LLVM.
|
||||
|
||||
:doc:`MarkedUpDisassembly`
|
||||
This document describes the optional rich disassembly output syntax.
|
||||
|
||||
:doc:`StackMaps`
|
||||
LLVM support for mapping instruction addresses to the location of
|
||||
values and allowing code to be patched.
|
||||
|
||||
:doc:`Coroutines`
|
||||
LLVM support for coroutines.
|
||||
|
||||
:doc:`PointerAuth`
|
||||
A description of pointer authentication, its LLVM IR representation, and its
|
||||
support in the backend.
|
||||
|
||||
:doc:`YamlIO`
|
||||
A reference guide for using LLVM's YAML I/O library.
|
||||
|
||||
:doc:`ConvergenceAndUniformity`
|
||||
A description of uniformity analysis in the presence of irreducible
|
||||
control flow, and its implementation.
|
||||
|
||||
@@ -1,286 +1,286 @@
|
||||
User Guides
|
||||
===========
|
||||
|
||||
NOTE: If you are a user who is only interested in using an LLVM-based compiler,
|
||||
you should look into `Clang <https://clang.llvm.org>`_ instead. The
|
||||
documentation here is intended for users who have a need to work with the
|
||||
intermediate LLVM representation.
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
.. toctree::
|
||||
:hidden:
|
||||
|
||||
AArch64SME
|
||||
AddingConstrainedIntrinsics
|
||||
AdvancedBuilds
|
||||
AliasAnalysis
|
||||
AMDGPUUsage
|
||||
Benchmarking
|
||||
BigEndianNEON
|
||||
BuildingADistribution
|
||||
CFIVerify
|
||||
CMake
|
||||
CMakePrimer
|
||||
CodeGenerator
|
||||
CodeOfConduct
|
||||
CommandLine
|
||||
CompileCudaWithLLVM
|
||||
CoverageMappingFormat
|
||||
CycleTerminology
|
||||
DebuggingJITedCode
|
||||
DirectXUsage
|
||||
Docker
|
||||
FatLTO
|
||||
ExtendingLLVM
|
||||
GitHub
|
||||
GoldPlugin
|
||||
GlobalISel/MIRPatterns
|
||||
HowToBuildOnARM
|
||||
HowToBuildWithPGO
|
||||
HowToBuildWindowsItaniumPrograms
|
||||
HowToCrossCompileBuiltinsOnArm
|
||||
HowToCrossCompileLLVM
|
||||
HowToUpdateDebugInfo
|
||||
InstCombineContributorGuide
|
||||
InstrProfileFormat
|
||||
InstrRefDebugInfo
|
||||
LinkTimeOptimization
|
||||
LoopTerminology
|
||||
MarkdownQuickstartTemplate
|
||||
MemorySSA
|
||||
MergeFunctions
|
||||
MCJITDesignAndImplementation
|
||||
MisExpect
|
||||
ORCv2
|
||||
OpaquePointers
|
||||
JITLink
|
||||
NewPassManager
|
||||
NVPTXUsage
|
||||
Passes
|
||||
ReportingGuide
|
||||
ResponseGuide
|
||||
Remarks
|
||||
RemoveDIsDebugInfo
|
||||
RISCVUsage
|
||||
SourceLevelDebugging
|
||||
SPIRVUsage
|
||||
StackSafetyAnalysis
|
||||
SupportLibrary
|
||||
TableGen/index
|
||||
TableGenFundamentals
|
||||
Vectorizers
|
||||
WritingAnLLVMPass
|
||||
WritingAnLLVMNewPMPass
|
||||
WritingAnLLVMBackend
|
||||
yaml2obj
|
||||
|
||||
Clang
|
||||
-----
|
||||
|
||||
:doc:`HowToBuildOnARM`
|
||||
Notes on building and testing LLVM/Clang on ARM.
|
||||
|
||||
:doc:`HowToBuildWithPGO`
|
||||
Notes on building LLVM/Clang with PGO.
|
||||
|
||||
:doc:`HowToCrossCompileLLVM`
|
||||
Notes on cross-building and testing LLVM/Clang.
|
||||
|
||||
`How to build the C, C++, ObjC, and ObjC++ front end`__
|
||||
Instructions for building the clang front-end from source.
|
||||
|
||||
.. __: https://clang.llvm.org/get_started.html
|
||||
|
||||
:doc:`CoverageMappingFormat`
|
||||
This describes the format and encoding used for LLVM’s code coverage mapping.
|
||||
|
||||
:doc:`CFIVerify`
|
||||
A description of the verification tool for Control Flow Integrity.
|
||||
|
||||
LLVM Builds and Distributions
|
||||
-----------------------------
|
||||
|
||||
:doc:`BuildingADistribution`
|
||||
A best-practices guide for using LLVM's CMake build system to package and
|
||||
distribute LLVM-based tools.
|
||||
|
||||
:doc:`CMake`
|
||||
An addendum to the main Getting Started guide for those using the `CMake
|
||||
build system <http://www.cmake.org>`_.
|
||||
|
||||
:doc:`Docker`
|
||||
A reference for using Dockerfiles provided with LLVM.
|
||||
|
||||
:doc:`Support Library <SupportLibrary>`
|
||||
This document describes the LLVM Support Library (``lib/Support``) and
|
||||
how to keep LLVM source code portable.
|
||||
|
||||
:doc:`AdvancedBuilds`
|
||||
This document describes more advanced build configurations.
|
||||
|
||||
Optimizations
|
||||
-------------
|
||||
|
||||
:doc:`WritingAnLLVMNewPMPass`
|
||||
Information on how to write LLVM transformations under the new pass
|
||||
manager.
|
||||
|
||||
:doc:`WritingAnLLVMPass`
|
||||
Information on how to write LLVM transformations and analyses under the
|
||||
legacy pass manager.
|
||||
|
||||
:doc:`Passes`
|
||||
A list of optimizations and analyses implemented in LLVM.
|
||||
|
||||
:doc:`StackSafetyAnalysis`
|
||||
This document describes the design of the stack safety analysis of local
|
||||
variables.
|
||||
|
||||
:doc:`MergeFunctions`
|
||||
Describes functions merging optimization.
|
||||
|
||||
:doc:`AliasAnalysis`
|
||||
Information on how to write a new alias analysis implementation or how to
|
||||
use existing analyses.
|
||||
|
||||
:doc:`MemorySSA`
|
||||
Information about the MemorySSA utility in LLVM, as well as how to use it.
|
||||
|
||||
:doc:`LoopTerminology`
|
||||
A document describing Loops and associated terms as used in LLVM.
|
||||
|
||||
:doc:`CycleTerminology`
|
||||
A document describing cycles as a generalization of loops.
|
||||
|
||||
:doc:`Vectorizers`
|
||||
This document describes the current status of vectorization in LLVM.
|
||||
|
||||
:doc:`LinkTimeOptimization`
|
||||
This document describes the interface between LLVM intermodular optimizer
|
||||
and the linker and its design
|
||||
|
||||
:doc:`GoldPlugin`
|
||||
How to build your programs with link-time optimization on Linux.
|
||||
|
||||
:doc:`Remarks`
|
||||
A reference on the implementation of remarks in LLVM.
|
||||
|
||||
:doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`
|
||||
This document describes the design and philosophy behind the LLVM
|
||||
source-level debugger.
|
||||
|
||||
:doc:`How to Update Debug Info <HowToUpdateDebugInfo>`
|
||||
This document specifies how to correctly update debug info in various kinds
|
||||
of code transformations.
|
||||
|
||||
:doc:`InstrRefDebugInfo`
|
||||
This document explains how LLVM uses value tracking, or instruction
|
||||
referencing, to determine variable locations for debug info in the final
|
||||
stages of compilation.
|
||||
|
||||
:doc:`RemoveDIsDebugInfo`
|
||||
This is a migration guide describing how to move from debug info using
|
||||
intrinsics such as dbg.value to using the non-instruction DbgRecord object.
|
||||
|
||||
:doc:`InstrProfileFormat`
|
||||
This document explains two binary formats of instrumentation-based profiles.
|
||||
|
||||
:doc:`InstCombineContributorGuide`
|
||||
This document specifies guidelines for contributions for InstCombine and
|
||||
related passes.
|
||||
|
||||
Code Generation
|
||||
---------------
|
||||
|
||||
:doc:`WritingAnLLVMBackend`
|
||||
Information on how to write LLVM backends for machine targets.
|
||||
|
||||
:doc:`CodeGenerator`
|
||||
The design and implementation of the LLVM code generator. Useful if you are
|
||||
working on retargetting LLVM to a new architecture, designing a new codegen
|
||||
pass, or enhancing existing components.
|
||||
|
||||
:doc:`TableGen <TableGen/index>`
|
||||
Describes the TableGen tool, which is used heavily by the LLVM code
|
||||
generator.
|
||||
|
||||
==========
|
||||
GlobalISel
|
||||
==========
|
||||
|
||||
:doc:`MIRPatterns <GlobalISel/MIRPatterns>`
|
||||
Describes the design of MIR Patterns and how to use them.
|
||||
|
||||
===
|
||||
JIT
|
||||
===
|
||||
|
||||
:doc:`MCJITDesignAndImplementation`
|
||||
Describes the inner workings of MCJIT execution engine.
|
||||
|
||||
:doc:`ORCv2`
|
||||
Describes the design and implementation of the ORC APIs, including some
|
||||
usage examples, and a guide for users transitioning from ORCv1 to ORCv2.
|
||||
|
||||
:doc:`JITLink`
|
||||
Describes the design and APIs for the JITLink library, ORC's new JIT
|
||||
linker.
|
||||
|
||||
:doc:`DebuggingJITedCode`
|
||||
How to debug JITed code with GDB.
|
||||
|
||||
Additional Topics
|
||||
-----------------
|
||||
|
||||
:doc:`CommandLine`
|
||||
Provides information on using the command line parsing library.
|
||||
|
||||
:doc:`ExtendingLLVM`
|
||||
Look here to see how to add instructions and intrinsics to LLVM.
|
||||
|
||||
:doc:`AddingConstrainedIntrinsics`
|
||||
Gives the steps necessary when adding a new constrained math intrinsic
|
||||
to LLVM.
|
||||
|
||||
:doc:`HowToBuildWindowsItaniumPrograms`
|
||||
Notes on assembling a Windows Itanium environment.
|
||||
|
||||
:doc:`HowToCrossCompileBuiltinsOnArm`
|
||||
Notes on cross-building and testing the compiler-rt builtins for Arm.
|
||||
|
||||
:doc:`BigEndianNEON`
|
||||
LLVM's support for generating NEON instructions on big endian ARM targets is
|
||||
somewhat nonintuitive. This document explains the implementation and rationale.
|
||||
|
||||
:doc:`AArch64SME`
|
||||
LLVM's support for AArch64 SME ACLE and ABI.
|
||||
|
||||
:doc:`CompileCudaWithLLVM`
|
||||
LLVM support for CUDA.
|
||||
|
||||
:doc:`NVPTXUsage`
|
||||
This document describes using the NVPTX backend to compile GPU kernels.
|
||||
|
||||
:doc:`AMDGPUUsage`
|
||||
This document describes using the AMDGPU backend to compile GPU kernels.
|
||||
|
||||
:doc:`AMDGPUDwarfExtensionsForHeterogeneousDebugging`
|
||||
This document describes DWARF extensions to support heterogeneous debugging
|
||||
for targets such as the AMDGPU backend.
|
||||
|
||||
:doc:`AMDGPUDwarfExtensionAllowLocationDescriptionOnTheDwarfExpressionStack/AMDGPUDwarfExtensionAllowLocationDescriptionOnTheDwarfExpressionStack`
|
||||
This document describes a DWARF extension to allow location descriptions on
|
||||
the DWARF expression stack. It is part of
|
||||
:doc:`AMDGPUDwarfExtensionsForHeterogeneousDebugging`.
|
||||
|
||||
:doc:`SPIRVUsage`
|
||||
This document describes using the SPIR-V target to compile GPU kernels.
|
||||
|
||||
:doc:`DirectXUsage`
|
||||
This document describes using the DirectX target to compile GPU code for the
|
||||
DirectX runtime.
|
||||
|
||||
:doc:`RISCVUsage`
|
||||
This document describes using the RISCV-V target.
|
||||
User Guides
|
||||
===========
|
||||
|
||||
NOTE: If you are a user who is only interested in using an LLVM-based compiler,
|
||||
you should look into `Clang <https://clang.llvm.org>`_ instead. The
|
||||
documentation here is intended for users who have a need to work with the
|
||||
intermediate LLVM representation.
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
|
||||
.. toctree::
|
||||
:hidden:
|
||||
|
||||
AArch64SME
|
||||
AddingConstrainedIntrinsics
|
||||
AdvancedBuilds
|
||||
AliasAnalysis
|
||||
AMDGPUUsage
|
||||
Benchmarking
|
||||
BigEndianNEON
|
||||
BuildingADistribution
|
||||
CFIVerify
|
||||
CMake
|
||||
CMakePrimer
|
||||
CodeGenerator
|
||||
CodeOfConduct
|
||||
CommandLine
|
||||
CompileCudaWithLLVM
|
||||
CoverageMappingFormat
|
||||
CycleTerminology
|
||||
DebuggingJITedCode
|
||||
DirectXUsage
|
||||
Docker
|
||||
FatLTO
|
||||
ExtendingLLVM
|
||||
GitHub
|
||||
GoldPlugin
|
||||
GlobalISel/MIRPatterns
|
||||
HowToBuildOnARM
|
||||
HowToBuildWithPGO
|
||||
HowToBuildWindowsItaniumPrograms
|
||||
HowToCrossCompileBuiltinsOnArm
|
||||
HowToCrossCompileLLVM
|
||||
HowToUpdateDebugInfo
|
||||
InstCombineContributorGuide
|
||||
InstrProfileFormat
|
||||
InstrRefDebugInfo
|
||||
LinkTimeOptimization
|
||||
LoopTerminology
|
||||
MarkdownQuickstartTemplate
|
||||
MemorySSA
|
||||
MergeFunctions
|
||||
MCJITDesignAndImplementation
|
||||
MisExpect
|
||||
ORCv2
|
||||
OpaquePointers
|
||||
JITLink
|
||||
NewPassManager
|
||||
NVPTXUsage
|
||||
Passes
|
||||
ReportingGuide
|
||||
ResponseGuide
|
||||
Remarks
|
||||
RemoveDIsDebugInfo
|
||||
RISCVUsage
|
||||
SourceLevelDebugging
|
||||
SPIRVUsage
|
||||
StackSafetyAnalysis
|
||||
SupportLibrary
|
||||
TableGen/index
|
||||
TableGenFundamentals
|
||||
Vectorizers
|
||||
WritingAnLLVMPass
|
||||
WritingAnLLVMNewPMPass
|
||||
WritingAnLLVMBackend
|
||||
yaml2obj
|
||||
|
||||
Clang
|
||||
-----
|
||||
|
||||
:doc:`HowToBuildOnARM`
|
||||
Notes on building and testing LLVM/Clang on ARM.
|
||||
|
||||
:doc:`HowToBuildWithPGO`
|
||||
Notes on building LLVM/Clang with PGO.
|
||||
|
||||
:doc:`HowToCrossCompileLLVM`
|
||||
Notes on cross-building and testing LLVM/Clang.
|
||||
|
||||
`How to build the C, C++, ObjC, and ObjC++ front end`__
|
||||
Instructions for building the clang front-end from source.
|
||||
|
||||
.. __: https://clang.llvm.org/get_started.html
|
||||
|
||||
:doc:`CoverageMappingFormat`
|
||||
This describes the format and encoding used for LLVM’s code coverage mapping.
|
||||
|
||||
:doc:`CFIVerify`
|
||||
A description of the verification tool for Control Flow Integrity.
|
||||
|
||||
LLVM Builds and Distributions
|
||||
-----------------------------
|
||||
|
||||
:doc:`BuildingADistribution`
|
||||
A best-practices guide for using LLVM's CMake build system to package and
|
||||
distribute LLVM-based tools.
|
||||
|
||||
:doc:`CMake`
|
||||
An addendum to the main Getting Started guide for those using the `CMake
|
||||
build system <http://www.cmake.org>`_.
|
||||
|
||||
:doc:`Docker`
|
||||
A reference for using Dockerfiles provided with LLVM.
|
||||
|
||||
:doc:`Support Library <SupportLibrary>`
|
||||
This document describes the LLVM Support Library (``lib/Support``) and
|
||||
how to keep LLVM source code portable.
|
||||
|
||||
:doc:`AdvancedBuilds`
|
||||
This document describes more advanced build configurations.
|
||||
|
||||
Optimizations
|
||||
-------------
|
||||
|
||||
:doc:`WritingAnLLVMNewPMPass`
|
||||
Information on how to write LLVM transformations under the new pass
|
||||
manager.
|
||||
|
||||
:doc:`WritingAnLLVMPass`
|
||||
Information on how to write LLVM transformations and analyses under the
|
||||
legacy pass manager.
|
||||
|
||||
:doc:`Passes`
|
||||
A list of optimizations and analyses implemented in LLVM.
|
||||
|
||||
:doc:`StackSafetyAnalysis`
|
||||
This document describes the design of the stack safety analysis of local
|
||||
variables.
|
||||
|
||||
:doc:`MergeFunctions`
|
||||
Describes functions merging optimization.
|
||||
|
||||
:doc:`AliasAnalysis`
|
||||
Information on how to write a new alias analysis implementation or how to
|
||||
use existing analyses.
|
||||
|
||||
:doc:`MemorySSA`
|
||||
Information about the MemorySSA utility in LLVM, as well as how to use it.
|
||||
|
||||
:doc:`LoopTerminology`
|
||||
A document describing Loops and associated terms as used in LLVM.
|
||||
|
||||
:doc:`CycleTerminology`
|
||||
A document describing cycles as a generalization of loops.
|
||||
|
||||
:doc:`Vectorizers`
|
||||
This document describes the current status of vectorization in LLVM.
|
||||
|
||||
:doc:`LinkTimeOptimization`
|
||||
This document describes the interface between LLVM intermodular optimizer
|
||||
and the linker and its design
|
||||
|
||||
:doc:`GoldPlugin`
|
||||
How to build your programs with link-time optimization on Linux.
|
||||
|
||||
:doc:`Remarks`
|
||||
A reference on the implementation of remarks in LLVM.
|
||||
|
||||
:doc:`Source Level Debugging with LLVM <SourceLevelDebugging>`
|
||||
This document describes the design and philosophy behind the LLVM
|
||||
source-level debugger.
|
||||
|
||||
:doc:`How to Update Debug Info <HowToUpdateDebugInfo>`
|
||||
This document specifies how to correctly update debug info in various kinds
|
||||
of code transformations.
|
||||
|
||||
:doc:`InstrRefDebugInfo`
|
||||
This document explains how LLVM uses value tracking, or instruction
|
||||
referencing, to determine variable locations for debug info in the final
|
||||
stages of compilation.
|
||||
|
||||
:doc:`RemoveDIsDebugInfo`
|
||||
This is a migration guide describing how to move from debug info using
|
||||
intrinsics such as dbg.value to using the non-instruction DbgRecord object.
|
||||
|
||||
:doc:`InstrProfileFormat`
|
||||
This document explains two binary formats of instrumentation-based profiles.
|
||||
|
||||
:doc:`InstCombineContributorGuide`
|
||||
This document specifies guidelines for contributions for InstCombine and
|
||||
related passes.
|
||||
|
||||
Code Generation
|
||||
---------------
|
||||
|
||||
:doc:`WritingAnLLVMBackend`
|
||||
Information on how to write LLVM backends for machine targets.
|
||||
|
||||
:doc:`CodeGenerator`
|
||||
The design and implementation of the LLVM code generator. Useful if you are
|
||||
working on retargetting LLVM to a new architecture, designing a new codegen
|
||||
pass, or enhancing existing components.
|
||||
|
||||
:doc:`TableGen <TableGen/index>`
|
||||
Describes the TableGen tool, which is used heavily by the LLVM code
|
||||
generator.
|
||||
|
||||
==========
|
||||
GlobalISel
|
||||
==========
|
||||
|
||||
:doc:`MIRPatterns <GlobalISel/MIRPatterns>`
|
||||
Describes the design of MIR Patterns and how to use them.
|
||||
|
||||
===
|
||||
JIT
|
||||
===
|
||||
|
||||
:doc:`MCJITDesignAndImplementation`
|
||||
Describes the inner workings of MCJIT execution engine.
|
||||
|
||||
:doc:`ORCv2`
|
||||
Describes the design and implementation of the ORC APIs, including some
|
||||
usage examples, and a guide for users transitioning from ORCv1 to ORCv2.
|
||||
|
||||
:doc:`JITLink`
|
||||
Describes the design and APIs for the JITLink library, ORC's new JIT
|
||||
linker.
|
||||
|
||||
:doc:`DebuggingJITedCode`
|
||||
How to debug JITed code with GDB.
|
||||
|
||||
Additional Topics
|
||||
-----------------
|
||||
|
||||
:doc:`CommandLine`
|
||||
Provides information on using the command line parsing library.
|
||||
|
||||
:doc:`ExtendingLLVM`
|
||||
Look here to see how to add instructions and intrinsics to LLVM.
|
||||
|
||||
:doc:`AddingConstrainedIntrinsics`
|
||||
Gives the steps necessary when adding a new constrained math intrinsic
|
||||
to LLVM.
|
||||
|
||||
:doc:`HowToBuildWindowsItaniumPrograms`
|
||||
Notes on assembling a Windows Itanium environment.
|
||||
|
||||
:doc:`HowToCrossCompileBuiltinsOnArm`
|
||||
Notes on cross-building and testing the compiler-rt builtins for Arm.
|
||||
|
||||
:doc:`BigEndianNEON`
|
||||
LLVM's support for generating NEON instructions on big endian ARM targets is
|
||||
somewhat nonintuitive. This document explains the implementation and rationale.
|
||||
|
||||
:doc:`AArch64SME`
|
||||
LLVM's support for AArch64 SME ACLE and ABI.
|
||||
|
||||
:doc:`CompileCudaWithLLVM`
|
||||
LLVM support for CUDA.
|
||||
|
||||
:doc:`NVPTXUsage`
|
||||
This document describes using the NVPTX backend to compile GPU kernels.
|
||||
|
||||
:doc:`AMDGPUUsage`
|
||||
This document describes using the AMDGPU backend to compile GPU kernels.
|
||||
|
||||
:doc:`AMDGPUDwarfExtensionsForHeterogeneousDebugging`
|
||||
This document describes DWARF extensions to support heterogeneous debugging
|
||||
for targets such as the AMDGPU backend.
|
||||
|
||||
:doc:`AMDGPUDwarfExtensionAllowLocationDescriptionOnTheDwarfExpressionStack/AMDGPUDwarfExtensionAllowLocationDescriptionOnTheDwarfExpressionStack`
|
||||
This document describes a DWARF extension to allow location descriptions on
|
||||
the DWARF expression stack. It is part of
|
||||
:doc:`AMDGPUDwarfExtensionsForHeterogeneousDebugging`.
|
||||
|
||||
:doc:`SPIRVUsage`
|
||||
This document describes using the SPIR-V target to compile GPU kernels.
|
||||
|
||||
:doc:`DirectXUsage`
|
||||
This document describes using the DirectX target to compile GPU code for the
|
||||
DirectX runtime.
|
||||
|
||||
:doc:`RISCVUsage`
|
||||
This document describes using the RISCV-V target.
|
||||
|
||||
@@ -1,70 +1,70 @@
|
||||
;;; llvm-mir-mode.el --- Major mode for LLVM Machine IR
|
||||
|
||||
;; Maintainer: The LLVM team, http://llvm.org/
|
||||
;; Version: 1.0
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; Major mode for editing LLVM MIR files.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'llvm-mode)
|
||||
|
||||
(defvar llvm-mir-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
map)
|
||||
"Keymap for `llvm-mir-mode'.")
|
||||
|
||||
(defvar llvm-mir-mode-syntax-table
|
||||
(let ((st (make-syntax-table)))
|
||||
(modify-syntax-entry ?% "_" st)
|
||||
(modify-syntax-entry ?$ "_" st)
|
||||
(modify-syntax-entry ?. "_" st)
|
||||
(modify-syntax-entry ?# "< " st)
|
||||
(modify-syntax-entry ?\; "< " st)
|
||||
(modify-syntax-entry ?\n "> " st)
|
||||
st)
|
||||
"Syntax table for `llvm-mir-mode'.")
|
||||
|
||||
(defvar llvm-mir-font-lock-keywords
|
||||
(append
|
||||
(list
|
||||
; YAML Attributes
|
||||
'("^name: +\\([a-zA-Z._][-a-zA-Z._0-9]*\\)"
|
||||
1 font-lock-function-name-face)
|
||||
'("^body: +|" . font-lock-keyword-face)
|
||||
'("^[a-zA-Z_.][-a-zA-Z._0-9]*:" . font-lock-keyword-face)
|
||||
`(,(regexp-opt '("true" "false")) . font-lock-constant-face)
|
||||
; YAML separators
|
||||
'("^\\(---\\( |\\)?\\|\\.\\.\\.\\)$" . font-lock-comment-face)
|
||||
; Registers
|
||||
'("%[a-zA-Z_.][-a-zA-Z._0-9]*" . font-lock-variable-name-face)
|
||||
'("%[0-9]+\\(\\.[a-zA-Z._0-9]+\\)?" . font-lock-variable-name-face)
|
||||
'("$[a-zA-Z_.][-a-zA-Z._0-9]*" . font-lock-constant-face)
|
||||
; Register classes
|
||||
`(,(concat
|
||||
"%\\([a-zA-Z_.][-a-zA-Z._0-9]*\\|[0-9]+\\(\\.[a-zA-Z._0-9]+\\)?\\)"
|
||||
"\\(:[a-zA-Z_.][-a-zA-Z._0-9]*\\)")
|
||||
3 font-lock-type-face)
|
||||
'("class: \\([a-zA-Z_.][-a-zA-Z._0-9]*\\)" 1 font-lock-type-face)
|
||||
; MO Register flags
|
||||
`(,(regexp-opt '("dead" "debug-use" "def" "early-clobber" "implicit"
|
||||
"implicit-def" "internal" "killed" "renamable" "undef")
|
||||
'symbols)
|
||||
. font-lock-keyword-face))
|
||||
llvm-font-lock-keywords)
|
||||
"Keyword highlighting specification for `llvm-mir-mode'.")
|
||||
|
||||
;;;###autoload
|
||||
(define-derived-mode llvm-mir-mode prog-mode "LLVM MIR"
|
||||
"A major mode for editing LLVM MIR files."
|
||||
(setq-local comment-start "; ")
|
||||
(setq-local font-lock-defaults `(llvm-mir-font-lock-keywords)))
|
||||
|
||||
;;;###autoload
|
||||
(add-to-list 'auto-mode-alist (cons "\\.mir\\'" 'llvm-mir-mode))
|
||||
|
||||
(provide 'llvm-mir-mode)
|
||||
|
||||
;;; llvm-mir-mode.el ends here
|
||||
;;; llvm-mir-mode.el --- Major mode for LLVM Machine IR
|
||||
|
||||
;; Maintainer: The LLVM team, http://llvm.org/
|
||||
;; Version: 1.0
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; Major mode for editing LLVM MIR files.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'llvm-mode)
|
||||
|
||||
(defvar llvm-mir-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
map)
|
||||
"Keymap for `llvm-mir-mode'.")
|
||||
|
||||
(defvar llvm-mir-mode-syntax-table
|
||||
(let ((st (make-syntax-table)))
|
||||
(modify-syntax-entry ?% "_" st)
|
||||
(modify-syntax-entry ?$ "_" st)
|
||||
(modify-syntax-entry ?. "_" st)
|
||||
(modify-syntax-entry ?# "< " st)
|
||||
(modify-syntax-entry ?\; "< " st)
|
||||
(modify-syntax-entry ?\n "> " st)
|
||||
st)
|
||||
"Syntax table for `llvm-mir-mode'.")
|
||||
|
||||
(defvar llvm-mir-font-lock-keywords
|
||||
(append
|
||||
(list
|
||||
; YAML Attributes
|
||||
'("^name: +\\([a-zA-Z._][-a-zA-Z._0-9]*\\)"
|
||||
1 font-lock-function-name-face)
|
||||
'("^body: +|" . font-lock-keyword-face)
|
||||
'("^[a-zA-Z_.][-a-zA-Z._0-9]*:" . font-lock-keyword-face)
|
||||
`(,(regexp-opt '("true" "false")) . font-lock-constant-face)
|
||||
; YAML separators
|
||||
'("^\\(---\\( |\\)?\\|\\.\\.\\.\\)$" . font-lock-comment-face)
|
||||
; Registers
|
||||
'("%[a-zA-Z_.][-a-zA-Z._0-9]*" . font-lock-variable-name-face)
|
||||
'("%[0-9]+\\(\\.[a-zA-Z._0-9]+\\)?" . font-lock-variable-name-face)
|
||||
'("$[a-zA-Z_.][-a-zA-Z._0-9]*" . font-lock-constant-face)
|
||||
; Register classes
|
||||
`(,(concat
|
||||
"%\\([a-zA-Z_.][-a-zA-Z._0-9]*\\|[0-9]+\\(\\.[a-zA-Z._0-9]+\\)?\\)"
|
||||
"\\(:[a-zA-Z_.][-a-zA-Z._0-9]*\\)")
|
||||
3 font-lock-type-face)
|
||||
'("class: \\([a-zA-Z_.][-a-zA-Z._0-9]*\\)" 1 font-lock-type-face)
|
||||
; MO Register flags
|
||||
`(,(regexp-opt '("dead" "debug-use" "def" "early-clobber" "implicit"
|
||||
"implicit-def" "internal" "killed" "renamable" "undef")
|
||||
'symbols)
|
||||
. font-lock-keyword-face))
|
||||
llvm-font-lock-keywords)
|
||||
"Keyword highlighting specification for `llvm-mir-mode'.")
|
||||
|
||||
;;;###autoload
|
||||
(define-derived-mode llvm-mir-mode prog-mode "LLVM MIR"
|
||||
"A major mode for editing LLVM MIR files."
|
||||
(setq-local comment-start "; ")
|
||||
(setq-local font-lock-defaults `(llvm-mir-font-lock-keywords)))
|
||||
|
||||
;;;###autoload
|
||||
(add-to-list 'auto-mode-alist (cons "\\.mir\\'" 'llvm-mir-mode))
|
||||
|
||||
(provide 'llvm-mir-mode)
|
||||
|
||||
;;; llvm-mir-mode.el ends here
|
||||
|
||||
Reference in New Issue
Block a user