[PATCH] D12785: Document __builtin_nontemporal_load and __builtin_nontemporal_store.
Michael Zolotukhin via cfe-commits
cfe-commits at lists.llvm.org
Thu Sep 10 16:52:16 PDT 2015
mzolotukhin created this revision.
mzolotukhin added reviewers: hfinkel, rsmith.
mzolotukhin added a subscriber: cfe-commits.
In r247104 I added the builtins for generating non-temporal memory operations,
but now I realized that they lack documentation. This patch adds some.
http://reviews.llvm.org/D12785
Files:
docs/LanguageExtensions.rst
Index: docs/LanguageExtensions.rst
===================================================================
--- docs/LanguageExtensions.rst
+++ docs/LanguageExtensions.rst
@@ -1778,6 +1778,36 @@
For these reasons the higher level atomic primitives should be preferred where
possible.
+Non-temporal load/store builtins
+--------------------------------
+
+Clang provides overloaded builtins allowing to generate non-temporal memory
+accesses.
+
+.. code-block:: c
+
+ T __builtin_nontemporal_load(T *addr);
+ void __builtin_nontemporal_store(T value, T *addr);
+
+The types ``T`` currently supported are:
+
+* Integer types.
+* Floating-point types
+* Vector types.
+
+Note that the compiler does not guarantee that non-temporal loads or stores
+would be used. Also, using non-temporal loads and stores might change program
+semantics on some targets, so the builtins should be used with care.
+
+For example, on AArch64 in the following code::
+
+ LDR X1, [X2]
+ LDNP X3, X4, [X1]
+
+the ``LDNP`` might be executed before the ``LDR``. In this case the load would
+be performed from a wrong address (see 6.3.8 in `Programmer's Guide for ARMv8-A
+<http://infocenter.arm.com/help/topic/com.arm.doc.den0024a/DEN0024A_v8_architecture_PG.pdf>`_).
+
Non-standard C++11 Attributes
=============================
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D12785.34511.patch
Type: text/x-patch
Size: 1311 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150910/467fe387/attachment.bin>
More information about the cfe-commits
mailing list