<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>
<!-- ======================================================================= -->
<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">
<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
<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>
'c' otherwise.</dd>
<dt><tt>!eq(a,b)</tt></dt>
<dd>Integer one if string a is equal to string b, zero otherwise. This
- only operates on string, int and bit objects. Use !cast<string> to
+ only operates on string, int and bit objects. Use !cast<string> to
compare other types of objects.</dd>
</dl>
apply, and one or more records to bind the values in. Here are some
examples:</p>
-<div class="doc_code">
-<pre>
+<pre class="doc_code">
<b>let</b> isTerminator = 1, isReturn = 1, isBarrier = 1, hasCtrlDep = 1 <b>in</b>
<b>def</b> RET : I<0xC3, RawFrm, (outs), (ins), "ret", [(X86retflag 0)]>;
"call\t{*}$dst", []>;
}
</pre>
-</div>
<p>File-scope "let" expressions are often useful when a couple of definitions
need to be added to several records, and the records do not otherwise need to be
several levels of multiclass instanciations. This also avoids the need of using
"let" expressions within subsequent records inside a multiclass.</p>
-<div class="doc_code">
-<pre>
+<pre class="doc_code">
<b>multiclass </b>basic_r<bits<4> opc> {
<b>let </b>Predicates = [HasSSE2] in {
<b>def </b>rr : Instruction<opc, "rr">;
<div class="doc_section"><a name="codegen">Code Generator backend info</a></div>
<!-- *********************************************************************** -->
+<div class="doc_text">
+
<p>Expressions used by code generator to describe instructions and isel
patterns:</p>
-<div class="doc_text">
-
+<dl>
<dt><tt>(implicit a)</tt></dt>
<dd>an implicitly defined physical register. This tells the dag instruction
selection emitter the input pattern's extra definitions matches implicit
physical register definitions.</dd>
-
+</dl>
</div>
<!-- *********************************************************************** -->