[llvm-commits] CVS: llvm/docs/LangRef.html

Chris Lattner lattner at cs.uiuc.edu
Wed Jan 25 15:48:09 PST 2006



Changes in directory llvm/docs:

LangRef.html updated: 1.133 -> 1.134
---
Log message:

document the syntax of inline asm


---
Diffs of the changes:  (+56 -1)

 LangRef.html |   57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 56 insertions(+), 1 deletion(-)


Index: llvm/docs/LangRef.html
diff -u llvm/docs/LangRef.html:1.133 llvm/docs/LangRef.html:1.134
--- llvm/docs/LangRef.html:1.133	Mon Jan 23 18:37:10 2006
+++ llvm/docs/LangRef.html	Wed Jan 25 17:47:57 2006
@@ -55,6 +55,11 @@
       <li><a href="#constantexprs">Constant Expressions</a>
     </ol>
   </li>
+  <li><a href="#othervalues">Other Values</a>
+    <ol>
+      <li><a href="#inlineasm">Inline Assembler Expressions</a>
+    </ol>
+  </li>
   <li><a href="#instref">Instruction Reference</a>
     <ol>
       <li><a href="#terminators">Terminator Instructions</a>
@@ -1145,6 +1150,56 @@
 </div>
 
 <!-- *********************************************************************** -->
+<div class="doc_section"> <a name="othervalues">Other Values</a> </div>
+<!-- *********************************************************************** -->
+
+<!-- ======================================================================= -->
+<div class="doc_subsection">
+<a name="inlineasm">Inline Assembler Expressions</a>
+</div>
+
+<div class="doc_text">
+
+<p>
+LLVM supports inline assembler expressions (as opposed to <a href="#moduleasm">
+Module-Level Inline Assembly</a>) through the use of a special value.  This
+value represents the inline assembler as a string (containing the instructions
+to emit), a list of operand constraints (stored as a string), and a flag that 
+indicates whether or not the inline asm expression has side effects.  An example
+inline assembler expression is:
+</p>
+
+<pre>
+  int(int) asm "bswap $0", "=r,r"
+</pre>
+
+<p>
+Inline assembler expressions may <b>only</b> be used as the callee operand of
+a <a href="#i_call"><tt>call</tt> instruction</a>.  Thus, typically we have:
+</p>
+
+<pre>
+  %X = call int asm "<a href="#i_bswap">bswap</a> $0", "=r,r"(int %Y)
+</pre>
+
+<p>
+Inline asms with side effects not visible in the constraint list must be marked
+as having side effects.  This is done through the use of the
+'<tt>sideeffect</tt>' keyword, like so:
+</p>
+
+<pre>
+  call void asm sideeffect "eieio", ""()
+</pre>
+
+<p>TODO: The format of the asm and constraints string still need to be
+documented here.  Constraints on what can be done (e.g. duplication, moving, etc
+need to be documented).
+</p>
+
+</div>
+
+<!-- *********************************************************************** -->
 <div class="doc_section"> <a name="instref">Instruction Reference</a> </div>
 <!-- *********************************************************************** -->
 
@@ -3679,7 +3734,7 @@
 
   <a href="mailto:sabre at nondot.org">Chris Lattner</a><br>
   <a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a><br>
-  Last modified: $Date: 2006/01/24 00:37:10 $
+  Last modified: $Date: 2006/01/25 23:47:57 $
 </address>
 </body>
 </html>






More information about the llvm-commits mailing list