Add encoding for VSTR.
[oota-llvm.git] / docs / CodeGenerator.html
index de6a5c1ff4d8771ccfae876b0ccd7fceddd45373..f83d7b0e3133c819de25791706fd431b977fbe96 100644 (file)
@@ -5,6 +5,17 @@
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
   <title>The LLVM Target-Independent Code Generator</title>
   <link rel="stylesheet" href="llvm.css" type="text/css">
+
+  <style type="text/css">
+    .unknown { background-color: #C0C0C0; text-align: center; }
+    .unknown:before { content: "?" }
+    .no { background-color: #C11B17 }
+    .no:before { content: "N" }
+    .partial { background-color: #F88017 }
+    .yes { background-color: #0F0; }
+    .yes:before { content: "Y" }
+  </style>
+
 </head>
 <body>
 
@@ -872,7 +883,7 @@ directive in a .s file).
 
 <!-- ======================================================================= -->
 <div class="doc_subsection">
-  <a name="mcinst">The <tt>MCInst</tt> class</a></li>
+  <a name="mcinst">The <tt>MCInst</tt> class</a>
 </div>
 
 <div class="doc_text">
@@ -1896,7 +1907,7 @@ compiler.</p>
 The MatchInstructionImpl function performs alias processing and then does
 actual matching.</p>
 
-<p>Alias processing if the phase that canonicalizes different lexical forms of
+<p>Alias processing is the phase that canonicalizes different lexical forms of
 the same instructions down to one representation.  There are several different
 kinds of alias that are possible to implement and they are listed below in the
 order that they are processed (which is in order from simplest/weakest to most
@@ -1904,14 +1915,16 @@ complex/powerful).  Generally you want to use the first alias mechanism that
 meets the needs of your instruction, because it will allow a more concise
 description.</p>
 
+</div>
+
 <!-- _______________________________________________________________________ -->
 <div class="doc_subsubsection">Mnemonic Aliases</div>
 
 <div class="doc_text">
 
-<p>The first phase of alias processing is simple instruction mneomonic
+<p>The first phase of alias processing is simple instruction mnemonic
 remapping for classes of instructions which are allowed with two different
-mneomonics.  This phase is a simple and unconditionally remapping from one input
+mnemonics.  This phase is a simple and unconditionally remapping from one input
 mnemonic to one output mnemonic.  It isn't possible for this form of alias to
 look at the operands at all, so the remapping must apply for all forms of a
 given mnemonic.  Mnemonic aliases are defined simply, for example X86 has:
@@ -1928,7 +1941,19 @@ def : MnemonicAlias&lt;"ud2a",    "ud2"&gt;;
 </div>
 
 <p>... and many others.  With a MnemonicAlias definition, the mnemonic is
-remapped simply and directly.</p>
+remapped simply and directly.  Though MnemonicAlias's can't look at any aspect
+of the instruction (such as the operands) they can depend on global modes (the
+same ones supported by the matcher), through a Requires clause:</p>
+
+<div class="doc_code">
+<pre>
+def : MnemonicAlias&lt;"pushf", "pushfq"&gt;, Requires&lt;[In64BitMode]&gt;;
+def : MnemonicAlias&lt;"pushf", "pushfl"&gt;, Requires&lt;[In32BitMode]&gt;;
+</pre>
+</div>
+
+<p>In this example, the mnemonic gets mapped into different a new one depending
+on the current instruction set.</p>
 
 </div>
 
@@ -1960,17 +1985,6 @@ remapped simply and directly.</p>
   <a name="targetfeatures">Target Feature Matrix</a>
 </div>
 
-<style type="text/css">
-  .unknown { background-color: #C0C0C0; text-align: center; }
-  .unknown:before { content: "?" }
-  .no { background-color: #C11B17 }
-  .no:before { content: "N" }
-  .partial { background-color: #F88017 }
-  .yes { background-color: #00FF00; }
-  .yes:before { content: "Y" }
-</style>
-
-
 <div class="doc_text">
 
 <p>Note that this table does not include the C backend or Cpp backends, since
@@ -2001,7 +2015,7 @@ is the key:</p>
 
 <table width="689" border="1" cellspacing="0">
 <tr><td></td>
-<td colspan="13" align="center" bgcolor="#ffffcc">Target</td>
+<td colspan="13" align="center" style="background-color:#ffc">Target</td>
 </tr>
   <tr>
     <th>Feature</th>