mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-27 13:30:05 +00:00
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
This commit is contained in:
parent
1de886c1fa
commit
f95acc6d02
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user