summaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authorPete Cooper <peter_cooper@apple.com>2012-02-10 18:13:54 +0000
committerPete Cooper <peter_cooper@apple.com>2012-02-10 18:13:54 +0000
commitf95acc6d0286ffe6d0aa3f20bc61bba0dcfe14ba (patch)
tree78df29a86eb5a3bb23703ef4714235b65d55860e /docs
parent1de886c1fa932b9c33d1f9d34698bafa9cdabebd (diff)
downloadexternal_llvm-f95acc6d0286ffe6d0aa3f20bc61bba0dcfe14ba.zip
external_llvm-f95acc6d0286ffe6d0aa3f20bc61bba0dcfe14ba.tar.gz
external_llvm-f95acc6d0286ffe6d0aa3f20bc61bba0dcfe14ba.tar.bz2
Added description of invariant.load metadata to LangRef. It was added to the compiler in r144100
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150257 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs')
-rw-r--r--docs/LangRef.html10
1 files changed, 9 insertions, 1 deletions
diff --git a/docs/LangRef.html b/docs/LangRef.html
index a71cbfc..e3971ff 100644
--- a/docs/LangRef.html
+++ b/docs/LangRef.html
@@ -4681,7 +4681,7 @@ IfUnequal:
<h5>Syntax:</h5>
<pre>
- &lt;result&gt; = load [volatile] &lt;ty&gt;* &lt;pointer&gt;[, align &lt;alignment&gt;][, !nontemporal !&lt;index&gt;]
+ &lt;result&gt; = load [volatile] &lt;ty&gt;* &lt;pointer&gt;[, align &lt;alignment&gt;][, !nontemporal !&lt;index&gt;][, !invariant.load !&lt;index&gt;]
&lt;result&gt; = load atomic [volatile] &lt;ty&gt;* &lt;pointer&gt; [singlethread] &lt;ordering&gt;, align &lt;alignment&gt;
!&lt;index&gt; = !{ i32 1 }
</pre>
@@ -4726,6 +4726,14 @@ IfUnequal:
The code generator may select special instructions to save cache bandwidth,
such as the <tt>MOVNT</tt> instruction on x86.</p>
+<p>The optional <tt>!invariant.load</tt> metadata must reference a single
+ metatadata name &lt;index&gt; corresponding to a metadata node with no
+ entries. The existence of the <tt>!invariant.load</tt> metatadata on the
+ instruction tells the optimizer and code generator that this load address
+ points to memory which does not change value during program execution.
+ The optimizer may then move this load around, for example, by hoisting it
+ out of loops using loop invariant code motion.</p>
+
<h5>Semantics:</h5>
<p>The location of memory pointed to is loaded. If the value being loaded is of
scalar type then the number of bytes read does not exceed the minimum number