diff options
-rw-r--r-- | docs/LangRef.html | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/docs/LangRef.html b/docs/LangRef.html index a71cbfc092..e3971ffed0 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -4681,7 +4681,7 @@ IfUnequal: <h5>Syntax:</h5> <pre> - <result> = load [volatile] <ty>* <pointer>[, align <alignment>][, !nontemporal !<index>] + <result> = load [volatile] <ty>* <pointer>[, align <alignment>][, !nontemporal !<index>][, !invariant.load !<index>] <result> = load atomic [volatile] <ty>* <pointer> [singlethread] <ordering>, align <alignment> !<index> = !{ 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 <index> 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 |