From f95acc6d0286ffe6d0aa3f20bc61bba0dcfe14ba Mon Sep 17 00:00:00 2001 From: Pete Cooper Date: Fri, 10 Feb 2012 18:13:54 +0000 Subject: [PATCH] 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 --- docs/LangRef.html | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/LangRef.html b/docs/LangRef.html index a71cbfc0927..e3971ffed0d 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -4681,7 +4681,7 @@ IfUnequal:
Syntax:
-  <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 }
 
@@ -4726,6 +4726,14 @@ IfUnequal: The code generator may select special instructions to save cache bandwidth, such as the MOVNT instruction on x86.

+

The optional !invariant.load metadata must reference a single + metatadata name <index> corresponding to a metadata node with no + entries. The existence of the !invariant.load 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.

+
Semantics:

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 -- 2.34.1