[OpenCL][Docs] Describe internals of TableGen builtins

Add a high level explanation of the `-fdeclare-opencl-builtins` option.

Differential Revision: https://reviews.llvm.org/D96150
This commit is contained in:
Sven van Haastregt 2021-02-12 09:56:32 +00:00
parent 4348d8ab7f
commit 18a70797e7

View File

@ -114,6 +114,8 @@ flags that forward options to the frontend e.g. ``-cc1`` or ``-Xclang``.
OpenCL builtins
---------------
**Clang builtins**
There are some standard OpenCL functions that are implemented as Clang builtins:
- All pipe functions from `section 6.13.16.2/6.13.16.3
@ -129,6 +131,28 @@ There are some standard OpenCL functions that are implemented as Clang builtins:
enqueue query functions from `section 6.13.17.5
<https://www.khronos.org/registry/cl/specs/opencl-2.0-openclc.pdf#171>`_.
**Fast builtin function declarations**
The implementation of the fast builtin function declarations (available via the
:ref:`-fdeclare-opencl-builtins option <opencl_fast_builtins>`) consists of the
following main components:
- A TableGen definitions file ``OpenCLBuiltins.td``. This contains a compact
representation of the supported builtin functions. When adding new builtin
function declarations, this is normally the only file that needs modifying.
- A Clang TableGen emitter defined in ``ClangOpenCLBuiltinEmitter.cpp``. During
Clang build time, the emitter reads the TableGen definition file and
generates ``OpenCLBuiltins.inc``. This generated file contains various tables
and functions that capture the builtin function data from the TableGen
definitions in a compact manner.
- OpenCL specific code in ``SemaLookup.cpp``. When ``Sema::LookupBuiltin``
encounters a potential builtin function, it will check if the name corresponds
to a valid OpenCL builtin function. If so, all overloads of the function are
inserted using ``InsertOCLBuiltinDeclarationsFromTable`` and overload
resolution takes place.
.. _opencl_addrsp:
Address spaces attribute
@ -239,6 +263,8 @@ Feel free to contact us on `cfe-dev
<https://lists.llvm.org/mailman/listinfo/cfe-dev>`_ or via `Bugzilla
<https://bugs.llvm.org/>`__.
.. _opencl_fast_builtins:
Fast builtin function declarations
----------------------------------