summaryrefslogtreecommitdiffstats
path: root/llvm/docs
diff options
context:
space:
mode:
authorArtur Pilipenko <apilipenko@azulsystems.com>2015-09-28 17:41:08 +0000
committerArtur Pilipenko <apilipenko@azulsystems.com>2015-09-28 17:41:08 +0000
commitb4d009042bb897bc21b9ef8cb99785533488f7b2 (patch)
tree2a07bde627ee4e887a1b05689ed7e5eb20d4fb38 /llvm/docs
parent8aba4b058908937817443b8a23e1829806471b86 (diff)
downloadbcm5719-llvm-b4d009042bb897bc21b9ef8cb99785533488f7b2.tar.gz
bcm5719-llvm-b4d009042bb897bc21b9ef8cb99785533488f7b2.zip
Introduce !align metadata for load instruction
Reviewed By: hfinkel Differential Revision: http://reviews.llvm.org/D12853 llvm-svn: 248721
Diffstat (limited to 'llvm/docs')
-rw-r--r--llvm/docs/LangRef.rst11
1 files changed, 10 insertions, 1 deletions
diff --git a/llvm/docs/LangRef.rst b/llvm/docs/LangRef.rst
index 9b8aaa7a1fd..bc4df058646 100644
--- a/llvm/docs/LangRef.rst
+++ b/llvm/docs/LangRef.rst
@@ -6860,10 +6860,11 @@ Syntax:
::
- <result> = load [volatile] <ty>, <ty>* <pointer>[, align <alignment>][, !nontemporal !<index>][, !invariant.load !<index>][, !invariant.group !<index>][, !nonnull !<index>][, !dereferenceable !<deref_bytes_node>][, !dereferenceable_or_null !<deref_bytes_node>]
+ <result> = load [volatile] <ty>, <ty>* <pointer>[, align <alignment>][, !nontemporal !<index>][, !invariant.load !<index>][, !invariant.group !<index>][, !nonnull !<index>][, !dereferenceable !<deref_bytes_node>][, !dereferenceable_or_null !<deref_bytes_node>][, !align !<align_node>]
<result> = load atomic [volatile] <ty>* <pointer> [singlethread] <ordering>, align <alignment> [, !invariant.group !<index>]
!<index> = !{ i32 1 }
!<deref_bytes_node> = !{i64 <dereferenceable_bytes>}
+ !<align_node> = !{ i64 <value_alignment> }
Overview:
"""""""""
@@ -6948,6 +6949,14 @@ value in the metadata node. This is analogous to the ''dereferenceable_or_null''
attribute on parameters and return values. This metadata can only be applied
to loads of a pointer type.
+The optional ``!align`` metadata must reference a single metadata name
+``<align_node>`` corresponding to a metadata node with one ``i64`` entry.
+The existence of the ``!align`` metadata on the instruction tells the
+optimizer that the value loaded is known to be aligned to a boundary specified
+by the integer value in the metadata node. The alignment must be a power of 2.
+This is analogous to the ''align'' attribute on parameters and return values.
+This metadata can only be applied to loads of a pointer type.
+
Semantics:
""""""""""
OpenPOWER on IntegriCloud