[llvm-commits] [www-releases] r170845 [32/55] - in /www-releases/trunk/3.2/docs: ./ CommandGuide/ HistoricalNotes/ _static/ _templates/ _themes/ _themes/llvm-theme/ _themes/llvm-theme/static/ doxygen/ doxygen/html/ llvm-theme/ llvm-theme/static/ tutorial/

Tanya Lattner tonic at nondot.org
Thu Dec 20 22:58:17 PST 2012


Added: www-releases/trunk/3.2/docs/doxygen/html/Utils_2SimplifyLibCalls_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Utils_2SimplifyLibCalls_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Utils_2SimplifyLibCalls_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Utils_2SimplifyLibCalls_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,1205 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: SimplifyLibCalls.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_22ea62e2015f6a823fddac4ac38ba517.html">Transforms</a>      </li>
+      <li class="navelem"><a class="el" href="dir_256b03a856f3de95632a509cd258a236.html">Utils</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Utils/SimplifyLibCalls.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="Utils_2SimplifyLibCalls_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===------ SimplifyLibCalls.cpp - Library calls simplifier ---------------===//</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">//                     The LLVM Compiler Infrastructure</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">// This file is distributed under the University of Illinois Open Source</span>
+<a name="l00006"></a>00006 <span class="comment">// License. See LICENSE.TXT for details.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00009"></a>00009 <span class="comment">//</span>
+<a name="l00010"></a>00010 <span class="comment">// This is a utility pass used for testing the InstructionSimplify analysis.</span>
+<a name="l00011"></a>00011 <span class="comment">// The analysis is applied to every instruction, and if it simplifies then the</span>
+<a name="l00012"></a>00012 <span class="comment">// instruction is replaced by the simplification.  If you are looking for a pass</span>
+<a name="l00013"></a>00013 <span class="comment">// that performs serious instruction folding, use the instcombine pass instead.</span>
+<a name="l00014"></a>00014 <span class="comment">//</span>
+<a name="l00015"></a>00015 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00016"></a>00016 
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="SimplifyLibCalls_8h.html">llvm/Transforms/Utils/SimplifyLibCalls.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="DataLayout_8h.html">llvm/DataLayout.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="StringMap_8h.html">llvm/ADT/StringMap.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="ValueTracking_8h.html">llvm/Analysis/ValueTracking.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="Function_8h.html">llvm/Function.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="IRBuilder_8h.html">llvm/IRBuilder.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="LLVMContext_8h.html">llvm/LLVMContext.h</a>"</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="TargetLibraryInfo_8h.html">llvm/Target/TargetLibraryInfo.h</a>"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="BuildLibCalls_8h.html">llvm/Transforms/Utils/BuildLibCalls.h</a>"</span>
+<a name="l00026"></a>00026 
+<a name="l00027"></a>00027 <span class="keyword">using namespace </span>llvm;
+<a name="l00028"></a>00028 <span class="comment"></span>
+<a name="l00029"></a>00029 <span class="comment">/// This class is the abstract base class for the set of optimizations that</span>
+<a name="l00030"></a>00030 <span class="comment">/// corresponds to one library call.</span>
+<a name="l00031"></a>00031 <span class="comment"></span><span class="keyword">namespace </span>{
+<a name="l00032"></a>00032 <span class="keyword">class </span>LibCallOptimization {
+<a name="l00033"></a>00033 <span class="keyword">protected</span>:
+<a name="l00034"></a>00034   <a class="code" href="classllvm_1_1Function.html">Function</a> *Caller;
+<a name="l00035"></a>00035   <span class="keyword">const</span> <a class="code" href="classllvm_1_1DataLayout.html">DataLayout</a> *TD;
+<a name="l00036"></a>00036   <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetLibraryInfo.html">TargetLibraryInfo</a> *TLI;
+<a name="l00037"></a>00037   <span class="keyword">const</span> <a class="code" href="classllvm_1_1LibCallSimplifier.html">LibCallSimplifier</a> *LCS;
+<a name="l00038"></a>00038   <a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a>* Context;
+<a name="l00039"></a>00039 <span class="keyword">public</span>:
+<a name="l00040"></a>00040   LibCallOptimization() { }
+<a name="l00041"></a>00041   <span class="keyword">virtual</span> ~LibCallOptimization() {}
+<a name="l00042"></a>00042 <span class="comment"></span>
+<a name="l00043"></a>00043 <span class="comment">  /// callOptimizer - This pure virtual method is implemented by base classes to</span>
+<a name="l00044"></a>00044 <span class="comment">  /// do various optimizations.  If this returns null then no transformation was</span>
+<a name="l00045"></a>00045 <span class="comment">  /// performed.  If it returns CI, then it transformed the call and CI is to be</span>
+<a name="l00046"></a>00046 <span class="comment">  /// deleted.  If it returns something else, replace CI with the new value and</span>
+<a name="l00047"></a>00047 <span class="comment">  /// delete CI.</span>
+<a name="l00048"></a>00048 <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B)
+<a name="l00049"></a>00049     =0;
+<a name="l00050"></a>00050 
+<a name="l00051"></a>00051   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *optimizeCall(<a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <span class="keyword">const</span> <a class="code" href="classllvm_1_1DataLayout.html">DataLayout</a> *TD,
+<a name="l00052"></a>00052                       <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetLibraryInfo.html">TargetLibraryInfo</a> *TLI,
+<a name="l00053"></a>00053                       <span class="keyword">const</span> <a class="code" href="classllvm_1_1LibCallSimplifier.html">LibCallSimplifier</a> *LCS, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00054"></a>00054     Caller = CI-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>()-><a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>();
+<a name="l00055"></a>00055     this->TD = TD;
+<a name="l00056"></a>00056     this->TLI = TLI;
+<a name="l00057"></a>00057     this->LCS = LCS;
+<a name="l00058"></a>00058     <span class="keywordflow">if</span> (CI-><a class="code" href="classllvm_1_1CallInst.html#a0bcd4131e1a1d92215f5385b4e16cd2e">getCalledFunction</a>())
+<a name="l00059"></a>00059       Context = &CI-><a class="code" href="classllvm_1_1CallInst.html#a0bcd4131e1a1d92215f5385b4e16cd2e">getCalledFunction</a>()-><a class="code" href="classllvm_1_1Function.html#a2da53ac53516a3f16191f4c8a8eaa3e5">getContext</a>();
+<a name="l00060"></a>00060 
+<a name="l00061"></a>00061     <span class="comment">// We never change the calling convention.</span>
+<a name="l00062"></a>00062     <span class="keywordflow">if</span> (CI-><a class="code" href="classllvm_1_1CallInst.html#a2a65eaf09953a013c2820f6857c647f0">getCallingConv</a>() != <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">llvm::CallingConv::C</a>)
+<a name="l00063"></a>00063       <span class="keywordflow">return</span> NULL;
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065     <span class="keywordflow">return</span> callOptimizer(CI-><a class="code" href="classllvm_1_1CallInst.html#a0bcd4131e1a1d92215f5385b4e16cd2e">getCalledFunction</a>(), CI, B);
+<a name="l00066"></a>00066   }
+<a name="l00067"></a>00067 };
+<a name="l00068"></a>00068 
+<a name="l00069"></a>00069 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00070"></a>00070 <span class="comment">// Helper Functions</span>
+<a name="l00071"></a>00071 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00072"></a>00072 <span class="comment"></span>
+<a name="l00073"></a>00073 <span class="comment">/// isOnlyUsedInZeroEqualityComparison - Return true if it only matters that the</span>
+<a name="l00074"></a>00074 <span class="comment">/// value is equal or not-equal to zero.</span>
+<a name="l00075"></a>00075 <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> isOnlyUsedInZeroEqualityComparison(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *V) {
+<a name="l00076"></a>00076   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1value__use__iterator.html">Value::use_iterator</a> UI = V-><a class="code" href="classllvm_1_1Value.html#a413abcab8dbc3900fc2fde96a5d8fca6">use_begin</a>(), E = V-><a class="code" href="classllvm_1_1Value.html#ad86469939d2a8bdd4169be9403b89f5a">use_end</a>();
+<a name="l00077"></a>00077        UI != E; ++UI) {
+<a name="l00078"></a>00078     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1ICmpInst.html" title="Represent an integer comparison operator.">ICmpInst</a> *IC = dyn_cast<ICmpInst>(*UI))
+<a name="l00079"></a>00079       <span class="keywordflow">if</span> (IC->isEquality())
+<a name="l00080"></a>00080         <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1Constant.html" title="LLVM Constant Representation.">Constant</a> *<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a> = dyn_cast<Constant>(IC->getOperand(1)))
+<a name="l00081"></a>00081           <span class="keywordflow">if</span> (<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>->isNullValue())
+<a name="l00082"></a>00082             <span class="keywordflow">continue</span>;
+<a name="l00083"></a>00083     <span class="comment">// Unknown instruction.</span>
+<a name="l00084"></a>00084     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00085"></a>00085   }
+<a name="l00086"></a>00086   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00087"></a>00087 }
+<a name="l00088"></a>00088 <span class="comment"></span>
+<a name="l00089"></a>00089 <span class="comment">/// isOnlyUsedInEqualityComparison - Return true if it is only used in equality</span>
+<a name="l00090"></a>00090 <span class="comment">/// comparisons with With.</span>
+<a name="l00091"></a>00091 <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> isOnlyUsedInEqualityComparison(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *V, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *With) {
+<a name="l00092"></a>00092   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1value__use__iterator.html">Value::use_iterator</a> UI = V-><a class="code" href="classllvm_1_1Value.html#a413abcab8dbc3900fc2fde96a5d8fca6">use_begin</a>(), E = V-><a class="code" href="classllvm_1_1Value.html#ad86469939d2a8bdd4169be9403b89f5a">use_end</a>();
+<a name="l00093"></a>00093        UI != E; ++UI) {
+<a name="l00094"></a>00094     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1ICmpInst.html" title="Represent an integer comparison operator.">ICmpInst</a> *IC = dyn_cast<ICmpInst>(*UI))
+<a name="l00095"></a>00095       <span class="keywordflow">if</span> (IC->isEquality() && IC->getOperand(1) == With)
+<a name="l00096"></a>00096         <span class="keywordflow">continue</span>;
+<a name="l00097"></a>00097     <span class="comment">// Unknown instruction.</span>
+<a name="l00098"></a>00098     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00099"></a>00099   }
+<a name="l00100"></a>00100   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00101"></a>00101 }
+<a name="l00102"></a>00102 
+<a name="l00103"></a>00103 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00104"></a>00104 <span class="comment">// Fortified Library Call Optimizations</span>
+<a name="l00105"></a>00105 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00106"></a>00106 
+<a name="l00107"></a>00107 <span class="keyword">struct </span>FortifiedLibCallOptimization : <span class="keyword">public</span> LibCallOptimization {
+<a name="l00108"></a>00108 <span class="keyword">protected</span>:
+<a name="l00109"></a>00109   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isFoldable(<span class="keywordtype">unsigned</span> SizeCIOp, <span class="keywordtype">unsigned</span> SizeArgOp,
+<a name="l00110"></a>00110         <span class="keywordtype">bool</span> isString) <span class="keyword">const</span> = 0;
+<a name="l00111"></a>00111 };
+<a name="l00112"></a>00112 
+<a name="l00113"></a>00113 <span class="keyword">struct </span>InstFortifiedLibCallOptimization : <span class="keyword">public</span> FortifiedLibCallOptimization {
+<a name="l00114"></a>00114   <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI;
+<a name="l00115"></a>00115 
+<a name="l00116"></a>00116   <span class="keywordtype">bool</span> isFoldable(<span class="keywordtype">unsigned</span> SizeCIOp, <span class="keywordtype">unsigned</span> SizeArgOp, <span class="keywordtype">bool</span> isString)<span class="keyword"> const </span>{
+<a name="l00117"></a>00117     <span class="keywordflow">if</span> (CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(SizeCIOp) == CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(SizeArgOp))
+<a name="l00118"></a>00118       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00119"></a>00119     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *SizeCI =
+<a name="l00120"></a>00120                            dyn_cast<ConstantInt>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(SizeCIOp))) {
+<a name="l00121"></a>00121       <span class="keywordflow">if</span> (SizeCI->isAllOnesValue())
+<a name="l00122"></a>00122         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00123"></a>00123       <span class="keywordflow">if</span> (isString) {
+<a name="l00124"></a>00124         uint64_t Len = <a class="code" href="namespacellvm.html#a6592393edcc944aa0fae70e18b5fbe0a">GetStringLength</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(SizeArgOp));
+<a name="l00125"></a>00125         <span class="comment">// If the length is 0 we don't know how long it is and so we can't</span>
+<a name="l00126"></a>00126         <span class="comment">// remove the check.</span>
+<a name="l00127"></a>00127         <span class="keywordflow">if</span> (Len == 0) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00128"></a>00128         <span class="keywordflow">return</span> SizeCI->getZExtValue() >= Len;
+<a name="l00129"></a>00129       }
+<a name="l00130"></a>00130       <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *Arg = dyn_cast<ConstantInt>(
+<a name="l00131"></a>00131                                                   CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(SizeArgOp)))
+<a name="l00132"></a>00132         <span class="keywordflow">return</span> SizeCI->getZExtValue() >= Arg->getZExtValue();
+<a name="l00133"></a>00133     }
+<a name="l00134"></a>00134     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00135"></a>00135   }
+<a name="l00136"></a>00136 };
+<a name="l00137"></a>00137 
+<a name="l00138"></a>00138 <span class="keyword">struct </span>MemCpyChkOpt : <span class="keyword">public</span> InstFortifiedLibCallOptimization {
+<a name="l00139"></a>00139   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00140"></a>00140     this->CI = CI;
+<a name="l00141"></a>00141     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00142"></a>00142     <a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &Context = CI-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>()-><a class="code" href="classllvm_1_1BasicBlock.html#ad652423d9d91271ba153eb86482b2f55" title="getContext - Get the context in which this basic block lives.">getContext</a>();
+<a name="l00143"></a>00143 
+<a name="l00144"></a>00144     <span class="comment">// Check if this has the right signature.</span>
+<a name="l00145"></a>00145     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 4 || FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) ||
+<a name="l00146"></a>00146         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0)-><a class="code" href="classllvm_1_1Type.html#a2eba483f5cc876e824aa6c085736086b">isPointerTy</a>() ||
+<a name="l00147"></a>00147         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1)-><a class="code" href="classllvm_1_1Type.html#a2eba483f5cc876e824aa6c085736086b">isPointerTy</a>() ||
+<a name="l00148"></a>00148         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(2) != TD-><a class="code" href="classllvm_1_1DataLayout.html#ae84bb2408dfffa4e8b5fe2ce0714a3bd">getIntPtrType</a>(Context) ||
+<a name="l00149"></a>00149         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(3) != TD-><a class="code" href="classllvm_1_1DataLayout.html#ae84bb2408dfffa4e8b5fe2ce0714a3bd">getIntPtrType</a>(Context))
+<a name="l00150"></a>00150       <span class="keywordflow">return</span> 0;
+<a name="l00151"></a>00151 
+<a name="l00152"></a>00152     <span class="keywordflow">if</span> (isFoldable(3, 2, <span class="keyword">false</span>)) {
+<a name="l00153"></a>00153       B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a849b50da820a274b4d001fbeadaf5cd7">CreateMemCpy</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1),
+<a name="l00154"></a>00154                      CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(2), 1);
+<a name="l00155"></a>00155       <span class="keywordflow">return</span> CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0);
+<a name="l00156"></a>00156     }
+<a name="l00157"></a>00157     <span class="keywordflow">return</span> 0;
+<a name="l00158"></a>00158   }
+<a name="l00159"></a>00159 };
+<a name="l00160"></a>00160 
+<a name="l00161"></a>00161 <span class="keyword">struct </span>MemMoveChkOpt : <span class="keyword">public</span> InstFortifiedLibCallOptimization {
+<a name="l00162"></a>00162   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00163"></a>00163     this->CI = CI;
+<a name="l00164"></a>00164     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00165"></a>00165     <a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &Context = CI-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>()-><a class="code" href="classllvm_1_1BasicBlock.html#ad652423d9d91271ba153eb86482b2f55" title="getContext - Get the context in which this basic block lives.">getContext</a>();
+<a name="l00166"></a>00166 
+<a name="l00167"></a>00167     <span class="comment">// Check if this has the right signature.</span>
+<a name="l00168"></a>00168     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 4 || FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) ||
+<a name="l00169"></a>00169         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0)-><a class="code" href="classllvm_1_1Type.html#a2eba483f5cc876e824aa6c085736086b">isPointerTy</a>() ||
+<a name="l00170"></a>00170         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1)-><a class="code" href="classllvm_1_1Type.html#a2eba483f5cc876e824aa6c085736086b">isPointerTy</a>() ||
+<a name="l00171"></a>00171         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(2) != TD-><a class="code" href="classllvm_1_1DataLayout.html#ae84bb2408dfffa4e8b5fe2ce0714a3bd">getIntPtrType</a>(Context) ||
+<a name="l00172"></a>00172         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(3) != TD-><a class="code" href="classllvm_1_1DataLayout.html#ae84bb2408dfffa4e8b5fe2ce0714a3bd">getIntPtrType</a>(Context))
+<a name="l00173"></a>00173       <span class="keywordflow">return</span> 0;
+<a name="l00174"></a>00174 
+<a name="l00175"></a>00175     <span class="keywordflow">if</span> (isFoldable(3, 2, <span class="keyword">false</span>)) {
+<a name="l00176"></a>00176       B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a248295120710baf72dbbd3a862c840e4">CreateMemMove</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1),
+<a name="l00177"></a>00177                       CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(2), 1);
+<a name="l00178"></a>00178       <span class="keywordflow">return</span> CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0);
+<a name="l00179"></a>00179     }
+<a name="l00180"></a>00180     <span class="keywordflow">return</span> 0;
+<a name="l00181"></a>00181   }
+<a name="l00182"></a>00182 };
+<a name="l00183"></a>00183 
+<a name="l00184"></a>00184 <span class="keyword">struct </span>MemSetChkOpt : <span class="keyword">public</span> InstFortifiedLibCallOptimization {
+<a name="l00185"></a>00185   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00186"></a>00186     this->CI = CI;
+<a name="l00187"></a>00187     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00188"></a>00188     <a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &Context = CI-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>()-><a class="code" href="classllvm_1_1BasicBlock.html#ad652423d9d91271ba153eb86482b2f55" title="getContext - Get the context in which this basic block lives.">getContext</a>();
+<a name="l00189"></a>00189 
+<a name="l00190"></a>00190     <span class="comment">// Check if this has the right signature.</span>
+<a name="l00191"></a>00191     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 4 || FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) ||
+<a name="l00192"></a>00192         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0)-><a class="code" href="classllvm_1_1Type.html#a2eba483f5cc876e824aa6c085736086b">isPointerTy</a>() ||
+<a name="l00193"></a>00193         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1)-><a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">isIntegerTy</a>() ||
+<a name="l00194"></a>00194         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(2) != TD-><a class="code" href="classllvm_1_1DataLayout.html#ae84bb2408dfffa4e8b5fe2ce0714a3bd">getIntPtrType</a>(Context) ||
+<a name="l00195"></a>00195         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(3) != TD-><a class="code" href="classllvm_1_1DataLayout.html#ae84bb2408dfffa4e8b5fe2ce0714a3bd">getIntPtrType</a>(Context))
+<a name="l00196"></a>00196       <span class="keywordflow">return</span> 0;
+<a name="l00197"></a>00197 
+<a name="l00198"></a>00198     <span class="keywordflow">if</span> (isFoldable(3, 2, <span class="keyword">false</span>)) {
+<a name="l00199"></a>00199       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Val = B.<a class="code" href="classllvm_1_1IRBuilder.html#afdd8a08bfcbd94f60d166a71a3e79ff3">CreateIntCast</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1), B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a7a71da01c646618b7f43d303d563b41b" title="getInt8Ty - Fetch the type representing an 8-bit integer.">getInt8Ty</a>(),
+<a name="l00200"></a>00200                                    <span class="keyword">false</span>);
+<a name="l00201"></a>00201       B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a58f62481bd3a4bfc5d07102fe857741a">CreateMemSet</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), Val, CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(2), 1);
+<a name="l00202"></a>00202       <span class="keywordflow">return</span> CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0);
+<a name="l00203"></a>00203     }
+<a name="l00204"></a>00204     <span class="keywordflow">return</span> 0;
+<a name="l00205"></a>00205   }
+<a name="l00206"></a>00206 };
+<a name="l00207"></a>00207 
+<a name="l00208"></a>00208 <span class="keyword">struct </span>StrCpyChkOpt : <span class="keyword">public</span> InstFortifiedLibCallOptimization {
+<a name="l00209"></a>00209   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00210"></a>00210     this->CI = CI;
+<a name="l00211"></a>00211     <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a> = Callee-><a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>();
+<a name="l00212"></a>00212     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00213"></a>00213     <a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &Context = CI-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>()-><a class="code" href="classllvm_1_1BasicBlock.html#ad652423d9d91271ba153eb86482b2f55" title="getContext - Get the context in which this basic block lives.">getContext</a>();
+<a name="l00214"></a>00214 
+<a name="l00215"></a>00215     <span class="comment">// Check if this has the right signature.</span>
+<a name="l00216"></a>00216     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 3 ||
+<a name="l00217"></a>00217         FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) ||
+<a name="l00218"></a>00218         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1) ||
+<a name="l00219"></a>00219         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != <a class="code" href="classllvm_1_1Type.html#a7fe9ccd4893f4e2caa826126c09545ea">Type::getInt8PtrTy</a>(Context) ||
+<a name="l00220"></a>00220         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(2) != TD-><a class="code" href="classllvm_1_1DataLayout.html#ae84bb2408dfffa4e8b5fe2ce0714a3bd">getIntPtrType</a>(Context))
+<a name="l00221"></a>00221       <span class="keywordflow">return</span> 0;
+<a name="l00222"></a>00222 
+<a name="l00223"></a>00223     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Dst = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), *Src = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1);
+<a name="l00224"></a>00224     <span class="keywordflow">if</span> (Dst == Src)      <span class="comment">// __strcpy_chk(x,x)  -> x</span>
+<a name="l00225"></a>00225       <span class="keywordflow">return</span> Src;
+<a name="l00226"></a>00226 
+<a name="l00227"></a>00227     <span class="comment">// If a) we don't have any length information, or b) we know this will</span>
+<a name="l00228"></a>00228     <span class="comment">// fit then just lower to a plain strcpy. Otherwise we'll keep our</span>
+<a name="l00229"></a>00229     <span class="comment">// strcpy_chk call which may fail at runtime if the size is too long.</span>
+<a name="l00230"></a>00230     <span class="comment">// TODO: It might be nice to get a maximum length out of the possible</span>
+<a name="l00231"></a>00231     <span class="comment">// string lengths for varying.</span>
+<a name="l00232"></a>00232     <span class="keywordflow">if</span> (isFoldable(2, 1, <span class="keyword">true</span>)) {
+<a name="l00233"></a>00233       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *<a class="code" href="namespacellvm_1_1MBlazeISD.html#a4cbef502356ec86269d324dc7be5cbf7a4e52b775450b88b95f31bae9c160fe01">Ret</a> = <a class="code" href="namespacellvm.html#ae601a37973544f791ae8c6bc8e57181f">EmitStrCpy</a>(Dst, Src, B, TD, TLI, Name.<a class="code" href="classllvm_1_1StringRef.html#a3d0712956e53687d1894ba17b84aeffa">substr</a>(2, 6));
+<a name="l00234"></a>00234       <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1MBlazeISD.html#a4cbef502356ec86269d324dc7be5cbf7a4e52b775450b88b95f31bae9c160fe01">Ret</a>;
+<a name="l00235"></a>00235     } <span class="keywordflow">else</span> {
+<a name="l00236"></a>00236       <span class="comment">// Maybe we can stil fold __strcpy_chk to __memcpy_chk.</span>
+<a name="l00237"></a>00237       uint64_t Len = <a class="code" href="namespacellvm.html#a6592393edcc944aa0fae70e18b5fbe0a">GetStringLength</a>(Src);
+<a name="l00238"></a>00238       <span class="keywordflow">if</span> (Len == 0) <span class="keywordflow">return</span> 0;
+<a name="l00239"></a>00239 
+<a name="l00240"></a>00240       <span class="comment">// This optimization require DataLayout.</span>
+<a name="l00241"></a>00241       <span class="keywordflow">if</span> (!TD) <span class="keywordflow">return</span> 0;
+<a name="l00242"></a>00242 
+<a name="l00243"></a>00243       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Ret =
+<a name="l00244"></a>00244   <a class="code" href="namespacellvm.html#a4c34d1c17a979d0df68f8eaebeb35629">EmitMemCpyChk</a>(Dst, Src,
+<a name="l00245"></a>00245                       <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(TD-><a class="code" href="classllvm_1_1DataLayout.html#ae84bb2408dfffa4e8b5fe2ce0714a3bd">getIntPtrType</a>(Context), Len),
+<a name="l00246"></a>00246                       CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(2), B, TD, TLI);
+<a name="l00247"></a>00247       <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1MBlazeISD.html#a4cbef502356ec86269d324dc7be5cbf7a4e52b775450b88b95f31bae9c160fe01">Ret</a>;
+<a name="l00248"></a>00248     }
+<a name="l00249"></a>00249     <span class="keywordflow">return</span> 0;
+<a name="l00250"></a>00250   }
+<a name="l00251"></a>00251 };
+<a name="l00252"></a>00252 
+<a name="l00253"></a>00253 <span class="keyword">struct </span>StpCpyChkOpt : <span class="keyword">public</span> InstFortifiedLibCallOptimization {
+<a name="l00254"></a>00254   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00255"></a>00255     this->CI = CI;
+<a name="l00256"></a>00256     <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Name = Callee-><a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>();
+<a name="l00257"></a>00257     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00258"></a>00258     <a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &Context = CI-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>()-><a class="code" href="classllvm_1_1BasicBlock.html#ad652423d9d91271ba153eb86482b2f55" title="getContext - Get the context in which this basic block lives.">getContext</a>();
+<a name="l00259"></a>00259 
+<a name="l00260"></a>00260     <span class="comment">// Check if this has the right signature.</span>
+<a name="l00261"></a>00261     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 3 ||
+<a name="l00262"></a>00262         FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) ||
+<a name="l00263"></a>00263         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1) ||
+<a name="l00264"></a>00264         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != <a class="code" href="classllvm_1_1Type.html#a7fe9ccd4893f4e2caa826126c09545ea">Type::getInt8PtrTy</a>(Context) ||
+<a name="l00265"></a>00265         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(2) != TD-><a class="code" href="classllvm_1_1DataLayout.html#ae84bb2408dfffa4e8b5fe2ce0714a3bd">getIntPtrType</a>(FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0)))
+<a name="l00266"></a>00266       <span class="keywordflow">return</span> 0;
+<a name="l00267"></a>00267 
+<a name="l00268"></a>00268     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Dst = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), *Src = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1);
+<a name="l00269"></a>00269     <span class="keywordflow">if</span> (Dst == Src) {  <span class="comment">// stpcpy(x,x)  -> x+strlen(x)</span>
+<a name="l00270"></a>00270       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *StrLen = <a class="code" href="namespacellvm.html#aeb757469668c1dfea81273148ccdf0ab">EmitStrLen</a>(Src, B, TD, TLI);
+<a name="l00271"></a>00271       <span class="keywordflow">return</span> StrLen ? B.<a class="code" href="classllvm_1_1IRBuilder.html#a1f5e8b8d535e593299355288aa0cbd67">CreateInBoundsGEP</a>(Dst, StrLen) : 0;
+<a name="l00272"></a>00272     }
+<a name="l00273"></a>00273 
+<a name="l00274"></a>00274     <span class="comment">// If a) we don't have any length information, or b) we know this will</span>
+<a name="l00275"></a>00275     <span class="comment">// fit then just lower to a plain stpcpy. Otherwise we'll keep our</span>
+<a name="l00276"></a>00276     <span class="comment">// stpcpy_chk call which may fail at runtime if the size is too long.</span>
+<a name="l00277"></a>00277     <span class="comment">// TODO: It might be nice to get a maximum length out of the possible</span>
+<a name="l00278"></a>00278     <span class="comment">// string lengths for varying.</span>
+<a name="l00279"></a>00279     <span class="keywordflow">if</span> (isFoldable(2, 1, <span class="keyword">true</span>)) {
+<a name="l00280"></a>00280       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Ret = <a class="code" href="namespacellvm.html#ae601a37973544f791ae8c6bc8e57181f">EmitStrCpy</a>(Dst, Src, B, TD, TLI, Name.<a class="code" href="classllvm_1_1StringRef.html#a3d0712956e53687d1894ba17b84aeffa">substr</a>(2, 6));
+<a name="l00281"></a>00281       <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1MBlazeISD.html#a4cbef502356ec86269d324dc7be5cbf7a4e52b775450b88b95f31bae9c160fe01">Ret</a>;
+<a name="l00282"></a>00282     } <span class="keywordflow">else</span> {
+<a name="l00283"></a>00283       <span class="comment">// Maybe we can stil fold __stpcpy_chk to __memcpy_chk.</span>
+<a name="l00284"></a>00284       uint64_t Len = <a class="code" href="namespacellvm.html#a6592393edcc944aa0fae70e18b5fbe0a">GetStringLength</a>(Src);
+<a name="l00285"></a>00285       <span class="keywordflow">if</span> (Len == 0) <span class="keywordflow">return</span> 0;
+<a name="l00286"></a>00286 
+<a name="l00287"></a>00287       <span class="comment">// This optimization require DataLayout.</span>
+<a name="l00288"></a>00288       <span class="keywordflow">if</span> (!TD) <span class="keywordflow">return</span> 0;
+<a name="l00289"></a>00289 
+<a name="l00290"></a>00290       <a class="code" href="classllvm_1_1Type.html">Type</a> *PT = FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0);
+<a name="l00291"></a>00291       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *LenV = <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(TD-><a class="code" href="classllvm_1_1DataLayout.html#ae84bb2408dfffa4e8b5fe2ce0714a3bd">getIntPtrType</a>(PT), Len);
+<a name="l00292"></a>00292       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *DstEnd = B.<a class="code" href="classllvm_1_1IRBuilder.html#ac46176b523c8a76a9ccdb5683279db94">CreateGEP</a>(Dst,
+<a name="l00293"></a>00293                                   <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(TD-><a class="code" href="classllvm_1_1DataLayout.html#ae84bb2408dfffa4e8b5fe2ce0714a3bd">getIntPtrType</a>(PT),
+<a name="l00294"></a>00294                                                    Len - 1));
+<a name="l00295"></a>00295       <span class="keywordflow">if</span> (!<a class="code" href="namespacellvm.html#a4c34d1c17a979d0df68f8eaebeb35629">EmitMemCpyChk</a>(Dst, Src, LenV, CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(2), B, TD, TLI))
+<a name="l00296"></a>00296         <span class="keywordflow">return</span> 0;
+<a name="l00297"></a>00297       <span class="keywordflow">return</span> DstEnd;
+<a name="l00298"></a>00298     }
+<a name="l00299"></a>00299     <span class="keywordflow">return</span> 0;
+<a name="l00300"></a>00300   }
+<a name="l00301"></a>00301 };
+<a name="l00302"></a>00302 
+<a name="l00303"></a>00303 <span class="keyword">struct </span>StrNCpyChkOpt : <span class="keyword">public</span> InstFortifiedLibCallOptimization {
+<a name="l00304"></a>00304   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00305"></a>00305     this->CI = CI;
+<a name="l00306"></a>00306     <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Name = Callee-><a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>();
+<a name="l00307"></a>00307     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00308"></a>00308     <a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &Context = CI-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>()-><a class="code" href="classllvm_1_1BasicBlock.html#ad652423d9d91271ba153eb86482b2f55" title="getContext - Get the context in which this basic block lives.">getContext</a>();
+<a name="l00309"></a>00309 
+<a name="l00310"></a>00310     <span class="comment">// Check if this has the right signature.</span>
+<a name="l00311"></a>00311     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 4 || FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) ||
+<a name="l00312"></a>00312         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1) ||
+<a name="l00313"></a>00313         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != <a class="code" href="classllvm_1_1Type.html#a7fe9ccd4893f4e2caa826126c09545ea">Type::getInt8PtrTy</a>(Context) ||
+<a name="l00314"></a>00314         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(2)-><a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">isIntegerTy</a>() ||
+<a name="l00315"></a>00315         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(3) != TD-><a class="code" href="classllvm_1_1DataLayout.html#ae84bb2408dfffa4e8b5fe2ce0714a3bd">getIntPtrType</a>(Context))
+<a name="l00316"></a>00316       <span class="keywordflow">return</span> 0;
+<a name="l00317"></a>00317 
+<a name="l00318"></a>00318     <span class="keywordflow">if</span> (isFoldable(3, 2, <span class="keyword">false</span>)) {
+<a name="l00319"></a>00319       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Ret = <a class="code" href="namespacellvm.html#ae3766d58307260b74c7ea9258a1085b5">EmitStrNCpy</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1),
+<a name="l00320"></a>00320                                CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(2), B, TD, TLI,
+<a name="l00321"></a>00321                                Name.<a class="code" href="classllvm_1_1StringRef.html#a3d0712956e53687d1894ba17b84aeffa">substr</a>(2, 7));
+<a name="l00322"></a>00322       <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1MBlazeISD.html#a4cbef502356ec86269d324dc7be5cbf7a4e52b775450b88b95f31bae9c160fe01">Ret</a>;
+<a name="l00323"></a>00323     }
+<a name="l00324"></a>00324     <span class="keywordflow">return</span> 0;
+<a name="l00325"></a>00325   }
+<a name="l00326"></a>00326 };
+<a name="l00327"></a>00327 
+<a name="l00328"></a>00328 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00329"></a>00329 <span class="comment">// String and Memory Library Call Optimizations</span>
+<a name="l00330"></a>00330 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00331"></a>00331 
+<a name="l00332"></a>00332 <span class="keyword">struct </span>StrCatOpt : <span class="keyword">public</span> LibCallOptimization {
+<a name="l00333"></a>00333   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00334"></a>00334     <span class="comment">// Verify the "strcat" function prototype.</span>
+<a name="l00335"></a>00335     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00336"></a>00336     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 2 ||
+<a name="l00337"></a>00337         FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() != B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a7badbb741cd23e73ad063428c9cd5fea">getInt8PtrTy</a>() ||
+<a name="l00338"></a>00338         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() ||
+<a name="l00339"></a>00339         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1) != FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>())
+<a name="l00340"></a>00340       <span class="keywordflow">return</span> 0;
+<a name="l00341"></a>00341 
+<a name="l00342"></a>00342     <span class="comment">// Extract some information from the instruction</span>
+<a name="l00343"></a>00343     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Dst = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0);
+<a name="l00344"></a>00344     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Src = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1);
+<a name="l00345"></a>00345 
+<a name="l00346"></a>00346     <span class="comment">// See if we can get the length of the input string.</span>
+<a name="l00347"></a>00347     uint64_t Len = <a class="code" href="namespacellvm.html#a6592393edcc944aa0fae70e18b5fbe0a">GetStringLength</a>(Src);
+<a name="l00348"></a>00348     <span class="keywordflow">if</span> (Len == 0) <span class="keywordflow">return</span> 0;
+<a name="l00349"></a>00349     --Len;  <span class="comment">// Unbias length.</span>
+<a name="l00350"></a>00350 
+<a name="l00351"></a>00351     <span class="comment">// Handle the simple, do-nothing case: strcat(x, "") -> x</span>
+<a name="l00352"></a>00352     <span class="keywordflow">if</span> (Len == 0)
+<a name="l00353"></a>00353       <span class="keywordflow">return</span> Dst;
+<a name="l00354"></a>00354 
+<a name="l00355"></a>00355     <span class="comment">// These optimizations require DataLayout.</span>
+<a name="l00356"></a>00356     <span class="keywordflow">if</span> (!TD) <span class="keywordflow">return</span> 0;
+<a name="l00357"></a>00357 
+<a name="l00358"></a>00358     <span class="keywordflow">return</span> emitStrLenMemCpy(Src, Dst, Len, B);
+<a name="l00359"></a>00359   }
+<a name="l00360"></a>00360 
+<a name="l00361"></a>00361   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *emitStrLenMemCpy(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Src, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Dst, uint64_t Len,
+<a name="l00362"></a>00362                           <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00363"></a>00363     <span class="comment">// We need to find the end of the destination string.  That's where the</span>
+<a name="l00364"></a>00364     <span class="comment">// memory is to be moved to. We just generate a call to strlen.</span>
+<a name="l00365"></a>00365     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *DstLen = <a class="code" href="namespacellvm.html#aeb757469668c1dfea81273148ccdf0ab">EmitStrLen</a>(Dst, B, TD, TLI);
+<a name="l00366"></a>00366     <span class="keywordflow">if</span> (!DstLen)
+<a name="l00367"></a>00367       <span class="keywordflow">return</span> 0;
+<a name="l00368"></a>00368 
+<a name="l00369"></a>00369     <span class="comment">// Now that we have the destination's length, we must index into the</span>
+<a name="l00370"></a>00370     <span class="comment">// destination's pointer to get the actual memcpy destination (end of</span>
+<a name="l00371"></a>00371     <span class="comment">// the string .. we're concatenating).</span>
+<a name="l00372"></a>00372     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *CpyDst = B.<a class="code" href="classllvm_1_1IRBuilder.html#ac46176b523c8a76a9ccdb5683279db94">CreateGEP</a>(Dst, DstLen, <span class="stringliteral">"endptr"</span>);
+<a name="l00373"></a>00373 
+<a name="l00374"></a>00374     <span class="comment">// We have enough information to now generate the memcpy call to do the</span>
+<a name="l00375"></a>00375     <span class="comment">// concatenation for us.  Make a memcpy to copy the nul byte with align = 1.</span>
+<a name="l00376"></a>00376     B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a849b50da820a274b4d001fbeadaf5cd7">CreateMemCpy</a>(CpyDst, Src,
+<a name="l00377"></a>00377                    <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(TD-><a class="code" href="classllvm_1_1DataLayout.html#ae84bb2408dfffa4e8b5fe2ce0714a3bd">getIntPtrType</a>(*Context), Len + 1), 1);
+<a name="l00378"></a>00378     <span class="keywordflow">return</span> Dst;
+<a name="l00379"></a>00379   }
+<a name="l00380"></a>00380 };
+<a name="l00381"></a>00381 
+<a name="l00382"></a>00382 <span class="keyword">struct </span>StrNCatOpt : <span class="keyword">public</span> StrCatOpt {
+<a name="l00383"></a>00383   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00384"></a>00384     <span class="comment">// Verify the "strncat" function prototype.</span>
+<a name="l00385"></a>00385     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00386"></a>00386     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 3 ||
+<a name="l00387"></a>00387         FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() != B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a7badbb741cd23e73ad063428c9cd5fea">getInt8PtrTy</a>() ||
+<a name="l00388"></a>00388         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() ||
+<a name="l00389"></a>00389         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1) != FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() ||
+<a name="l00390"></a>00390         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(2)-><a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">isIntegerTy</a>())
+<a name="l00391"></a>00391       <span class="keywordflow">return</span> 0;
+<a name="l00392"></a>00392 
+<a name="l00393"></a>00393     <span class="comment">// Extract some information from the instruction</span>
+<a name="l00394"></a>00394     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Dst = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0);
+<a name="l00395"></a>00395     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Src = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1);
+<a name="l00396"></a>00396     uint64_t Len;
+<a name="l00397"></a>00397 
+<a name="l00398"></a>00398     <span class="comment">// We don't do anything if length is not constant</span>
+<a name="l00399"></a>00399     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *LengthArg = dyn_cast<ConstantInt>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(2)))
+<a name="l00400"></a>00400       Len = LengthArg->getZExtValue();
+<a name="l00401"></a>00401     <span class="keywordflow">else</span>
+<a name="l00402"></a>00402       <span class="keywordflow">return</span> 0;
+<a name="l00403"></a>00403 
+<a name="l00404"></a>00404     <span class="comment">// See if we can get the length of the input string.</span>
+<a name="l00405"></a>00405     uint64_t SrcLen = <a class="code" href="namespacellvm.html#a6592393edcc944aa0fae70e18b5fbe0a">GetStringLength</a>(Src);
+<a name="l00406"></a>00406     <span class="keywordflow">if</span> (SrcLen == 0) <span class="keywordflow">return</span> 0;
+<a name="l00407"></a>00407     --SrcLen;  <span class="comment">// Unbias length.</span>
+<a name="l00408"></a>00408 
+<a name="l00409"></a>00409     <span class="comment">// Handle the simple, do-nothing cases:</span>
+<a name="l00410"></a>00410     <span class="comment">// strncat(x, "", c) -> x</span>
+<a name="l00411"></a>00411     <span class="comment">// strncat(x,  c, 0) -> x</span>
+<a name="l00412"></a>00412     <span class="keywordflow">if</span> (SrcLen == 0 || Len == 0) <span class="keywordflow">return</span> Dst;
+<a name="l00413"></a>00413 
+<a name="l00414"></a>00414     <span class="comment">// These optimizations require DataLayout.</span>
+<a name="l00415"></a>00415     <span class="keywordflow">if</span> (!TD) <span class="keywordflow">return</span> 0;
+<a name="l00416"></a>00416 
+<a name="l00417"></a>00417     <span class="comment">// We don't optimize this case</span>
+<a name="l00418"></a>00418     <span class="keywordflow">if</span> (Len < SrcLen) <span class="keywordflow">return</span> 0;
+<a name="l00419"></a>00419 
+<a name="l00420"></a>00420     <span class="comment">// strncat(x, s, c) -> strcat(x, s)</span>
+<a name="l00421"></a>00421     <span class="comment">// s is constant so the strcat can be optimized further</span>
+<a name="l00422"></a>00422     <span class="keywordflow">return</span> emitStrLenMemCpy(Src, Dst, SrcLen, B);
+<a name="l00423"></a>00423   }
+<a name="l00424"></a>00424 };
+<a name="l00425"></a>00425 
+<a name="l00426"></a>00426 <span class="keyword">struct </span>StrChrOpt : <span class="keyword">public</span> LibCallOptimization {
+<a name="l00427"></a>00427   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00428"></a>00428     <span class="comment">// Verify the "strchr" function prototype.</span>
+<a name="l00429"></a>00429     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00430"></a>00430     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 2 ||
+<a name="l00431"></a>00431         FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() != B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a7badbb741cd23e73ad063428c9cd5fea">getInt8PtrTy</a>() ||
+<a name="l00432"></a>00432         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() ||
+<a name="l00433"></a>00433         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1)-><a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">isIntegerTy</a>(32))
+<a name="l00434"></a>00434       <span class="keywordflow">return</span> 0;
+<a name="l00435"></a>00435 
+<a name="l00436"></a>00436     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *SrcStr = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0);
+<a name="l00437"></a>00437 
+<a name="l00438"></a>00438     <span class="comment">// If the second operand is non-constant, see if we can compute the length</span>
+<a name="l00439"></a>00439     <span class="comment">// of the input string and turn this into memchr.</span>
+<a name="l00440"></a>00440     <a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *CharC = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a>>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1));
+<a name="l00441"></a>00441     <span class="keywordflow">if</span> (CharC == 0) {
+<a name="l00442"></a>00442       <span class="comment">// These optimizations require DataLayout.</span>
+<a name="l00443"></a>00443       <span class="keywordflow">if</span> (!TD) <span class="keywordflow">return</span> 0;
+<a name="l00444"></a>00444 
+<a name="l00445"></a>00445       uint64_t Len = <a class="code" href="namespacellvm.html#a6592393edcc944aa0fae70e18b5fbe0a">GetStringLength</a>(SrcStr);
+<a name="l00446"></a>00446       <span class="keywordflow">if</span> (Len == 0 || !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1)-><a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">isIntegerTy</a>(32))<span class="comment">// memchr needs i32.</span>
+<a name="l00447"></a>00447         <span class="keywordflow">return</span> 0;
+<a name="l00448"></a>00448 
+<a name="l00449"></a>00449       <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a427bf8cb5a44f3f2c23ae7827889eb27">EmitMemChr</a>(SrcStr, CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1), <span class="comment">// include nul.</span>
+<a name="l00450"></a>00450                         <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(TD-><a class="code" href="classllvm_1_1DataLayout.html#ae84bb2408dfffa4e8b5fe2ce0714a3bd">getIntPtrType</a>(*Context), Len),
+<a name="l00451"></a>00451                         B, TD, TLI);
+<a name="l00452"></a>00452     }
+<a name="l00453"></a>00453 
+<a name="l00454"></a>00454     <span class="comment">// Otherwise, the character is a constant, see if the first argument is</span>
+<a name="l00455"></a>00455     <span class="comment">// a string literal.  If so, we can constant fold.</span>
+<a name="l00456"></a>00456     <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Str;
+<a name="l00457"></a>00457     <span class="keywordflow">if</span> (!<a class="code" href="namespacellvm.html#a66d195fefcf9fab4b08703860991c14c">getConstantStringInfo</a>(SrcStr, Str))
+<a name="l00458"></a>00458       <span class="keywordflow">return</span> 0;
+<a name="l00459"></a>00459 
+<a name="l00460"></a>00460     <span class="comment">// Compute the offset, make sure to handle the case when we're searching for</span>
+<a name="l00461"></a>00461     <span class="comment">// zero (a weird way to spell strlen).</span>
+<a name="l00462"></a>00462     <span class="keywordtype">size_t</span> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = CharC-><a class="code" href="classllvm_1_1ConstantInt.html#a097c2d42e4deffabe6d54b007ad83367" title="Return the sign extended value.">getSExtValue</a>() == 0 ?
+<a name="l00463"></a>00463         Str.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>() : Str.<a class="code" href="classllvm_1_1StringRef.html#a421e16456fe6d7b71fb4af736194165c">find</a>(CharC-><a class="code" href="classllvm_1_1ConstantInt.html#a097c2d42e4deffabe6d54b007ad83367" title="Return the sign extended value.">getSExtValue</a>());
+<a name="l00464"></a>00464     <span class="keywordflow">if</span> (I == <a class="code" href="classllvm_1_1StringRef.html#a7414af479a1a88b0631120a4fc681e20">StringRef::npos</a>) <span class="comment">// Didn't find the char.  strchr returns null.</span>
+<a name="l00465"></a>00465       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Constant.html#aa6574d526b3e38a28f688a7bb4325c2c">Constant::getNullValue</a>(CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>());
+<a name="l00466"></a>00466 
+<a name="l00467"></a>00467     <span class="comment">// strchr(s+n,c)  -> gep(s+n+i,c)</span>
+<a name="l00468"></a>00468     <span class="keywordflow">return</span> B.<a class="code" href="classllvm_1_1IRBuilder.html#ac46176b523c8a76a9ccdb5683279db94">CreateGEP</a>(SrcStr, B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a675da14f55ad277eae001b705c42be8b" title="getInt64 - Get a constant 64-bit value.">getInt64</a>(I), <span class="stringliteral">"strchr"</span>);
+<a name="l00469"></a>00469   }
+<a name="l00470"></a>00470 };
+<a name="l00471"></a>00471 
+<a name="l00472"></a>00472 <span class="keyword">struct </span>StrRChrOpt : <span class="keyword">public</span> LibCallOptimization {
+<a name="l00473"></a>00473   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00474"></a>00474     <span class="comment">// Verify the "strrchr" function prototype.</span>
+<a name="l00475"></a>00475     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00476"></a>00476     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 2 ||
+<a name="l00477"></a>00477         FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() != B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a7badbb741cd23e73ad063428c9cd5fea">getInt8PtrTy</a>() ||
+<a name="l00478"></a>00478         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() ||
+<a name="l00479"></a>00479         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1)-><a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">isIntegerTy</a>(32))
+<a name="l00480"></a>00480       <span class="keywordflow">return</span> 0;
+<a name="l00481"></a>00481 
+<a name="l00482"></a>00482     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *SrcStr = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0);
+<a name="l00483"></a>00483     <a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *CharC = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a>>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1));
+<a name="l00484"></a>00484 
+<a name="l00485"></a>00485     <span class="comment">// Cannot fold anything if we're not looking for a constant.</span>
+<a name="l00486"></a>00486     <span class="keywordflow">if</span> (!CharC)
+<a name="l00487"></a>00487       <span class="keywordflow">return</span> 0;
+<a name="l00488"></a>00488 
+<a name="l00489"></a>00489     <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Str;
+<a name="l00490"></a>00490     <span class="keywordflow">if</span> (!<a class="code" href="namespacellvm.html#a66d195fefcf9fab4b08703860991c14c">getConstantStringInfo</a>(SrcStr, Str)) {
+<a name="l00491"></a>00491       <span class="comment">// strrchr(s, 0) -> strchr(s, 0)</span>
+<a name="l00492"></a>00492       <span class="keywordflow">if</span> (TD && CharC-><a class="code" href="classllvm_1_1ConstantInt.html#ad4ea4748170f687710a54c919dde5625">isZero</a>())
+<a name="l00493"></a>00493         <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a10e9d29cf69cbc46524b855cac23b289">EmitStrChr</a>(SrcStr, <span class="charliteral">'\0'</span>, B, TD, TLI);
+<a name="l00494"></a>00494       <span class="keywordflow">return</span> 0;
+<a name="l00495"></a>00495     }
+<a name="l00496"></a>00496 
+<a name="l00497"></a>00497     <span class="comment">// Compute the offset.</span>
+<a name="l00498"></a>00498     <span class="keywordtype">size_t</span> I = CharC-><a class="code" href="classllvm_1_1ConstantInt.html#a097c2d42e4deffabe6d54b007ad83367" title="Return the sign extended value.">getSExtValue</a>() == 0 ?
+<a name="l00499"></a>00499         Str.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>() : Str.<a class="code" href="classllvm_1_1StringRef.html#a87091ed60a621a3d430752da2996d27b">rfind</a>(CharC-><a class="code" href="classllvm_1_1ConstantInt.html#a097c2d42e4deffabe6d54b007ad83367" title="Return the sign extended value.">getSExtValue</a>());
+<a name="l00500"></a>00500     <span class="keywordflow">if</span> (I == <a class="code" href="classllvm_1_1StringRef.html#a7414af479a1a88b0631120a4fc681e20">StringRef::npos</a>) <span class="comment">// Didn't find the char. Return null.</span>
+<a name="l00501"></a>00501       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Constant.html#aa6574d526b3e38a28f688a7bb4325c2c">Constant::getNullValue</a>(CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>());
+<a name="l00502"></a>00502 
+<a name="l00503"></a>00503     <span class="comment">// strrchr(s+n,c) -> gep(s+n+i,c)</span>
+<a name="l00504"></a>00504     <span class="keywordflow">return</span> B.<a class="code" href="classllvm_1_1IRBuilder.html#ac46176b523c8a76a9ccdb5683279db94">CreateGEP</a>(SrcStr, B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a675da14f55ad277eae001b705c42be8b" title="getInt64 - Get a constant 64-bit value.">getInt64</a>(I), <span class="stringliteral">"strrchr"</span>);
+<a name="l00505"></a>00505   }
+<a name="l00506"></a>00506 };
+<a name="l00507"></a>00507 
+<a name="l00508"></a>00508 <span class="keyword">struct </span>StrCmpOpt : <span class="keyword">public</span> LibCallOptimization {
+<a name="l00509"></a>00509   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00510"></a>00510     <span class="comment">// Verify the "strcmp" function prototype.</span>
+<a name="l00511"></a>00511     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00512"></a>00512     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 2 ||
+<a name="l00513"></a>00513         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>()-><a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">isIntegerTy</a>(32) ||
+<a name="l00514"></a>00514         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1) ||
+<a name="l00515"></a>00515         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a7badbb741cd23e73ad063428c9cd5fea">getInt8PtrTy</a>())
+<a name="l00516"></a>00516       <span class="keywordflow">return</span> 0;
+<a name="l00517"></a>00517 
+<a name="l00518"></a>00518     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Str1P = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), *Str2P = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1);
+<a name="l00519"></a>00519     <span class="keywordflow">if</span> (Str1P == Str2P)      <span class="comment">// strcmp(x,x)  -> 0</span>
+<a name="l00520"></a>00520       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(), 0);
+<a name="l00521"></a>00521 
+<a name="l00522"></a>00522     <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Str1, Str2;
+<a name="l00523"></a>00523     <span class="keywordtype">bool</span> HasStr1 = <a class="code" href="namespacellvm.html#a66d195fefcf9fab4b08703860991c14c">getConstantStringInfo</a>(Str1P, Str1);
+<a name="l00524"></a>00524     <span class="keywordtype">bool</span> HasStr2 = <a class="code" href="namespacellvm.html#a66d195fefcf9fab4b08703860991c14c">getConstantStringInfo</a>(Str2P, Str2);
+<a name="l00525"></a>00525 
+<a name="l00526"></a>00526     <span class="comment">// strcmp(x, y)  -> cnst  (if both x and y are constant strings)</span>
+<a name="l00527"></a>00527     <span class="keywordflow">if</span> (HasStr1 && HasStr2)
+<a name="l00528"></a>00528       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(), Str1.compare(Str2));
+<a name="l00529"></a>00529 
+<a name="l00530"></a>00530     <span class="keywordflow">if</span> (HasStr1 && Str1.empty()) <span class="comment">// strcmp("", x) -> -*x</span>
+<a name="l00531"></a>00531       <span class="keywordflow">return</span> B.<a class="code" href="classllvm_1_1IRBuilder.html#a97ab781fefa6f6ff35ce5c4c7dac3a79">CreateNeg</a>(B.<a class="code" href="classllvm_1_1IRBuilder.html#a277dfeaad2a2ada72a6024b0eedc5301">CreateZExt</a>(B.<a class="code" href="classllvm_1_1IRBuilder.html#af440b535b3b4e8d0d089dd0ed2283a0f">CreateLoad</a>(Str2P, <span class="stringliteral">"strcmpload"</span>),
+<a name="l00532"></a>00532                                       CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()));
+<a name="l00533"></a>00533 
+<a name="l00534"></a>00534     <span class="keywordflow">if</span> (HasStr2 && Str2.empty()) <span class="comment">// strcmp(x,"") -> *x</span>
+<a name="l00535"></a>00535       <span class="keywordflow">return</span> B.<a class="code" href="classllvm_1_1IRBuilder.html#a277dfeaad2a2ada72a6024b0eedc5301">CreateZExt</a>(B.<a class="code" href="classllvm_1_1IRBuilder.html#af440b535b3b4e8d0d089dd0ed2283a0f">CreateLoad</a>(Str1P, <span class="stringliteral">"strcmpload"</span>), CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>());
+<a name="l00536"></a>00536 
+<a name="l00537"></a>00537     <span class="comment">// strcmp(P, "x") -> memcmp(P, "x", 2)</span>
+<a name="l00538"></a>00538     uint64_t Len1 = <a class="code" href="namespacellvm.html#a6592393edcc944aa0fae70e18b5fbe0a">GetStringLength</a>(Str1P);
+<a name="l00539"></a>00539     uint64_t Len2 = <a class="code" href="namespacellvm.html#a6592393edcc944aa0fae70e18b5fbe0a">GetStringLength</a>(Str2P);
+<a name="l00540"></a>00540     <span class="keywordflow">if</span> (Len1 && Len2) {
+<a name="l00541"></a>00541       <span class="comment">// These optimizations require DataLayout.</span>
+<a name="l00542"></a>00542       <span class="keywordflow">if</span> (!TD) <span class="keywordflow">return</span> 0;
+<a name="l00543"></a>00543 
+<a name="l00544"></a>00544       <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#af7368cf055e9edbd287f809ce476dba3" title="EmitMemCmp - Emit a call to the memcmp function.">EmitMemCmp</a>(Str1P, Str2P,
+<a name="l00545"></a>00545                         <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(TD-><a class="code" href="classllvm_1_1DataLayout.html#ae84bb2408dfffa4e8b5fe2ce0714a3bd">getIntPtrType</a>(*Context),
+<a name="l00546"></a>00546                         std::min(Len1, Len2)), B, TD, TLI);
+<a name="l00547"></a>00547     }
+<a name="l00548"></a>00548 
+<a name="l00549"></a>00549     <span class="keywordflow">return</span> 0;
+<a name="l00550"></a>00550   }
+<a name="l00551"></a>00551 };
+<a name="l00552"></a>00552 
+<a name="l00553"></a>00553 <span class="keyword">struct </span>StrNCmpOpt : <span class="keyword">public</span> LibCallOptimization {
+<a name="l00554"></a>00554   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00555"></a>00555     <span class="comment">// Verify the "strncmp" function prototype.</span>
+<a name="l00556"></a>00556     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00557"></a>00557     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 3 ||
+<a name="l00558"></a>00558         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>()-><a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">isIntegerTy</a>(32) ||
+<a name="l00559"></a>00559         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1) ||
+<a name="l00560"></a>00560         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a7badbb741cd23e73ad063428c9cd5fea">getInt8PtrTy</a>() ||
+<a name="l00561"></a>00561         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(2)-><a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">isIntegerTy</a>())
+<a name="l00562"></a>00562       <span class="keywordflow">return</span> 0;
+<a name="l00563"></a>00563 
+<a name="l00564"></a>00564     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Str1P = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), *Str2P = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1);
+<a name="l00565"></a>00565     <span class="keywordflow">if</span> (Str1P == Str2P)      <span class="comment">// strncmp(x,x,n)  -> 0</span>
+<a name="l00566"></a>00566       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(), 0);
+<a name="l00567"></a>00567 
+<a name="l00568"></a>00568     <span class="comment">// Get the length argument if it is constant.</span>
+<a name="l00569"></a>00569     uint64_t Length;
+<a name="l00570"></a>00570     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *LengthArg = dyn_cast<ConstantInt>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(2)))
+<a name="l00571"></a>00571       Length = LengthArg->getZExtValue();
+<a name="l00572"></a>00572     <span class="keywordflow">else</span>
+<a name="l00573"></a>00573       <span class="keywordflow">return</span> 0;
+<a name="l00574"></a>00574 
+<a name="l00575"></a>00575     <span class="keywordflow">if</span> (Length == 0) <span class="comment">// strncmp(x,y,0)   -> 0</span>
+<a name="l00576"></a>00576       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(), 0);
+<a name="l00577"></a>00577 
+<a name="l00578"></a>00578     <span class="keywordflow">if</span> (TD && Length == 1) <span class="comment">// strncmp(x,y,1) -> memcmp(x,y,1)</span>
+<a name="l00579"></a>00579       <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#af7368cf055e9edbd287f809ce476dba3" title="EmitMemCmp - Emit a call to the memcmp function.">EmitMemCmp</a>(Str1P, Str2P, CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(2), B, TD, TLI);
+<a name="l00580"></a>00580 
+<a name="l00581"></a>00581     <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Str1, Str2;
+<a name="l00582"></a>00582     <span class="keywordtype">bool</span> HasStr1 = <a class="code" href="namespacellvm.html#a66d195fefcf9fab4b08703860991c14c">getConstantStringInfo</a>(Str1P, Str1);
+<a name="l00583"></a>00583     <span class="keywordtype">bool</span> HasStr2 = <a class="code" href="namespacellvm.html#a66d195fefcf9fab4b08703860991c14c">getConstantStringInfo</a>(Str2P, Str2);
+<a name="l00584"></a>00584 
+<a name="l00585"></a>00585     <span class="comment">// strncmp(x, y)  -> cnst  (if both x and y are constant strings)</span>
+<a name="l00586"></a>00586     <span class="keywordflow">if</span> (HasStr1 && HasStr2) {
+<a name="l00587"></a>00587       <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> SubStr1 = Str1.<a class="code" href="classllvm_1_1StringRef.html#a3d0712956e53687d1894ba17b84aeffa">substr</a>(0, Length);
+<a name="l00588"></a>00588       <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> SubStr2 = Str2.<a class="code" href="classllvm_1_1StringRef.html#a3d0712956e53687d1894ba17b84aeffa">substr</a>(0, Length);
+<a name="l00589"></a>00589       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(), SubStr1.<a class="code" href="classllvm_1_1StringRef.html#aaad2ceb595181c43b5969814345ab198">compare</a>(SubStr2));
+<a name="l00590"></a>00590     }
+<a name="l00591"></a>00591 
+<a name="l00592"></a>00592     <span class="keywordflow">if</span> (HasStr1 && Str1.empty())  <span class="comment">// strncmp("", x, n) -> -*x</span>
+<a name="l00593"></a>00593       <span class="keywordflow">return</span> B.<a class="code" href="classllvm_1_1IRBuilder.html#a97ab781fefa6f6ff35ce5c4c7dac3a79">CreateNeg</a>(B.<a class="code" href="classllvm_1_1IRBuilder.html#a277dfeaad2a2ada72a6024b0eedc5301">CreateZExt</a>(B.<a class="code" href="classllvm_1_1IRBuilder.html#af440b535b3b4e8d0d089dd0ed2283a0f">CreateLoad</a>(Str2P, <span class="stringliteral">"strcmpload"</span>),
+<a name="l00594"></a>00594                                       CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()));
+<a name="l00595"></a>00595 
+<a name="l00596"></a>00596     <span class="keywordflow">if</span> (HasStr2 && Str2.empty())  <span class="comment">// strncmp(x, "", n) -> *x</span>
+<a name="l00597"></a>00597       <span class="keywordflow">return</span> B.<a class="code" href="classllvm_1_1IRBuilder.html#a277dfeaad2a2ada72a6024b0eedc5301">CreateZExt</a>(B.<a class="code" href="classllvm_1_1IRBuilder.html#af440b535b3b4e8d0d089dd0ed2283a0f">CreateLoad</a>(Str1P, <span class="stringliteral">"strcmpload"</span>), CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>());
+<a name="l00598"></a>00598 
+<a name="l00599"></a>00599     <span class="keywordflow">return</span> 0;
+<a name="l00600"></a>00600   }
+<a name="l00601"></a>00601 };
+<a name="l00602"></a>00602 
+<a name="l00603"></a>00603 <span class="keyword">struct </span>StrCpyOpt : <span class="keyword">public</span> LibCallOptimization {
+<a name="l00604"></a>00604   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00605"></a>00605     <span class="comment">// Verify the "strcpy" function prototype.</span>
+<a name="l00606"></a>00606     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00607"></a>00607     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 2 ||
+<a name="l00608"></a>00608         FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) ||
+<a name="l00609"></a>00609         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1) ||
+<a name="l00610"></a>00610         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a7badbb741cd23e73ad063428c9cd5fea">getInt8PtrTy</a>())
+<a name="l00611"></a>00611       <span class="keywordflow">return</span> 0;
+<a name="l00612"></a>00612 
+<a name="l00613"></a>00613     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Dst = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), *Src = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1);
+<a name="l00614"></a>00614     <span class="keywordflow">if</span> (Dst == Src)      <span class="comment">// strcpy(x,x)  -> x</span>
+<a name="l00615"></a>00615       <span class="keywordflow">return</span> Src;
+<a name="l00616"></a>00616 
+<a name="l00617"></a>00617     <span class="comment">// These optimizations require DataLayout.</span>
+<a name="l00618"></a>00618     <span class="keywordflow">if</span> (!TD) <span class="keywordflow">return</span> 0;
+<a name="l00619"></a>00619 
+<a name="l00620"></a>00620     <span class="comment">// See if we can get the length of the input string.</span>
+<a name="l00621"></a>00621     uint64_t Len = <a class="code" href="namespacellvm.html#a6592393edcc944aa0fae70e18b5fbe0a">GetStringLength</a>(Src);
+<a name="l00622"></a>00622     <span class="keywordflow">if</span> (Len == 0) <span class="keywordflow">return</span> 0;
+<a name="l00623"></a>00623 
+<a name="l00624"></a>00624     <span class="comment">// We have enough information to now generate the memcpy call to do the</span>
+<a name="l00625"></a>00625     <span class="comment">// copy for us.  Make a memcpy to copy the nul byte with align = 1.</span>
+<a name="l00626"></a>00626     B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a849b50da820a274b4d001fbeadaf5cd7">CreateMemCpy</a>(Dst, Src,
+<a name="l00627"></a>00627        <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(TD->getIntPtrType(*Context), Len), 1);
+<a name="l00628"></a>00628     <span class="keywordflow">return</span> Dst;
+<a name="l00629"></a>00629   }
+<a name="l00630"></a>00630 };
+<a name="l00631"></a>00631 
+<a name="l00632"></a>00632 <span class="keyword">struct </span>StpCpyOpt: <span class="keyword">public</span> LibCallOptimization {
+<a name="l00633"></a>00633   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00634"></a>00634     <span class="comment">// Verify the "stpcpy" function prototype.</span>
+<a name="l00635"></a>00635     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00636"></a>00636     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 2 ||
+<a name="l00637"></a>00637         FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) ||
+<a name="l00638"></a>00638         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1) ||
+<a name="l00639"></a>00639         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a7badbb741cd23e73ad063428c9cd5fea">getInt8PtrTy</a>())
+<a name="l00640"></a>00640       <span class="keywordflow">return</span> 0;
+<a name="l00641"></a>00641 
+<a name="l00642"></a>00642     <span class="comment">// These optimizations require DataLayout.</span>
+<a name="l00643"></a>00643     <span class="keywordflow">if</span> (!TD) <span class="keywordflow">return</span> 0;
+<a name="l00644"></a>00644 
+<a name="l00645"></a>00645     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Dst = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), *Src = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1);
+<a name="l00646"></a>00646     <span class="keywordflow">if</span> (Dst == Src) {  <span class="comment">// stpcpy(x,x)  -> x+strlen(x)</span>
+<a name="l00647"></a>00647       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *StrLen = <a class="code" href="namespacellvm.html#aeb757469668c1dfea81273148ccdf0ab">EmitStrLen</a>(Src, B, TD, TLI);
+<a name="l00648"></a>00648       <span class="keywordflow">return</span> StrLen ? B.<a class="code" href="classllvm_1_1IRBuilder.html#a1f5e8b8d535e593299355288aa0cbd67">CreateInBoundsGEP</a>(Dst, StrLen) : 0;
+<a name="l00649"></a>00649     }
+<a name="l00650"></a>00650 
+<a name="l00651"></a>00651     <span class="comment">// See if we can get the length of the input string.</span>
+<a name="l00652"></a>00652     uint64_t Len = <a class="code" href="namespacellvm.html#a6592393edcc944aa0fae70e18b5fbe0a">GetStringLength</a>(Src);
+<a name="l00653"></a>00653     <span class="keywordflow">if</span> (Len == 0) <span class="keywordflow">return</span> 0;
+<a name="l00654"></a>00654 
+<a name="l00655"></a>00655     <a class="code" href="classllvm_1_1Type.html">Type</a> *PT = FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0);
+<a name="l00656"></a>00656     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *LenV = <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(TD->getIntPtrType(PT), Len);
+<a name="l00657"></a>00657     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *DstEnd = B.<a class="code" href="classllvm_1_1IRBuilder.html#ac46176b523c8a76a9ccdb5683279db94">CreateGEP</a>(Dst,
+<a name="l00658"></a>00658                                 <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(TD->getIntPtrType(PT),
+<a name="l00659"></a>00659                                                  Len - 1));
+<a name="l00660"></a>00660 
+<a name="l00661"></a>00661     <span class="comment">// We have enough information to now generate the memcpy call to do the</span>
+<a name="l00662"></a>00662     <span class="comment">// copy for us.  Make a memcpy to copy the nul byte with align = 1.</span>
+<a name="l00663"></a>00663     B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a849b50da820a274b4d001fbeadaf5cd7">CreateMemCpy</a>(Dst, Src, LenV, 1);
+<a name="l00664"></a>00664     <span class="keywordflow">return</span> DstEnd;
+<a name="l00665"></a>00665   }
+<a name="l00666"></a>00666 };
+<a name="l00667"></a>00667 
+<a name="l00668"></a>00668 <span class="keyword">struct </span>StrNCpyOpt : <span class="keyword">public</span> LibCallOptimization {
+<a name="l00669"></a>00669   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00670"></a>00670     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00671"></a>00671     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 3 || FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) ||
+<a name="l00672"></a>00672         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1) ||
+<a name="l00673"></a>00673         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a7badbb741cd23e73ad063428c9cd5fea">getInt8PtrTy</a>() ||
+<a name="l00674"></a>00674         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(2)-><a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">isIntegerTy</a>())
+<a name="l00675"></a>00675       <span class="keywordflow">return</span> 0;
+<a name="l00676"></a>00676 
+<a name="l00677"></a>00677     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Dst = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0);
+<a name="l00678"></a>00678     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Src = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1);
+<a name="l00679"></a>00679     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *LenOp = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(2);
+<a name="l00680"></a>00680 
+<a name="l00681"></a>00681     <span class="comment">// See if we can get the length of the input string.</span>
+<a name="l00682"></a>00682     uint64_t SrcLen = <a class="code" href="namespacellvm.html#a6592393edcc944aa0fae70e18b5fbe0a">GetStringLength</a>(Src);
+<a name="l00683"></a>00683     <span class="keywordflow">if</span> (SrcLen == 0) <span class="keywordflow">return</span> 0;
+<a name="l00684"></a>00684     --SrcLen;
+<a name="l00685"></a>00685 
+<a name="l00686"></a>00686     <span class="keywordflow">if</span> (SrcLen == 0) {
+<a name="l00687"></a>00687       <span class="comment">// strncpy(x, "", y) -> memset(x, '\0', y, 1)</span>
+<a name="l00688"></a>00688       B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a58f62481bd3a4bfc5d07102fe857741a">CreateMemSet</a>(Dst, B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a52caf9c563fee52b23e0ee4875c6248f" title="getInt8 - Get a constant 8-bit value.">getInt8</a>(<span class="charliteral">'\0'</span>), LenOp, 1);
+<a name="l00689"></a>00689       <span class="keywordflow">return</span> Dst;
+<a name="l00690"></a>00690     }
+<a name="l00691"></a>00691 
+<a name="l00692"></a>00692     uint64_t Len;
+<a name="l00693"></a>00693     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *LengthArg = dyn_cast<ConstantInt>(LenOp))
+<a name="l00694"></a>00694       Len = LengthArg->getZExtValue();
+<a name="l00695"></a>00695     <span class="keywordflow">else</span>
+<a name="l00696"></a>00696       <span class="keywordflow">return</span> 0;
+<a name="l00697"></a>00697 
+<a name="l00698"></a>00698     <span class="keywordflow">if</span> (Len == 0) <span class="keywordflow">return</span> Dst; <span class="comment">// strncpy(x, y, 0) -> x</span>
+<a name="l00699"></a>00699 
+<a name="l00700"></a>00700     <span class="comment">// These optimizations require DataLayout.</span>
+<a name="l00701"></a>00701     <span class="keywordflow">if</span> (!TD) <span class="keywordflow">return</span> 0;
+<a name="l00702"></a>00702 
+<a name="l00703"></a>00703     <span class="comment">// Let strncpy handle the zero padding</span>
+<a name="l00704"></a>00704     <span class="keywordflow">if</span> (Len > SrcLen+1) <span class="keywordflow">return</span> 0;
+<a name="l00705"></a>00705 
+<a name="l00706"></a>00706     <a class="code" href="classllvm_1_1Type.html">Type</a> *PT = FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0);
+<a name="l00707"></a>00707     <span class="comment">// strncpy(x, s, c) -> memcpy(x, s, c, 1) [s and c are constant]</span>
+<a name="l00708"></a>00708     B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a849b50da820a274b4d001fbeadaf5cd7">CreateMemCpy</a>(Dst, Src,
+<a name="l00709"></a>00709                    <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(TD->getIntPtrType(PT), Len), 1);
+<a name="l00710"></a>00710 
+<a name="l00711"></a>00711     <span class="keywordflow">return</span> Dst;
+<a name="l00712"></a>00712   }
+<a name="l00713"></a>00713 };
+<a name="l00714"></a>00714 
+<a name="l00715"></a>00715 <span class="keyword">struct </span>StrLenOpt : <span class="keyword">public</span> LibCallOptimization {
+<a name="l00716"></a>00716   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00717"></a>00717     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00718"></a>00718     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 1 ||
+<a name="l00719"></a>00719         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a7badbb741cd23e73ad063428c9cd5fea">getInt8PtrTy</a>() ||
+<a name="l00720"></a>00720         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>()-><a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">isIntegerTy</a>())
+<a name="l00721"></a>00721       <span class="keywordflow">return</span> 0;
+<a name="l00722"></a>00722 
+<a name="l00723"></a>00723     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Src = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0);
+<a name="l00724"></a>00724 
+<a name="l00725"></a>00725     <span class="comment">// Constant folding: strlen("xyz") -> 3</span>
+<a name="l00726"></a>00726     <span class="keywordflow">if</span> (uint64_t Len = <a class="code" href="namespacellvm.html#a6592393edcc944aa0fae70e18b5fbe0a">GetStringLength</a>(Src))
+<a name="l00727"></a>00727       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(), Len-1);
+<a name="l00728"></a>00728 
+<a name="l00729"></a>00729     <span class="comment">// strlen(x) != 0 --> *x != 0</span>
+<a name="l00730"></a>00730     <span class="comment">// strlen(x) == 0 --> *x == 0</span>
+<a name="l00731"></a>00731     <span class="keywordflow">if</span> (isOnlyUsedInZeroEqualityComparison(CI))
+<a name="l00732"></a>00732       <span class="keywordflow">return</span> B.<a class="code" href="classllvm_1_1IRBuilder.html#a277dfeaad2a2ada72a6024b0eedc5301">CreateZExt</a>(B.<a class="code" href="classllvm_1_1IRBuilder.html#af440b535b3b4e8d0d089dd0ed2283a0f">CreateLoad</a>(Src, <span class="stringliteral">"strlenfirst"</span>), CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>());
+<a name="l00733"></a>00733     <span class="keywordflow">return</span> 0;
+<a name="l00734"></a>00734   }
+<a name="l00735"></a>00735 };
+<a name="l00736"></a>00736 
+<a name="l00737"></a>00737 <span class="keyword">struct </span>StrPBrkOpt : <span class="keyword">public</span> LibCallOptimization {
+<a name="l00738"></a>00738   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00739"></a>00739     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00740"></a>00740     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 2 ||
+<a name="l00741"></a>00741         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a7badbb741cd23e73ad063428c9cd5fea">getInt8PtrTy</a>() ||
+<a name="l00742"></a>00742         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1) != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) ||
+<a name="l00743"></a>00743         FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0))
+<a name="l00744"></a>00744       <span class="keywordflow">return</span> 0;
+<a name="l00745"></a>00745 
+<a name="l00746"></a>00746     <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> S1, S2;
+<a name="l00747"></a>00747     <span class="keywordtype">bool</span> HasS1 = <a class="code" href="namespacellvm.html#a66d195fefcf9fab4b08703860991c14c">getConstantStringInfo</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), S1);
+<a name="l00748"></a>00748     <span class="keywordtype">bool</span> HasS2 = <a class="code" href="namespacellvm.html#a66d195fefcf9fab4b08703860991c14c">getConstantStringInfo</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1), S2);
+<a name="l00749"></a>00749 
+<a name="l00750"></a>00750     <span class="comment">// strpbrk(s, "") -> NULL</span>
+<a name="l00751"></a>00751     <span class="comment">// strpbrk("", s) -> NULL</span>
+<a name="l00752"></a>00752     <span class="keywordflow">if</span> ((HasS1 && S1.<a class="code" href="classllvm_1_1StringRef.html#ad7e292682516000f8b472f4510a2acf7" title="empty - Check if the string is empty.">empty</a>()) || (HasS2 && S2.<a class="code" href="classllvm_1_1StringRef.html#ad7e292682516000f8b472f4510a2acf7" title="empty - Check if the string is empty.">empty</a>()))
+<a name="l00753"></a>00753       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Constant.html#aa6574d526b3e38a28f688a7bb4325c2c">Constant::getNullValue</a>(CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>());
+<a name="l00754"></a>00754 
+<a name="l00755"></a>00755     <span class="comment">// Constant folding.</span>
+<a name="l00756"></a>00756     <span class="keywordflow">if</span> (HasS1 && HasS2) {
+<a name="l00757"></a>00757       <span class="keywordtype">size_t</span> I = S1.<a class="code" href="classllvm_1_1StringRef.html#a503b4cd4b1aa24494e6c0f8015e3f66a">find_first_of</a>(S2);
+<a name="l00758"></a>00758       <span class="keywordflow">if</span> (I == std::string::npos) <span class="comment">// No match.</span>
+<a name="l00759"></a>00759         <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Constant.html#aa6574d526b3e38a28f688a7bb4325c2c">Constant::getNullValue</a>(CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>());
+<a name="l00760"></a>00760 
+<a name="l00761"></a>00761       <span class="keywordflow">return</span> B.<a class="code" href="classllvm_1_1IRBuilder.html#ac46176b523c8a76a9ccdb5683279db94">CreateGEP</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a675da14f55ad277eae001b705c42be8b" title="getInt64 - Get a constant 64-bit value.">getInt64</a>(I), <span class="stringliteral">"strpbrk"</span>);
+<a name="l00762"></a>00762     }
+<a name="l00763"></a>00763 
+<a name="l00764"></a>00764     <span class="comment">// strpbrk(s, "a") -> strchr(s, 'a')</span>
+<a name="l00765"></a>00765     <span class="keywordflow">if</span> (TD && HasS2 && S2.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>() == 1)
+<a name="l00766"></a>00766       <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a10e9d29cf69cbc46524b855cac23b289">EmitStrChr</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), S2[0], B, TD, TLI);
+<a name="l00767"></a>00767 
+<a name="l00768"></a>00768     <span class="keywordflow">return</span> 0;
+<a name="l00769"></a>00769   }
+<a name="l00770"></a>00770 };
+<a name="l00771"></a>00771 
+<a name="l00772"></a>00772 <span class="keyword">struct </span>StrToOpt : <span class="keyword">public</span> LibCallOptimization {
+<a name="l00773"></a>00773   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00774"></a>00774     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00775"></a>00775     <span class="keywordflow">if</span> ((FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 2 && FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 3) ||
+<a name="l00776"></a>00776         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0)-><a class="code" href="classllvm_1_1Type.html#a2eba483f5cc876e824aa6c085736086b">isPointerTy</a>() ||
+<a name="l00777"></a>00777         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1)-><a class="code" href="classllvm_1_1Type.html#a2eba483f5cc876e824aa6c085736086b">isPointerTy</a>())
+<a name="l00778"></a>00778       <span class="keywordflow">return</span> 0;
+<a name="l00779"></a>00779 
+<a name="l00780"></a>00780     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *EndPtr = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1);
+<a name="l00781"></a>00781     <span class="keywordflow">if</span> (isa<ConstantPointerNull>(EndPtr)) {
+<a name="l00782"></a>00782       <span class="comment">// With a null EndPtr, this function won't capture the main argument.</span>
+<a name="l00783"></a>00783       <span class="comment">// It would be readonly too, except that it still may write to errno.</span>
+<a name="l00784"></a>00784       CI-><a class="code" href="classllvm_1_1CallInst.html#a7064e3d90c06146c08f591b1256ca402" title="addAttribute - adds the attribute to the list of attributes.">addAttribute</a>(1, <a class="code" href="classllvm_1_1Attributes.html#ad65c1e9ddb0cbc60da3fe67a0c695e32">Attributes::get</a>(Callee-><a class="code" href="classllvm_1_1Function.html#a2da53ac53516a3f16191f4c8a8eaa3e5">getContext</a>(),
+<a name="l00785"></a>00785                                           <a class="code" href="classllvm_1_1Attributes.html#a92f64dbb86772103c557c491dc1ebbe9a9ebf4b6258b4eab33518a06a955df920" title="Function creates no aliases of pointer.">Attributes::NoCapture</a>));
+<a name="l00786"></a>00786     }
+<a name="l00787"></a>00787 
+<a name="l00788"></a>00788     <span class="keywordflow">return</span> 0;
+<a name="l00789"></a>00789   }
+<a name="l00790"></a>00790 };
+<a name="l00791"></a>00791 
+<a name="l00792"></a>00792 <span class="keyword">struct </span>StrSpnOpt : <span class="keyword">public</span> LibCallOptimization {
+<a name="l00793"></a>00793   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00794"></a>00794     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00795"></a>00795     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 2 ||
+<a name="l00796"></a>00796         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a7badbb741cd23e73ad063428c9cd5fea">getInt8PtrTy</a>() ||
+<a name="l00797"></a>00797         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1) != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) ||
+<a name="l00798"></a>00798         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>()-><a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">isIntegerTy</a>())
+<a name="l00799"></a>00799       <span class="keywordflow">return</span> 0;
+<a name="l00800"></a>00800 
+<a name="l00801"></a>00801     <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> S1, S2;
+<a name="l00802"></a>00802     <span class="keywordtype">bool</span> HasS1 = <a class="code" href="namespacellvm.html#a66d195fefcf9fab4b08703860991c14c">getConstantStringInfo</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), S1);
+<a name="l00803"></a>00803     <span class="keywordtype">bool</span> HasS2 = <a class="code" href="namespacellvm.html#a66d195fefcf9fab4b08703860991c14c">getConstantStringInfo</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1), S2);
+<a name="l00804"></a>00804 
+<a name="l00805"></a>00805     <span class="comment">// strspn(s, "") -> 0</span>
+<a name="l00806"></a>00806     <span class="comment">// strspn("", s) -> 0</span>
+<a name="l00807"></a>00807     <span class="keywordflow">if</span> ((HasS1 && S1.<a class="code" href="classllvm_1_1StringRef.html#ad7e292682516000f8b472f4510a2acf7" title="empty - Check if the string is empty.">empty</a>()) || (HasS2 && S2.<a class="code" href="classllvm_1_1StringRef.html#ad7e292682516000f8b472f4510a2acf7" title="empty - Check if the string is empty.">empty</a>()))
+<a name="l00808"></a>00808       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Constant.html#aa6574d526b3e38a28f688a7bb4325c2c">Constant::getNullValue</a>(CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>());
+<a name="l00809"></a>00809 
+<a name="l00810"></a>00810     <span class="comment">// Constant folding.</span>
+<a name="l00811"></a>00811     <span class="keywordflow">if</span> (HasS1 && HasS2) {
+<a name="l00812"></a>00812       <span class="keywordtype">size_t</span> Pos = S1.<a class="code" href="classllvm_1_1StringRef.html#ace8a9dc13034dc6a31a5dea627190c88">find_first_not_of</a>(S2);
+<a name="l00813"></a>00813       <span class="keywordflow">if</span> (Pos == <a class="code" href="classllvm_1_1StringRef.html#a7414af479a1a88b0631120a4fc681e20">StringRef::npos</a>) Pos = S1.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>();
+<a name="l00814"></a>00814       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(), Pos);
+<a name="l00815"></a>00815     }
+<a name="l00816"></a>00816 
+<a name="l00817"></a>00817     <span class="keywordflow">return</span> 0;
+<a name="l00818"></a>00818   }
+<a name="l00819"></a>00819 };
+<a name="l00820"></a>00820 
+<a name="l00821"></a>00821 <span class="keyword">struct </span>StrCSpnOpt : <span class="keyword">public</span> LibCallOptimization {
+<a name="l00822"></a>00822   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00823"></a>00823     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00824"></a>00824     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 2 ||
+<a name="l00825"></a>00825         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) != B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a7badbb741cd23e73ad063428c9cd5fea">getInt8PtrTy</a>() ||
+<a name="l00826"></a>00826         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1) != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) ||
+<a name="l00827"></a>00827         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>()-><a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">isIntegerTy</a>())
+<a name="l00828"></a>00828       <span class="keywordflow">return</span> 0;
+<a name="l00829"></a>00829 
+<a name="l00830"></a>00830     <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> S1, S2;
+<a name="l00831"></a>00831     <span class="keywordtype">bool</span> HasS1 = <a class="code" href="namespacellvm.html#a66d195fefcf9fab4b08703860991c14c">getConstantStringInfo</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), S1);
+<a name="l00832"></a>00832     <span class="keywordtype">bool</span> HasS2 = <a class="code" href="namespacellvm.html#a66d195fefcf9fab4b08703860991c14c">getConstantStringInfo</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1), S2);
+<a name="l00833"></a>00833 
+<a name="l00834"></a>00834     <span class="comment">// strcspn("", s) -> 0</span>
+<a name="l00835"></a>00835     <span class="keywordflow">if</span> (HasS1 && S1.<a class="code" href="classllvm_1_1StringRef.html#ad7e292682516000f8b472f4510a2acf7" title="empty - Check if the string is empty.">empty</a>())
+<a name="l00836"></a>00836       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Constant.html#aa6574d526b3e38a28f688a7bb4325c2c">Constant::getNullValue</a>(CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>());
+<a name="l00837"></a>00837 
+<a name="l00838"></a>00838     <span class="comment">// Constant folding.</span>
+<a name="l00839"></a>00839     <span class="keywordflow">if</span> (HasS1 && HasS2) {
+<a name="l00840"></a>00840       <span class="keywordtype">size_t</span> Pos = S1.<a class="code" href="classllvm_1_1StringRef.html#a503b4cd4b1aa24494e6c0f8015e3f66a">find_first_of</a>(S2);
+<a name="l00841"></a>00841       <span class="keywordflow">if</span> (Pos == <a class="code" href="classllvm_1_1StringRef.html#a7414af479a1a88b0631120a4fc681e20">StringRef::npos</a>) Pos = S1.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>();
+<a name="l00842"></a>00842       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(), Pos);
+<a name="l00843"></a>00843     }
+<a name="l00844"></a>00844 
+<a name="l00845"></a>00845     <span class="comment">// strcspn(s, "") -> strlen(s)</span>
+<a name="l00846"></a>00846     <span class="keywordflow">if</span> (TD && HasS2 && S2.<a class="code" href="classllvm_1_1StringRef.html#ad7e292682516000f8b472f4510a2acf7" title="empty - Check if the string is empty.">empty</a>())
+<a name="l00847"></a>00847       <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#aeb757469668c1dfea81273148ccdf0ab">EmitStrLen</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), B, TD, TLI);
+<a name="l00848"></a>00848 
+<a name="l00849"></a>00849     <span class="keywordflow">return</span> 0;
+<a name="l00850"></a>00850   }
+<a name="l00851"></a>00851 };
+<a name="l00852"></a>00852 
+<a name="l00853"></a>00853 <span class="keyword">struct </span>StrStrOpt : <span class="keyword">public</span> LibCallOptimization {
+<a name="l00854"></a>00854   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00855"></a>00855     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00856"></a>00856     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 2 ||
+<a name="l00857"></a>00857         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0)-><a class="code" href="classllvm_1_1Type.html#a2eba483f5cc876e824aa6c085736086b">isPointerTy</a>() ||
+<a name="l00858"></a>00858         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1)-><a class="code" href="classllvm_1_1Type.html#a2eba483f5cc876e824aa6c085736086b">isPointerTy</a>() ||
+<a name="l00859"></a>00859         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>()-><a class="code" href="classllvm_1_1Type.html#a2eba483f5cc876e824aa6c085736086b">isPointerTy</a>())
+<a name="l00860"></a>00860       <span class="keywordflow">return</span> 0;
+<a name="l00861"></a>00861 
+<a name="l00862"></a>00862     <span class="comment">// fold strstr(x, x) -> x.</span>
+<a name="l00863"></a>00863     <span class="keywordflow">if</span> (CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0) == CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1))
+<a name="l00864"></a>00864       <span class="keywordflow">return</span> B.<a class="code" href="classllvm_1_1IRBuilder.html#a87b363b9dad9f5040ea7e29ea9e60ff5">CreateBitCast</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>());
+<a name="l00865"></a>00865 
+<a name="l00866"></a>00866     <span class="comment">// fold strstr(a, b) == a -> strncmp(a, b, strlen(b)) == 0</span>
+<a name="l00867"></a>00867     <span class="keywordflow">if</span> (TD && isOnlyUsedInEqualityComparison(CI, CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0))) {
+<a name="l00868"></a>00868       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *StrLen = <a class="code" href="namespacellvm.html#aeb757469668c1dfea81273148ccdf0ab">EmitStrLen</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1), B, TD, TLI);
+<a name="l00869"></a>00869       <span class="keywordflow">if</span> (!StrLen)
+<a name="l00870"></a>00870         <span class="keywordflow">return</span> 0;
+<a name="l00871"></a>00871       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *StrNCmp = <a class="code" href="namespacellvm.html#a85870830b10065892c3b0355fc25a377" title="EmitStrNCmp - Emit a call to the strncmp function to the builder.">EmitStrNCmp</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1),
+<a name="l00872"></a>00872                                    StrLen, B, TD, TLI);
+<a name="l00873"></a>00873       <span class="keywordflow">if</span> (!StrNCmp)
+<a name="l00874"></a>00874         <span class="keywordflow">return</span> 0;
+<a name="l00875"></a>00875       <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1value__use__iterator.html">Value::use_iterator</a> UI = CI-><a class="code" href="classllvm_1_1Value.html#a413abcab8dbc3900fc2fde96a5d8fca6">use_begin</a>(), UE = CI-><a class="code" href="classllvm_1_1Value.html#ad86469939d2a8bdd4169be9403b89f5a">use_end</a>();
+<a name="l00876"></a>00876            UI != UE; ) {
+<a name="l00877"></a>00877         <a class="code" href="classllvm_1_1ICmpInst.html" title="Represent an integer comparison operator.">ICmpInst</a> *Old = cast<ICmpInst>(*UI++);
+<a name="l00878"></a>00878         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Cmp = B.CreateICmp(Old-><a class="code" href="classllvm_1_1CmpInst.html#a8afd4995fae596b2c86eeed85b3d388b" title="Return the predicate for this instruction.">getPredicate</a>(), StrNCmp,
+<a name="l00879"></a>00879                                   <a class="code" href="classllvm_1_1Constant.html#aa6574d526b3e38a28f688a7bb4325c2c">ConstantInt::getNullValue</a>(StrNCmp-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()),
+<a name="l00880"></a>00880                                   <span class="stringliteral">"cmp"</span>);
+<a name="l00881"></a>00881         LCS-><a class="code" href="classllvm_1_1LibCallSimplifier.html#a420c81fa4216737eabfbf384b4eab31d">replaceAllUsesWith</a>(Old, Cmp);
+<a name="l00882"></a>00882       }
+<a name="l00883"></a>00883       <span class="keywordflow">return</span> CI;
+<a name="l00884"></a>00884     }
+<a name="l00885"></a>00885 
+<a name="l00886"></a>00886     <span class="comment">// See if either input string is a constant string.</span>
+<a name="l00887"></a>00887     <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> SearchStr, ToFindStr;
+<a name="l00888"></a>00888     <span class="keywordtype">bool</span> HasStr1 = <a class="code" href="namespacellvm.html#a66d195fefcf9fab4b08703860991c14c">getConstantStringInfo</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), SearchStr);
+<a name="l00889"></a>00889     <span class="keywordtype">bool</span> HasStr2 = <a class="code" href="namespacellvm.html#a66d195fefcf9fab4b08703860991c14c">getConstantStringInfo</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1), ToFindStr);
+<a name="l00890"></a>00890 
+<a name="l00891"></a>00891     <span class="comment">// fold strstr(x, "") -> x.</span>
+<a name="l00892"></a>00892     <span class="keywordflow">if</span> (HasStr2 && ToFindStr.<a class="code" href="classllvm_1_1StringRef.html#ad7e292682516000f8b472f4510a2acf7" title="empty - Check if the string is empty.">empty</a>())
+<a name="l00893"></a>00893       <span class="keywordflow">return</span> B.CreateBitCast(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>());
+<a name="l00894"></a>00894 
+<a name="l00895"></a>00895     <span class="comment">// If both strings are known, constant fold it.</span>
+<a name="l00896"></a>00896     <span class="keywordflow">if</span> (HasStr1 && HasStr2) {
+<a name="l00897"></a>00897       std::string::size_type Offset = SearchStr.<a class="code" href="classllvm_1_1StringRef.html#a421e16456fe6d7b71fb4af736194165c">find</a>(ToFindStr);
+<a name="l00898"></a>00898 
+<a name="l00899"></a>00899       <span class="keywordflow">if</span> (Offset == <a class="code" href="classllvm_1_1StringRef.html#a7414af479a1a88b0631120a4fc681e20">StringRef::npos</a>) <span class="comment">// strstr("foo", "bar") -> null</span>
+<a name="l00900"></a>00900         <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Constant.html#aa6574d526b3e38a28f688a7bb4325c2c">Constant::getNullValue</a>(CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>());
+<a name="l00901"></a>00901 
+<a name="l00902"></a>00902       <span class="comment">// strstr("abcd", "bc") -> gep((char*)"abcd", 1)</span>
+<a name="l00903"></a>00903       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Result = <a class="code" href="namespacellvm.html#ac63e6fb194823d8e130f27312a749e1c" title="CastToCStr - Return V if it is an i8*, otherwise cast it to i8*.">CastToCStr</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), B);
+<a name="l00904"></a>00904       Result = B.CreateConstInBoundsGEP1_64(Result, Offset, <span class="stringliteral">"strstr"</span>);
+<a name="l00905"></a>00905       <span class="keywordflow">return</span> B.CreateBitCast(Result, CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>());
+<a name="l00906"></a>00906     }
+<a name="l00907"></a>00907 
+<a name="l00908"></a>00908     <span class="comment">// fold strstr(x, "y") -> strchr(x, 'y').</span>
+<a name="l00909"></a>00909     <span class="keywordflow">if</span> (HasStr2 && ToFindStr.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>() == 1) {
+<a name="l00910"></a>00910       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *StrChr= <a class="code" href="namespacellvm.html#a10e9d29cf69cbc46524b855cac23b289">EmitStrChr</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), ToFindStr[0], B, TD, TLI);
+<a name="l00911"></a>00911       <span class="keywordflow">return</span> StrChr ? B.CreateBitCast(StrChr, CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()) : 0;
+<a name="l00912"></a>00912     }
+<a name="l00913"></a>00913     <span class="keywordflow">return</span> 0;
+<a name="l00914"></a>00914   }
+<a name="l00915"></a>00915 };
+<a name="l00916"></a>00916 
+<a name="l00917"></a>00917 <span class="keyword">struct </span>MemCmpOpt : <span class="keyword">public</span> LibCallOptimization {
+<a name="l00918"></a>00918   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00919"></a>00919     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00920"></a>00920     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 3 || !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0)-><a class="code" href="classllvm_1_1Type.html#a2eba483f5cc876e824aa6c085736086b">isPointerTy</a>() ||
+<a name="l00921"></a>00921         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1)-><a class="code" href="classllvm_1_1Type.html#a2eba483f5cc876e824aa6c085736086b">isPointerTy</a>() ||
+<a name="l00922"></a>00922         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>()-><a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">isIntegerTy</a>(32))
+<a name="l00923"></a>00923       <span class="keywordflow">return</span> 0;
+<a name="l00924"></a>00924 
+<a name="l00925"></a>00925     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *LHS = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), *RHS = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1);
+<a name="l00926"></a>00926 
+<a name="l00927"></a>00927     <span class="keywordflow">if</span> (LHS == RHS)  <span class="comment">// memcmp(s,s,x) -> 0</span>
+<a name="l00928"></a>00928       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Constant.html#aa6574d526b3e38a28f688a7bb4325c2c">Constant::getNullValue</a>(CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>());
+<a name="l00929"></a>00929 
+<a name="l00930"></a>00930     <span class="comment">// Make sure we have a constant length.</span>
+<a name="l00931"></a>00931     <a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *LenC = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a>>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(2));
+<a name="l00932"></a>00932     <span class="keywordflow">if</span> (!LenC) <span class="keywordflow">return</span> 0;
+<a name="l00933"></a>00933     uint64_t Len = LenC-><a class="code" href="classllvm_1_1ConstantInt.html#a6edd823ba5e4e1effc8280ca8a1194ef" title="Return the zero extended value.">getZExtValue</a>();
+<a name="l00934"></a>00934 
+<a name="l00935"></a>00935     <span class="keywordflow">if</span> (Len == 0) <span class="comment">// memcmp(s1,s2,0) -> 0</span>
+<a name="l00936"></a>00936       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Constant.html#aa6574d526b3e38a28f688a7bb4325c2c">Constant::getNullValue</a>(CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>());
+<a name="l00937"></a>00937 
+<a name="l00938"></a>00938     <span class="comment">// memcmp(S1,S2,1) -> *(unsigned char*)LHS - *(unsigned char*)RHS</span>
+<a name="l00939"></a>00939     <span class="keywordflow">if</span> (Len == 1) {
+<a name="l00940"></a>00940       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *LHSV = B.<a class="code" href="classllvm_1_1IRBuilder.html#a277dfeaad2a2ada72a6024b0eedc5301">CreateZExt</a>(B.<a class="code" href="classllvm_1_1IRBuilder.html#af440b535b3b4e8d0d089dd0ed2283a0f">CreateLoad</a>(<a class="code" href="namespacellvm.html#ac63e6fb194823d8e130f27312a749e1c" title="CastToCStr - Return V if it is an i8*, otherwise cast it to i8*.">CastToCStr</a>(LHS, B), <span class="stringliteral">"lhsc"</span>),
+<a name="l00941"></a>00941                                  CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(), <span class="stringliteral">"lhsv"</span>);
+<a name="l00942"></a>00942       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *RHSV = B.<a class="code" href="classllvm_1_1IRBuilder.html#a277dfeaad2a2ada72a6024b0eedc5301">CreateZExt</a>(B.<a class="code" href="classllvm_1_1IRBuilder.html#af440b535b3b4e8d0d089dd0ed2283a0f">CreateLoad</a>(<a class="code" href="namespacellvm.html#ac63e6fb194823d8e130f27312a749e1c" title="CastToCStr - Return V if it is an i8*, otherwise cast it to i8*.">CastToCStr</a>(RHS, B), <span class="stringliteral">"rhsc"</span>),
+<a name="l00943"></a>00943                                  CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(), <span class="stringliteral">"rhsv"</span>);
+<a name="l00944"></a>00944       <span class="keywordflow">return</span> B.<a class="code" href="classllvm_1_1IRBuilder.html#afa1cb82e021c7f516f65d40162fe6c53">CreateSub</a>(LHSV, RHSV, <span class="stringliteral">"chardiff"</span>);
+<a name="l00945"></a>00945     }
+<a name="l00946"></a>00946 
+<a name="l00947"></a>00947     <span class="comment">// Constant folding: memcmp(x, y, l) -> cnst (all arguments are constant)</span>
+<a name="l00948"></a>00948     <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> LHSStr, RHSStr;
+<a name="l00949"></a>00949     <span class="keywordflow">if</span> (<a class="code" href="namespacellvm.html#a66d195fefcf9fab4b08703860991c14c">getConstantStringInfo</a>(LHS, LHSStr) &&
+<a name="l00950"></a>00950         <a class="code" href="namespacellvm.html#a66d195fefcf9fab4b08703860991c14c">getConstantStringInfo</a>(RHS, RHSStr)) {
+<a name="l00951"></a>00951       <span class="comment">// Make sure we're not reading out-of-bounds memory.</span>
+<a name="l00952"></a>00952       <span class="keywordflow">if</span> (Len > LHSStr.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>() || Len > RHSStr.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>())
+<a name="l00953"></a>00953         <span class="keywordflow">return</span> 0;
+<a name="l00954"></a>00954       uint64_t Ret = <a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa3ac509b06abcd9a75f6676d6a65b0251" title="int memcmp(const void *s1, const void *s2, size_t n);">memcmp</a>(LHSStr.<a class="code" href="classllvm_1_1StringRef.html#a7d9b88d042ae1da8afd5509875c90a04">data</a>(), RHSStr.<a class="code" href="classllvm_1_1StringRef.html#a7d9b88d042ae1da8afd5509875c90a04">data</a>(), Len);
+<a name="l00955"></a>00955       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(), <a class="code" href="namespacellvm_1_1MBlazeISD.html#a4cbef502356ec86269d324dc7be5cbf7a4e52b775450b88b95f31bae9c160fe01">Ret</a>);
+<a name="l00956"></a>00956     }
+<a name="l00957"></a>00957 
+<a name="l00958"></a>00958     <span class="keywordflow">return</span> 0;
+<a name="l00959"></a>00959   }
+<a name="l00960"></a>00960 };
+<a name="l00961"></a>00961 
+<a name="l00962"></a>00962 <span class="keyword">struct </span>MemCpyOpt : <span class="keyword">public</span> LibCallOptimization {
+<a name="l00963"></a>00963   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00964"></a>00964     <span class="comment">// These optimizations require DataLayout.</span>
+<a name="l00965"></a>00965     <span class="keywordflow">if</span> (!TD) <span class="keywordflow">return</span> 0;
+<a name="l00966"></a>00966 
+<a name="l00967"></a>00967     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00968"></a>00968     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 3 || FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) ||
+<a name="l00969"></a>00969         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0)-><a class="code" href="classllvm_1_1Type.html#a2eba483f5cc876e824aa6c085736086b">isPointerTy</a>() ||
+<a name="l00970"></a>00970         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1)-><a class="code" href="classllvm_1_1Type.html#a2eba483f5cc876e824aa6c085736086b">isPointerTy</a>() ||
+<a name="l00971"></a>00971         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(2) != TD->getIntPtrType(*Context))
+<a name="l00972"></a>00972       <span class="keywordflow">return</span> 0;
+<a name="l00973"></a>00973 
+<a name="l00974"></a>00974     <span class="comment">// memcpy(x, y, n) -> llvm.memcpy(x, y, n, 1)</span>
+<a name="l00975"></a>00975     B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a849b50da820a274b4d001fbeadaf5cd7">CreateMemCpy</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1),
+<a name="l00976"></a>00976                    CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(2), 1);
+<a name="l00977"></a>00977     <span class="keywordflow">return</span> CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0);
+<a name="l00978"></a>00978   }
+<a name="l00979"></a>00979 };
+<a name="l00980"></a>00980 
+<a name="l00981"></a>00981 <span class="keyword">struct </span>MemMoveOpt : <span class="keyword">public</span> LibCallOptimization {
+<a name="l00982"></a>00982   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l00983"></a>00983     <span class="comment">// These optimizations require DataLayout.</span>
+<a name="l00984"></a>00984     <span class="keywordflow">if</span> (!TD) <span class="keywordflow">return</span> 0;
+<a name="l00985"></a>00985 
+<a name="l00986"></a>00986     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l00987"></a>00987     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 3 || FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) ||
+<a name="l00988"></a>00988         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0)-><a class="code" href="classllvm_1_1Type.html#a2eba483f5cc876e824aa6c085736086b">isPointerTy</a>() ||
+<a name="l00989"></a>00989         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1)-><a class="code" href="classllvm_1_1Type.html#a2eba483f5cc876e824aa6c085736086b">isPointerTy</a>() ||
+<a name="l00990"></a>00990         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(2) != TD->getIntPtrType(*Context))
+<a name="l00991"></a>00991       <span class="keywordflow">return</span> 0;
+<a name="l00992"></a>00992 
+<a name="l00993"></a>00993     <span class="comment">// memmove(x, y, n) -> llvm.memmove(x, y, n, 1)</span>
+<a name="l00994"></a>00994     B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a248295120710baf72dbbd3a862c840e4">CreateMemMove</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1),
+<a name="l00995"></a>00995                     CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(2), 1);
+<a name="l00996"></a>00996     <span class="keywordflow">return</span> CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0);
+<a name="l00997"></a>00997   }
+<a name="l00998"></a>00998 };
+<a name="l00999"></a>00999 
+<a name="l01000"></a>01000 <span class="keyword">struct </span>MemSetOpt : <span class="keyword">public</span> LibCallOptimization {
+<a name="l01001"></a>01001   <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *callOptimizer(<a class="code" href="classllvm_1_1Function.html">Function</a> *Callee, <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI, <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> &B) {
+<a name="l01002"></a>01002     <span class="comment">// These optimizations require DataLayout.</span>
+<a name="l01003"></a>01003     <span class="keywordflow">if</span> (!TD) <span class="keywordflow">return</span> 0;
+<a name="l01004"></a>01004 
+<a name="l01005"></a>01005     <a class="code" href="classllvm_1_1FunctionType.html">FunctionType</a> *FT = Callee-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>();
+<a name="l01006"></a>01006     <span class="keywordflow">if</span> (FT-><a class="code" href="classllvm_1_1FunctionType.html#a97cf043af111c14bb4d03a99cf42af03">getNumParams</a>() != 3 || FT-><a class="code" href="classllvm_1_1FunctionType.html#a9eda832d6e80bc19b98f22f4ec714e3f">getReturnType</a>() != FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0) ||
+<a name="l01007"></a>01007         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(0)-><a class="code" href="classllvm_1_1Type.html#a2eba483f5cc876e824aa6c085736086b">isPointerTy</a>() ||
+<a name="l01008"></a>01008         !FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(1)-><a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">isIntegerTy</a>() ||
+<a name="l01009"></a>01009         FT-><a class="code" href="classllvm_1_1FunctionType.html#a176b84b12bc19326444728c6404dd068">getParamType</a>(2) != TD->getIntPtrType(*Context))
+<a name="l01010"></a>01010       <span class="keywordflow">return</span> 0;
+<a name="l01011"></a>01011 
+<a name="l01012"></a>01012     <span class="comment">// memset(p, v, n) -> llvm.memset(p, v, n, 1)</span>
+<a name="l01013"></a>01013     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Val = B.<a class="code" href="classllvm_1_1IRBuilder.html#afdd8a08bfcbd94f60d166a71a3e79ff3">CreateIntCast</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(1), B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a7a71da01c646618b7f43d303d563b41b" title="getInt8Ty - Fetch the type representing an 8-bit integer.">getInt8Ty</a>(), <span class="keyword">false</span>);
+<a name="l01014"></a>01014     B.<a class="code" href="classllvm_1_1IRBuilderBase.html#a58f62481bd3a4bfc5d07102fe857741a">CreateMemSet</a>(CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0), Val, CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(2), 1);
+<a name="l01015"></a>01015     <span class="keywordflow">return</span> CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0);
+<a name="l01016"></a>01016   }
+<a name="l01017"></a>01017 };
+<a name="l01018"></a>01018 
+<a name="l01019"></a>01019 } <span class="comment">// End anonymous namespace.</span>
+<a name="l01020"></a>01020 
+<a name="l01021"></a>01021 <span class="keyword">namespace </span>llvm {
+<a name="l01022"></a>01022 
+<a name="l01023"></a><a class="code" href="classllvm_1_1LibCallSimplifierImpl.html">01023</a> <span class="keyword">class </span><a class="code" href="classllvm_1_1LibCallSimplifierImpl.html">LibCallSimplifierImpl</a> {
+<a name="l01024"></a>01024   <span class="keyword">const</span> <a class="code" href="classllvm_1_1DataLayout.html">DataLayout</a> *TD;
+<a name="l01025"></a>01025   <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetLibraryInfo.html">TargetLibraryInfo</a> *TLI;
+<a name="l01026"></a>01026   <span class="keyword">const</span> <a class="code" href="classllvm_1_1LibCallSimplifier.html">LibCallSimplifier</a> *LCS;
+<a name="l01027"></a>01027   <a class="code" href="classllvm_1_1StringMap.html">StringMap<LibCallOptimization*></a> <a class="code" href="PeepholeOptimizer_8cpp.html#a1fb65ab4a5af536c4f505d182f39c695">Optimizations</a>;
+<a name="l01028"></a>01028 
+<a name="l01029"></a>01029   <span class="comment">// Fortified library call optimizations.</span>
+<a name="l01030"></a>01030   MemCpyChkOpt MemCpyChk;
+<a name="l01031"></a>01031   MemMoveChkOpt MemMoveChk;
+<a name="l01032"></a>01032   MemSetChkOpt MemSetChk;
+<a name="l01033"></a>01033   StrCpyChkOpt StrCpyChk;
+<a name="l01034"></a>01034   StpCpyChkOpt StpCpyChk;
+<a name="l01035"></a>01035   StrNCpyChkOpt StrNCpyChk;
+<a name="l01036"></a>01036 
+<a name="l01037"></a>01037   <span class="comment">// String library call optimizations.</span>
+<a name="l01038"></a>01038   StrCatOpt StrCat;
+<a name="l01039"></a>01039   StrNCatOpt StrNCat;
+<a name="l01040"></a>01040   StrChrOpt StrChr;
+<a name="l01041"></a>01041   StrRChrOpt StrRChr;
+<a name="l01042"></a>01042   StrCmpOpt StrCmp;
+<a name="l01043"></a>01043   StrNCmpOpt StrNCmp;
+<a name="l01044"></a>01044   StrCpyOpt StrCpy;
+<a name="l01045"></a>01045   StpCpyOpt StpCpy;
+<a name="l01046"></a>01046   StrNCpyOpt StrNCpy;
+<a name="l01047"></a>01047   StrLenOpt StrLen;
+<a name="l01048"></a>01048   StrPBrkOpt StrPBrk;
+<a name="l01049"></a>01049   StrToOpt StrTo;
+<a name="l01050"></a>01050   StrSpnOpt StrSpn;
+<a name="l01051"></a>01051   StrCSpnOpt StrCSpn;
+<a name="l01052"></a>01052   StrStrOpt StrStr;
+<a name="l01053"></a>01053 
+<a name="l01054"></a>01054   <span class="comment">// Memory library call optimizations.</span>
+<a name="l01055"></a>01055   MemCmpOpt MemCmp;
+<a name="l01056"></a>01056   MemCpyOpt MemCpy;
+<a name="l01057"></a>01057   MemMoveOpt MemMove;
+<a name="l01058"></a>01058   MemSetOpt MemSet;
+<a name="l01059"></a>01059 
+<a name="l01060"></a>01060   <span class="keywordtype">void</span> initOptimizations();
+<a name="l01061"></a>01061   <span class="keywordtype">void</span> addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6f">LibFunc::Func</a> <a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>, LibCallOptimization* Opt);
+<a name="l01062"></a>01062 <span class="keyword">public</span>:
+<a name="l01063"></a><a class="code" href="classllvm_1_1LibCallSimplifierImpl.html#a467569c4587980bc3c0153e99ec66ce5">01063</a>   <a class="code" href="classllvm_1_1LibCallSimplifierImpl.html">LibCallSimplifierImpl</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1DataLayout.html">DataLayout</a> *TD, <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetLibraryInfo.html">TargetLibraryInfo</a> *TLI,
+<a name="l01064"></a>01064                         <span class="keyword">const</span> <a class="code" href="classllvm_1_1LibCallSimplifier.html">LibCallSimplifier</a> *LCS) {
+<a name="l01065"></a>01065     this->TD = TD;
+<a name="l01066"></a>01066     this->TLI = TLI;
+<a name="l01067"></a>01067     this->LCS = LCS;
+<a name="l01068"></a>01068   }
+<a name="l01069"></a>01069 
+<a name="l01070"></a>01070   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *optimizeCall(<a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI);
+<a name="l01071"></a>01071 };
+<a name="l01072"></a>01072 
+<a name="l01073"></a>01073 <span class="keywordtype">void</span> LibCallSimplifierImpl::initOptimizations() {
+<a name="l01074"></a>01074   <span class="comment">// Fortified library call optimizations.</span>
+<a name="l01075"></a>01075   <a class="code" href="PeepholeOptimizer_8cpp.html#a1fb65ab4a5af536c4f505d182f39c695">Optimizations</a>[<span class="stringliteral">"__memcpy_chk"</span>] = &MemCpyChk;
+<a name="l01076"></a>01076   <a class="code" href="PeepholeOptimizer_8cpp.html#a1fb65ab4a5af536c4f505d182f39c695">Optimizations</a>[<span class="stringliteral">"__memmove_chk"</span>] = &MemMoveChk;
+<a name="l01077"></a>01077   <a class="code" href="PeepholeOptimizer_8cpp.html#a1fb65ab4a5af536c4f505d182f39c695">Optimizations</a>[<span class="stringliteral">"__memset_chk"</span>] = &MemSetChk;
+<a name="l01078"></a>01078   <a class="code" href="PeepholeOptimizer_8cpp.html#a1fb65ab4a5af536c4f505d182f39c695">Optimizations</a>[<span class="stringliteral">"__strcpy_chk"</span>] = &StrCpyChk;
+<a name="l01079"></a>01079   <a class="code" href="PeepholeOptimizer_8cpp.html#a1fb65ab4a5af536c4f505d182f39c695">Optimizations</a>[<span class="stringliteral">"__stpcpy_chk"</span>] = &StpCpyChk;
+<a name="l01080"></a>01080   <a class="code" href="PeepholeOptimizer_8cpp.html#a1fb65ab4a5af536c4f505d182f39c695">Optimizations</a>[<span class="stringliteral">"__strncpy_chk"</span>] = &StrNCpyChk;
+<a name="l01081"></a>01081   <a class="code" href="PeepholeOptimizer_8cpp.html#a1fb65ab4a5af536c4f505d182f39c695">Optimizations</a>[<span class="stringliteral">"__stpncpy_chk"</span>] = &StrNCpyChk;
+<a name="l01082"></a>01082 
+<a name="l01083"></a>01083   <span class="comment">// String library call optimizations.</span>
+<a name="l01084"></a>01084   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6faf46a9a65ff8ff48a87f575fe056fcec1" title="char *strcat(char *s1, const char *s2);">LibFunc::strcat</a>, &StrCat);
+<a name="l01085"></a>01085   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6faaf7f323cc371044c729cb295eaea743b" title="char *strncat(char *s1, const char *s2, size_t n);">LibFunc::strncat</a>, &StrNCat);
+<a name="l01086"></a>01086   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fade48d0dc69a747ba01fc3c12f01653cd" title="char *strchr(const char *s, int c);">LibFunc::strchr</a>, &StrChr);
+<a name="l01087"></a>01087   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6faee70aeb2c7b735c7e2a93944659ead9b" title="char *strrchr(const char *s, int c);">LibFunc::strrchr</a>, &StrRChr);
+<a name="l01088"></a>01088   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa8574b01ba1bbc031cb5dd73572783e94" title="int strcmp(const char *s1, const char *s2);">LibFunc::strcmp</a>, &StrCmp);
+<a name="l01089"></a>01089   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fac655d7183272e27b95516887e3f24702" title="int strncmp(const char *s1, const char *s2, size_t n);">LibFunc::strncmp</a>, &StrNCmp);
+<a name="l01090"></a>01090   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa9359403a52c2d2696ad24d7c0045ee81" title="char *strcpy(char *s1, const char *s2);">LibFunc::strcpy</a>, &StrCpy);
+<a name="l01091"></a>01091   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa6e9f2317a7900e39381b5138320278f6" title="char *stpcpy(char *s1, const char *s2);">LibFunc::stpcpy</a>, &StpCpy);
+<a name="l01092"></a>01092   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa3880572b66ab5faef56c79335acdcc0e" title="char *strncpy(char *s1, const char *s2, size_t n);">LibFunc::strncpy</a>, &StrNCpy);
+<a name="l01093"></a>01093   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa0b976adf6aef24ee68598686784f3d66" title="size_t strlen(const char *s);">LibFunc::strlen</a>, &StrLen);
+<a name="l01094"></a>01094   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa7172501859424081873c331c7ca23189" title="char *strpbrk(const char *s1, const char *s2);">LibFunc::strpbrk</a>, &StrPBrk);
+<a name="l01095"></a>01095   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa2022ce5a2e7608261db877aa721e775d" title="long int strtol(const char *nptr, char **endptr, int base);">LibFunc::strtol</a>, &StrTo);
+<a name="l01096"></a>01096   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa7d1e83ebe72db5ad7c189b5434562030" title="double strtod(const char *nptr, char **endptr);">LibFunc::strtod</a>, &StrTo);
+<a name="l01097"></a>01097   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa5e8bd9d6b203267801b4f016c9b01436" title="float strtof(const char *nptr, char **endptr);">LibFunc::strtof</a>, &StrTo);
+<a name="l01098"></a>01098   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa4e93efe839b2321386ee08b553eb821b" title="unsigned long int strtoul(const char *nptr, char **endptr, int base);">LibFunc::strtoul</a>, &StrTo);
+<a name="l01099"></a>01099   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa0257b83e8fec15243ce44446b98a3159" title="long long int strtoll(const char *nptr, char **endptr, int base);">LibFunc::strtoll</a>, &StrTo);
+<a name="l01100"></a>01100   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fad66cc3d6beae7a9ea1ae025d586114ea" title="long double strtold(const char *nptr, char **endptr);">LibFunc::strtold</a>, &StrTo);
+<a name="l01101"></a>01101   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa2a81239703d025e7504c36158df85bb2">LibFunc::strtoull</a>, &StrTo);
+<a name="l01102"></a>01102   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa418e4acf5b7683561af9f1a77ca44fa7" title="size_t strspn(const char *s1, const char *s2);">LibFunc::strspn</a>, &StrSpn);
+<a name="l01103"></a>01103   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa9af5bb475a799bf459affaf6aa69a1d4" title="size_t strcspn(const char *s1, const char *s2);">LibFunc::strcspn</a>, &StrCSpn);
+<a name="l01104"></a>01104   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa387c780d9bcac7dade149925a20812d4" title="char *strstr(const char *s1, const char *s2);">LibFunc::strstr</a>, &StrStr);
+<a name="l01105"></a>01105 
+<a name="l01106"></a>01106   <span class="comment">// Memory library call optimizations.</span>
+<a name="l01107"></a>01107   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa3ac509b06abcd9a75f6676d6a65b0251" title="int memcmp(const void *s1, const void *s2, size_t n);">LibFunc::memcmp</a>, &MemCmp);
+<a name="l01108"></a>01108   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fad5203242bc89eaa644dc7b7ba2371c1d" title="void *memcpy(void *s1, const void *s2, size_t n);">LibFunc::memcpy</a>, &MemCpy);
+<a name="l01109"></a>01109   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa9e02525b88a00a1d0e8dcded032acbee" title="void *memmove(void *s1, const void *s2, size_t n);">LibFunc::memmove</a>, &MemMove);
+<a name="l01110"></a>01110   addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa9f7f1b6be1144152902121f2463d0368" title="void *memset(void *b, int c, size_t len);">LibFunc::memset</a>, &MemSet);
+<a name="l01111"></a>01111 }
+<a name="l01112"></a>01112 
+<a name="l01113"></a><a class="code" href="classllvm_1_1LibCallSimplifierImpl.html#a1ac07b375522fc6aceb15ffe3c9b5281">01113</a> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *<a class="code" href="classllvm_1_1LibCallSimplifierImpl.html#a1ac07b375522fc6aceb15ffe3c9b5281">LibCallSimplifierImpl::optimizeCall</a>(<a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI) {
+<a name="l01114"></a>01114   <span class="keywordflow">if</span> (<a class="code" href="PeepholeOptimizer_8cpp.html#a1fb65ab4a5af536c4f505d182f39c695">Optimizations</a>.empty())
+<a name="l01115"></a>01115     initOptimizations();
+<a name="l01116"></a>01116 
+<a name="l01117"></a>01117   <a class="code" href="classllvm_1_1Function.html">Function</a> *Callee = CI-><a class="code" href="classllvm_1_1CallInst.html#a0bcd4131e1a1d92215f5385b4e16cd2e">getCalledFunction</a>();
+<a name="l01118"></a>01118   LibCallOptimization *LCO = <a class="code" href="PeepholeOptimizer_8cpp.html#a1fb65ab4a5af536c4f505d182f39c695">Optimizations</a>.lookup(Callee-><a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>());
+<a name="l01119"></a>01119   <span class="keywordflow">if</span> (LCO) {
+<a name="l01120"></a>01120     <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> Builder(CI);
+<a name="l01121"></a>01121     <span class="keywordflow">return</span> LCO->optimizeCall(CI, TD, TLI, LCS, Builder);
+<a name="l01122"></a>01122   }
+<a name="l01123"></a>01123   <span class="keywordflow">return</span> 0;
+<a name="l01124"></a>01124 }
+<a name="l01125"></a>01125 
+<a name="l01126"></a>01126 <span class="keywordtype">void</span> LibCallSimplifierImpl::addOpt(<a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6f">LibFunc::Func</a> <a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>, LibCallOptimization* Opt) {
+<a name="l01127"></a>01127   <span class="keywordflow">if</span> (TLI-><a class="code" href="classllvm_1_1TargetLibraryInfo.html#a986085d3cd43522192d93e84bc660978">has</a>(F))
+<a name="l01128"></a>01128     <a class="code" href="PeepholeOptimizer_8cpp.html#a1fb65ab4a5af536c4f505d182f39c695">Optimizations</a>[TLI-><a class="code" href="classllvm_1_1TargetLibraryInfo.html#a0fe1c6579053c75b2089f8c2e60c65e0">getName</a>(F)] = Opt;
+<a name="l01129"></a>01129 }
+<a name="l01130"></a>01130 
+<a name="l01131"></a><a class="code" href="classllvm_1_1LibCallSimplifier.html#a86cb6ab4daf21260a4d41e4c4849e7e0">01131</a> <a class="code" href="classllvm_1_1LibCallSimplifier.html#a86cb6ab4daf21260a4d41e4c4849e7e0">LibCallSimplifier::LibCallSimplifier</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1DataLayout.html">DataLayout</a> *TD,
+<a name="l01132"></a>01132                                      <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetLibraryInfo.html">TargetLibraryInfo</a> *TLI) {
+<a name="l01133"></a>01133   Impl = <span class="keyword">new</span> <a class="code" href="classllvm_1_1LibCallSimplifierImpl.html">LibCallSimplifierImpl</a>(TD, TLI, <span class="keyword">this</span>);
+<a name="l01134"></a>01134 }
+<a name="l01135"></a>01135 
+<a name="l01136"></a><a class="code" href="classllvm_1_1LibCallSimplifier.html#a5deededee2797c9bbf45ea94fee2fa83">01136</a> <a class="code" href="classllvm_1_1LibCallSimplifier.html#a5deededee2797c9bbf45ea94fee2fa83">LibCallSimplifier::~LibCallSimplifier</a>() {
+<a name="l01137"></a>01137   <span class="keyword">delete</span> Impl;
+<a name="l01138"></a>01138 }
+<a name="l01139"></a>01139 
+<a name="l01140"></a><a class="code" href="classllvm_1_1LibCallSimplifier.html#a720db84f33d3d265af10e8703a0611b9">01140</a> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *<a class="code" href="classllvm_1_1LibCallSimplifier.html#a720db84f33d3d265af10e8703a0611b9">LibCallSimplifier::optimizeCall</a>(<a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI) {
+<a name="l01141"></a>01141   <span class="keywordflow">return</span> Impl->optimizeCall(CI);
+<a name="l01142"></a>01142 }
+<a name="l01143"></a>01143 
+<a name="l01144"></a><a class="code" href="classllvm_1_1LibCallSimplifier.html#a420c81fa4216737eabfbf384b4eab31d">01144</a> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1LibCallSimplifier.html#a420c81fa4216737eabfbf384b4eab31d">LibCallSimplifier::replaceAllUsesWith</a>(<a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *I, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *With)<span class="keyword"> const </span>{
+<a name="l01145"></a>01145   I-><a class="code" href="classllvm_1_1Value.html#a3ab5fc45117b450e8bb04e564cb6e5f2">replaceAllUsesWith</a>(With);
+<a name="l01146"></a>01146   I-><a class="code" href="classllvm_1_1Instruction.html#a6fe2f06b8a4b2c3d6308afb223a0238a">eraseFromParent</a>();
+<a name="l01147"></a>01147 }
+<a name="l01148"></a>01148 
+<a name="l01149"></a>01149 }
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:37:55 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/Valgrind_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Valgrind_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Valgrind_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Valgrind_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,310 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: Valgrind.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_25acc6571c4e3a053ee4203146b47a61.html">include</a>      </li>
+      <li class="navelem"><a class="el" href="dir_fd2d7b5ce83b1c1657cd6600d8cb39fa.html">llvm</a>      </li>
+      <li class="navelem"><a class="el" href="dir_b423301f639fc46b24b2c9f122fcaff7.html">Support</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#namespaces">Namespaces</a> |
+<a href="#define-members">Defines</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">Valgrind.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="Compiler_8h_source.html">llvm/Support/Compiler.h</a>"</code><br/>
+<code>#include "<a class="el" href="llvm-config_8h_source.html">llvm/Config/llvm-config.h</a>"</code><br/>
+<code>#include <stddef.h></code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for Valgrind.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="Valgrind_8h__incl.png" border="0" usemap="#Valgrind_8h" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="Valgrind_8h__dep__incl.png" border="0" usemap="#Valgrind_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="Valgrind_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html">llvm</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>List of target independent CodeGen pass IDs. </p>
+<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys.html">llvm::sys</a></td></tr>
+<tr><td colspan="2"><h2><a name="define-members"></a>
+Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Valgrind_8h.html#a186eadfc2c525b71adaf35e7487eccac">TsanHappensBefore</a>(cv)   AnnotateHappensBefore(__FILE__, __LINE__, cv)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Valgrind_8h.html#a4a8a06812caf14bdec3b541b578b8344">TsanHappensAfter</a>(cv)   AnnotateHappensAfter(__FILE__, __LINE__, cv)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Valgrind_8h.html#ae7ae7168870d6f719670bf0f47b9ade5">TsanIgnoreWritesBegin</a>()   AnnotateIgnoreWritesBegin(__FILE__, __LINE__)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Valgrind_8h.html#a6d95fe36240cded45e8889c2491a78f5">TsanIgnoreWritesEnd</a>()   AnnotateIgnoreWritesEnd(__FILE__, __LINE__)</td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">LLVM_ATTRIBUTE_WEAK void </td><td class="memItemRight" valign="bottom"><a class="el" href="Valgrind_8h.html#af92527dd6b61ad1e8c0a79a4cb8d5d3c">AnnotateHappensAfter</a> (const <a class="el" href="classchar.html">char</a> *<a class="el" href="PathProfileInfo_8cpp.html#add64b5c8b8c45c8dabeaf9d771cc1534">file</a>, int line, const volatile void *cv)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">LLVM_ATTRIBUTE_WEAK void </td><td class="memItemRight" valign="bottom"><a class="el" href="Valgrind_8h.html#aadb32063405d7b1c1de8fcb8442e6109">AnnotateHappensBefore</a> (const <a class="el" href="classchar.html">char</a> *<a class="el" href="PathProfileInfo_8cpp.html#add64b5c8b8c45c8dabeaf9d771cc1534">file</a>, int line, const volatile void *cv)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">LLVM_ATTRIBUTE_WEAK void </td><td class="memItemRight" valign="bottom"><a class="el" href="Valgrind_8h.html#afb4a6fdade0ac0f5d5be3dff9f6fc3c3">AnnotateIgnoreWritesBegin</a> (const <a class="el" href="classchar.html">char</a> *<a class="el" href="PathProfileInfo_8cpp.html#add64b5c8b8c45c8dabeaf9d771cc1534">file</a>, int line)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">LLVM_ATTRIBUTE_WEAK void </td><td class="memItemRight" valign="bottom"><a class="el" href="Valgrind_8h.html#a2e6432d1def1f1dbde024688fe023ae9">AnnotateIgnoreWritesEnd</a> (const <a class="el" href="classchar.html">char</a> *<a class="el" href="PathProfileInfo_8cpp.html#add64b5c8b8c45c8dabeaf9d771cc1534">file</a>, int line)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys.html#a7bb57f69c2fedb3c82da6acf5833449c">llvm::sys::RunningOnValgrind</a> ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys.html#afa3960ac5c365a344036b4c068477468">llvm::sys::ValgrindDiscardTranslations</a> (const void *Addr, size_t Len)</td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="a4a8a06812caf14bdec3b541b578b8344"></a><!-- doxytag: member="Valgrind.h::TsanHappensAfter" ref="a4a8a06812caf14bdec3b541b578b8344" args="(cv)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TsanHappensAfter</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">cv</td><td>)</td>
+          <td>   AnnotateHappensAfter(__FILE__, __LINE__, cv)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="Valgrind_8h_source.html#l00056">56</a> of file <a class="el" href="Valgrind_8h_source.html">Valgrind.h</a>.</p>
+
+<p>Referenced by <a class="el" href="Statistic_8h_source.html#l00110">llvm::Statistic::init()</a>, <a class="el" href="ManagedStatic_8h_source.html#l00065">llvm::ManagedStatic< C >::operator*()</a>, and <a class="el" href="ManagedStatic_8h_source.html#l00073">llvm::ManagedStatic< C >::operator->()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a186eadfc2c525b71adaf35e7487eccac"></a><!-- doxytag: member="Valgrind.h::TsanHappensBefore" ref="a186eadfc2c525b71adaf35e7487eccac" args="(cv)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TsanHappensBefore</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">cv</td><td>)</td>
+          <td>   AnnotateHappensBefore(__FILE__, __LINE__, cv)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="Valgrind_8h_source.html#l00052">52</a> of file <a class="el" href="Valgrind_8h_source.html">Valgrind.h</a>.</p>
+
+<p>Referenced by <a class="el" href="ManagedStatic_8cpp_source.html#l00022">llvm::ManagedStaticBase::RegisterManagedStatic()</a>, and <a class="el" href="Statistic_8cpp_source.html#l00068">llvm::Statistic::RegisterStatistic()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae7ae7168870d6f719670bf0f47b9ade5"></a><!-- doxytag: member="Valgrind.h::TsanIgnoreWritesBegin" ref="ae7ae7168870d6f719670bf0f47b9ade5" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TsanIgnoreWritesBegin</td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td>   AnnotateIgnoreWritesBegin(__FILE__, __LINE__)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="Valgrind_8h_source.html#l00060">60</a> of file <a class="el" href="Valgrind_8h_source.html">Valgrind.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86JITInfo_8cpp_source.html#l00429">llvm::X86JITInfo::getLazyResolverFunction()</a>, <a class="el" href="ManagedStatic_8cpp_source.html#l00022">llvm::ManagedStaticBase::RegisterManagedStatic()</a>, and <a class="el" href="Statistic_8cpp_source.html#l00068">llvm::Statistic::RegisterStatistic()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6d95fe36240cded45e8889c2491a78f5"></a><!-- doxytag: member="Valgrind.h::TsanIgnoreWritesEnd" ref="a6d95fe36240cded45e8889c2491a78f5" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define TsanIgnoreWritesEnd</td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td>   AnnotateIgnoreWritesEnd(__FILE__, __LINE__)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="Valgrind_8h_source.html#l00064">64</a> of file <a class="el" href="Valgrind_8h_source.html">Valgrind.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86JITInfo_8cpp_source.html#l00429">llvm::X86JITInfo::getLazyResolverFunction()</a>, <a class="el" href="ManagedStatic_8cpp_source.html#l00022">llvm::ManagedStaticBase::RegisterManagedStatic()</a>, and <a class="el" href="Statistic_8cpp_source.html#l00068">llvm::Statistic::RegisterStatistic()</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="af92527dd6b61ad1e8c0a79a4cb8d5d3c"></a><!-- doxytag: member="Valgrind.h::AnnotateHappensAfter" ref="af92527dd6b61ad1e8c0a79a4cb8d5d3c" args="(const char *file, int line, const volatile void *cv)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">LLVM_ATTRIBUTE_WEAK void AnnotateHappensAfter </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classchar.html">char</a> * </td>
+          <td class="paramname"><em>file</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int </td>
+          <td class="paramname"><em>line</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const volatile void * </td>
+          <td class="paramname"><em>cv</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="Valgrind_8cpp_source.html#l00062">62</a> of file <a class="el" href="Valgrind_8cpp_source.html">Valgrind.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aadb32063405d7b1c1de8fcb8442e6109"></a><!-- doxytag: member="Valgrind.h::AnnotateHappensBefore" ref="aadb32063405d7b1c1de8fcb8442e6109" args="(const char *file, int line, const volatile void *cv)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">LLVM_ATTRIBUTE_WEAK void AnnotateHappensBefore </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classchar.html">char</a> * </td>
+          <td class="paramname"><em>file</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int </td>
+          <td class="paramname"><em>line</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const volatile void * </td>
+          <td class="paramname"><em>cv</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="Valgrind_8cpp_source.html#l00060">60</a> of file <a class="el" href="Valgrind_8cpp_source.html">Valgrind.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afb4a6fdade0ac0f5d5be3dff9f6fc3c3"></a><!-- doxytag: member="Valgrind.h::AnnotateIgnoreWritesBegin" ref="afb4a6fdade0ac0f5d5be3dff9f6fc3c3" args="(const char *file, int line)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">LLVM_ATTRIBUTE_WEAK void AnnotateIgnoreWritesBegin </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classchar.html">char</a> * </td>
+          <td class="paramname"><em>file</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int </td>
+          <td class="paramname"><em>line</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="Valgrind_8cpp_source.html#l00064">64</a> of file <a class="el" href="Valgrind_8cpp_source.html">Valgrind.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2e6432d1def1f1dbde024688fe023ae9"></a><!-- doxytag: member="Valgrind.h::AnnotateIgnoreWritesEnd" ref="a2e6432d1def1f1dbde024688fe023ae9" args="(const char *file, int line)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">LLVM_ATTRIBUTE_WEAK void AnnotateIgnoreWritesEnd </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classchar.html">char</a> * </td>
+          <td class="paramname"><em>file</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int </td>
+          <td class="paramname"><em>line</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="Valgrind_8cpp_source.html#l00065">65</a> of file <a class="el" href="Valgrind_8cpp_source.html">Valgrind.cpp</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:56 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/ValueHandle_8h__dep__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ValueHandle_8h__dep__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/ValueHandle_8h__dep__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/ValueHandle_8h__dep__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+2646d2a6161f87d508d1fcd53c58514f
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/ValueSymbolTable_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ValueSymbolTable_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/ValueSymbolTable_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/ValueSymbolTable_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,91 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: ValueSymbolTable.cpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_83e3867971eec972e26e5b2c6ac80c1f.html">VMCore</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#define-members">Defines</a>  </div>
+  <div class="headertitle">
+<div class="title">ValueSymbolTable.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="GlobalValue_8h_source.html">llvm/GlobalValue.h</a>"</code><br/>
+<code>#include "<a class="el" href="Type_8h_source.html">llvm/Type.h</a>"</code><br/>
+<code>#include "<a class="el" href="ValueSymbolTable_8h_source.html">llvm/ValueSymbolTable.h</a>"</code><br/>
+<code>#include "<a class="el" href="SmallString_8h_source.html">llvm/ADT/SmallString.h</a>"</code><br/>
+<code>#include "<a class="el" href="Debug_8h_source.html">llvm/Support/Debug.h</a>"</code><br/>
+<code>#include "<a class="el" href="raw__ostream_8h_source.html">llvm/Support/raw_ostream.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for ValueSymbolTable.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="ValueSymbolTable_8cpp__incl.png" border="0" usemap="#ValueSymbolTable_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="ValueSymbolTable_8cpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="define-members"></a>
+Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ValueSymbolTable_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">DEBUG_TYPE</a>   "valuesymtab"</td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ad78e062f62e0d6e453941fb4ca843e4d"></a><!-- doxytag: member="ValueSymbolTable.cpp::DEBUG_TYPE" ref="ad78e062f62e0d6e453941fb4ca843e4d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define DEBUG_TYPE   "valuesymtab"</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="ValueSymbolTable_8cpp_source.html#l00014">14</a> of file <a class="el" href="ValueSymbolTable_8cpp_source.html">ValueSymbolTable.cpp</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:56 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/ValueSymbolTable_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ValueSymbolTable_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/ValueSymbolTable_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/ValueSymbolTable_8h__dep__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,31 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="ValueSymbolTable.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="LLParser.cpp",height=0.2,width=0.4,color="black",URL="$LLParser_8cpp.html"];
+  Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="BitcodeWriter.cpp",height=0.2,width=0.4,color="black",URL="$BitcodeWriter_8cpp.html"];
+  Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="ValueEnumerator.cpp",height=0.2,width=0.4,color="black",URL="$ValueEnumerator_8cpp.html"];
+  Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="StripSymbols.cpp",height=0.2,width=0.4,color="black",URL="$StripSymbols_8cpp.html"];
+  Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="AsmWriter.cpp",height=0.2,width=0.4,color="black",URL="$AsmWriter_8cpp.html"];
+  Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="SymbolTableListTraitsImpl.h",height=0.2,width=0.4,color="black",URL="$SymbolTableListTraitsImpl_8h.html"];
+  Node7 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="BasicBlock.cpp",height=0.2,width=0.4,color="black",URL="$BasicBlock_8cpp.html"];
+  Node7 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="Function.cpp",height=0.2,width=0.4,color="black",URL="$Function_8cpp.html"];
+  Node7 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="Metadata.cpp",height=0.2,width=0.4,color="black",URL="$Metadata_8cpp.html"];
+  Node7 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="Module.cpp",height=0.2,width=0.4,color="black",URL="$Module_8cpp.html"];
+  Node1 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="Value.cpp",height=0.2,width=0.4,color="black",URL="$Value_8cpp.html"];
+  Node1 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="ValueSymbolTable.cpp",height=0.2,width=0.4,color="black",URL="$ValueSymbolTable_8cpp.html"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/ValueTypes_8cpp__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ValueTypes_8cpp__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/ValueTypes_8cpp__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/ValueTypes_8cpp__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+d858f6d07675caa0c99dfe005c309df3
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/ValueTypes_8h__dep__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ValueTypes_8h__dep__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/ValueTypes_8h__dep__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/ValueTypes_8h__dep__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+1c537ab326006c916f806b8f864a0398
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/ValueTypes_8h__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ValueTypes_8h__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/ValueTypes_8h__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/ValueTypes_8h__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+4886d8d415e4648771491e4fc16395a2
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/ValueTypes_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/ValueTypes_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/ValueTypes_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/ValueTypes_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,867 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: ValueTypes.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_25acc6571c4e3a053ee4203146b47a61.html">include</a>      </li>
+      <li class="navelem"><a class="el" href="dir_fd2d7b5ce83b1c1657cd6600d8cb39fa.html">llvm</a>      </li>
+      <li class="navelem"><a class="el" href="dir_33f9015af551a3c03ac5a968f2023d57.html">CodeGen</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">ValueTypes.h</div>  </div>
+</div>
+<div class="contents">
+<a href="ValueTypes_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===- CodeGen/ValueTypes.h - Low-Level Target independ. types --*- C++ -*-===//</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">//                     The LLVM Compiler Infrastructure</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">// This file is distributed under the University of Illinois Open Source</span>
+<a name="l00006"></a>00006 <span class="comment">// License. See LICENSE.TXT for details.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00009"></a>00009 <span class="comment">//</span>
+<a name="l00010"></a>00010 <span class="comment">// This file defines the set of low-level target independent types which various</span>
+<a name="l00011"></a>00011 <span class="comment">// values in the code generator are.  This allows the target specific behavior</span>
+<a name="l00012"></a>00012 <span class="comment">// of instructions to be described to target independent passes.</span>
+<a name="l00013"></a>00013 <span class="comment">//</span>
+<a name="l00014"></a>00014 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00015"></a>00015 
+<a name="l00016"></a>00016 <span class="preprocessor">#ifndef LLVM_CODEGEN_VALUETYPES_H</span>
+<a name="l00017"></a>00017 <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CODEGEN_VALUETYPES_H</span>
+<a name="l00018"></a>00018 <span class="preprocessor"></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="DataTypes_8h.html">llvm/Support/DataTypes.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="ErrorHandling_8h.html">llvm/Support/ErrorHandling.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="MathExtras_8h.html">llvm/Support/MathExtras.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include <cassert></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <string></span>
+<a name="l00024"></a>00024 
+<a name="l00025"></a>00025 <span class="keyword">namespace </span>llvm {
+<a name="l00026"></a>00026   <span class="keyword">class </span><a class="code" href="namespacellvm_1_1HexagonII.html#a9bebdf970b4f51041ed3dee5d558a807">Type</a>;
+<a name="l00027"></a>00027   <span class="keyword">class </span>LLVMContext;
+<a name="l00028"></a>00028   <span class="keyword">struct </span>EVT;
+<a name="l00029"></a>00029 <span class="comment"></span>
+<a name="l00030"></a>00030 <span class="comment">  /// MVT - Machine Value Type.  Every type that is supported natively by some</span>
+<a name="l00031"></a>00031 <span class="comment">  /// processor targeted by LLVM occurs here.  This means that any legal value</span>
+<a name="l00032"></a>00032 <span class="comment">  /// type can be represented by a MVT.</span>
+<a name="l00033"></a><a class="code" href="classllvm_1_1MVT.html">00033</a> <span class="comment"></span>  <span class="keyword">class </span><a class="code" href="classllvm_1_1MVT.html">MVT</a> {
+<a name="l00034"></a>00034   <span class="keyword">public</span>:
+<a name="l00035"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">00035</a>     <span class="keyword">enum</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">SimpleValueType</a> {
+<a name="l00036"></a>00036       <span class="comment">// If you change this numbering, you must change the values in</span>
+<a name="l00037"></a>00037       <span class="comment">// ValueTypes.td as well!</span>
+<a name="l00038"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca62a222acce6360abd2726719fabc2797">00038</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca62a222acce6360abd2726719fabc2797">Other</a>          =   0,   <span class="comment">// This is a non-standard value</span>
+<a name="l00039"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca85440bbdbba12de574c02e515444d3f4">00039</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca85440bbdbba12de574c02e515444d3f4">i1</a>             =   1,   <span class="comment">// This is a 1 bit integer value</span>
+<a name="l00040"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf777e086e32f60c0c87b460964eae7d0">00040</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf777e086e32f60c0c87b460964eae7d0">i8</a>             =   2,   <span class="comment">// This is an 8 bit integer value</span>
+<a name="l00041"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cab3be25b50efa0289a3c86fd50454b683">00041</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cab3be25b50efa0289a3c86fd50454b683">i16</a>            =   3,   <span class="comment">// This is a 16 bit integer value</span>
+<a name="l00042"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca04cca8bc12888d0a7238f55a6c550ad0">00042</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca04cca8bc12888d0a7238f55a6c550ad0">i32</a>            =   4,   <span class="comment">// This is a 32 bit integer value</span>
+<a name="l00043"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca97f56253625b3fe7b371ce76722de4b8">00043</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca97f56253625b3fe7b371ce76722de4b8">i64</a>            =   5,   <span class="comment">// This is a 64 bit integer value</span>
+<a name="l00044"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca586cbcab7599db1f50f3b6759115179b">00044</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca586cbcab7599db1f50f3b6759115179b">i128</a>           =   6,   <span class="comment">// This is a 128 bit integer value</span>
+<a name="l00045"></a>00045 
+<a name="l00046"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca97826d9e1c231c51153ef23ee4e95233">00046</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca97826d9e1c231c51153ef23ee4e95233">FIRST_INTEGER_VALUETYPE</a> = <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca85440bbdbba12de574c02e515444d3f4">i1</a>,
+<a name="l00047"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca5728436bd6ff6c800a6d96cb7dfa7d01">00047</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca5728436bd6ff6c800a6d96cb7dfa7d01">LAST_INTEGER_VALUETYPE</a>  = <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca586cbcab7599db1f50f3b6759115179b">i128</a>,
+<a name="l00048"></a>00048 
+<a name="l00049"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca1e0cfc795f0b068229dcec6eecb69499">00049</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca1e0cfc795f0b068229dcec6eecb69499">f16</a>            =   7,   <span class="comment">// This is a 16 bit floating point value</span>
+<a name="l00050"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca586bae91020e6d8cccfe0995f527606f">00050</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca586bae91020e6d8cccfe0995f527606f">f32</a>            =   8,   <span class="comment">// This is a 32 bit floating point value</span>
+<a name="l00051"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cac661c912350e3095c85ba75b8dbc17b1">00051</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cac661c912350e3095c85ba75b8dbc17b1">f64</a>            =   9,   <span class="comment">// This is a 64 bit floating point value</span>
+<a name="l00052"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca6c5745e529b6b3534599c54d82bc4691">00052</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca6c5745e529b6b3534599c54d82bc4691">f80</a>            =  10,   <span class="comment">// This is a 80 bit floating point value</span>
+<a name="l00053"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caffc152986796ab57023f65116d2ee1b2">00053</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caffc152986796ab57023f65116d2ee1b2">f128</a>           =  11,   <span class="comment">// This is a 128 bit floating point value</span>
+<a name="l00054"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca497ebfc1d05b772bf14cd530c950cf80">00054</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca497ebfc1d05b772bf14cd530c950cf80">ppcf128</a>        =  12,   <span class="comment">// This is a PPC 128-bit floating point value</span>
+<a name="l00055"></a>00055 
+<a name="l00056"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca2bf1524c27a3d7b586eb5266b28a129e">00056</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca2bf1524c27a3d7b586eb5266b28a129e">FIRST_FP_VALUETYPE</a> = <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca1e0cfc795f0b068229dcec6eecb69499">f16</a>,
+<a name="l00057"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca8116445ddb725af437d6cb6b8fb84276">00057</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca8116445ddb725af437d6cb6b8fb84276">LAST_FP_VALUETYPE</a>  = <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca497ebfc1d05b772bf14cd530c950cf80">ppcf128</a>,
+<a name="l00058"></a>00058 
+<a name="l00059"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca03eeae7529a0e3012956884ab96412bb">00059</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca03eeae7529a0e3012956884ab96412bb">v2i1</a>           =  13,   <span class="comment">//  2 x i1</span>
+<a name="l00060"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca8b6cc6df8e802f1294219dd63944f164">00060</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca8b6cc6df8e802f1294219dd63944f164">v4i1</a>           =  14,   <span class="comment">//  4 x i1</span>
+<a name="l00061"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caad2a4353009c039ce3b4807c5dfc0759">00061</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caad2a4353009c039ce3b4807c5dfc0759">v8i1</a>           =  15,   <span class="comment">//  8 x i1</span>
+<a name="l00062"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0ebe435f5423945489fecd670405e1a4">00062</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0ebe435f5423945489fecd670405e1a4">v16i1</a>          =  16,   <span class="comment">// 16 x i1</span>
+<a name="l00063"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca467ea454a5aeb9501d4b6b1fa1baa250">00063</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca467ea454a5aeb9501d4b6b1fa1baa250">v2i8</a>           =  17,   <span class="comment">//  2 x i8</span>
+<a name="l00064"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca2af129f2eeb16ebc7c0f2317083373cb">00064</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca2af129f2eeb16ebc7c0f2317083373cb">v4i8</a>           =  18,   <span class="comment">//  4 x i8</span>
+<a name="l00065"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca31f0af1863185f14e91278f7d567ae81">00065</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca31f0af1863185f14e91278f7d567ae81">v8i8</a>           =  19,   <span class="comment">//  8 x i8</span>
+<a name="l00066"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cae3d1acb736016d92ec470470f1c26065">00066</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cae3d1acb736016d92ec470470f1c26065">v16i8</a>          =  20,   <span class="comment">// 16 x i8</span>
+<a name="l00067"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf74fabd4f798ee5b63e5adb8b610a7c4">00067</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf74fabd4f798ee5b63e5adb8b610a7c4">v32i8</a>          =  21,   <span class="comment">// 32 x i8</span>
+<a name="l00068"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca2fbddaf5533297ffad6da0285219a7ac">00068</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca2fbddaf5533297ffad6da0285219a7ac">v1i16</a>          =  22,   <span class="comment">//  1 x i16</span>
+<a name="l00069"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca802353221ba95e0fb06ef5e38dd79192">00069</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca802353221ba95e0fb06ef5e38dd79192">v2i16</a>          =  23,   <span class="comment">//  2 x i16</span>
+<a name="l00070"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca9b846c126ddfbe57601a050653a45bd3">00070</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca9b846c126ddfbe57601a050653a45bd3">v4i16</a>          =  24,   <span class="comment">//  4 x i16</span>
+<a name="l00071"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca97a9e92da302a5dd0ff02cf2587d7db3">00071</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca97a9e92da302a5dd0ff02cf2587d7db3">v8i16</a>          =  25,   <span class="comment">//  8 x i16</span>
+<a name="l00072"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca751678573bf256a35799dfd23c0e143a">00072</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca751678573bf256a35799dfd23c0e143a">v16i16</a>         =  26,   <span class="comment">// 16 x i16</span>
+<a name="l00073"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca5b729c23e158ab1c69a86ae5dae85822">00073</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca5b729c23e158ab1c69a86ae5dae85822">v1i32</a>          =  27,   <span class="comment">//  1 x i32</span>
+<a name="l00074"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca5782b71c5eafe937e8d31d7b62497d99">00074</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca5782b71c5eafe937e8d31d7b62497d99">v2i32</a>          =  28,   <span class="comment">//  2 x i32</span>
+<a name="l00075"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca4b321667ee9d821362ffabd3c24d17b1">00075</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca4b321667ee9d821362ffabd3c24d17b1">v4i32</a>          =  29,   <span class="comment">//  4 x i32</span>
+<a name="l00076"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cabace960037dd118c4a08237431d73b7d">00076</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cabace960037dd118c4a08237431d73b7d">v8i32</a>          =  30,   <span class="comment">//  8 x i32</span>
+<a name="l00077"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca43880c339df7af47067f4b3fb6f7de03">00077</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca43880c339df7af47067f4b3fb6f7de03">v16i32</a>         =  31,   <span class="comment">// 16 x i32</span>
+<a name="l00078"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf1e053801285fc066af033c62980eb33">00078</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf1e053801285fc066af033c62980eb33">v1i64</a>          =  32,   <span class="comment">//  1 x i64</span>
+<a name="l00079"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0f87637b0102ab8e9f085bf80358fabc">00079</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0f87637b0102ab8e9f085bf80358fabc">v2i64</a>          =  33,   <span class="comment">//  2 x i64</span>
+<a name="l00080"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca16a8c1f04762886c0a57a4d8b4500db1">00080</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca16a8c1f04762886c0a57a4d8b4500db1">v4i64</a>          =  34,   <span class="comment">//  4 x i64</span>
+<a name="l00081"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca4c5a8a44331ca7bfa1400a74affc0d89">00081</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca4c5a8a44331ca7bfa1400a74affc0d89">v8i64</a>          =  35,   <span class="comment">//  8 x i64</span>
+<a name="l00082"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca42c7848a3ef138f5b7119e94b5e78723">00082</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca42c7848a3ef138f5b7119e94b5e78723">v16i64</a>         =  36,   <span class="comment">// 16 x i64</span>
+<a name="l00083"></a>00083 
+<a name="l00084"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca766168a67c5954796304a42e6287f23e">00084</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca766168a67c5954796304a42e6287f23e">v2f16</a>          =  37,   <span class="comment">//  2 x f16</span>
+<a name="l00085"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0bc51b0308b6c057dc86d2a6bf4b6573">00085</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0bc51b0308b6c057dc86d2a6bf4b6573">v2f32</a>          =  38,   <span class="comment">//  2 x f32</span>
+<a name="l00086"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca49615145fd6c985a530ec3743d053475">00086</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca49615145fd6c985a530ec3743d053475">v4f32</a>          =  39,   <span class="comment">//  4 x f32</span>
+<a name="l00087"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caae3cb65654a7470c8fab62100baa5a6b">00087</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caae3cb65654a7470c8fab62100baa5a6b">v8f32</a>          =  40,   <span class="comment">//  8 x f32</span>
+<a name="l00088"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca83cf3151949430d75a783f36e2a1ffd8">00088</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca83cf3151949430d75a783f36e2a1ffd8">v2f64</a>          =  41,   <span class="comment">//  2 x f64</span>
+<a name="l00089"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca3de49ed37c33836e97340c33186c9136">00089</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca3de49ed37c33836e97340c33186c9136">v4f64</a>          =  42,   <span class="comment">//  4 x f64</span>
+<a name="l00090"></a>00090 
+<a name="l00091"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cae95173386f40dde17d7ae56a7bdd416e">00091</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cae95173386f40dde17d7ae56a7bdd416e">FIRST_VECTOR_VALUETYPE</a> = <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca03eeae7529a0e3012956884ab96412bb">v2i1</a>,
+<a name="l00092"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cac70c1ab4641d55854fdc2d7b7d40350f">00092</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cac70c1ab4641d55854fdc2d7b7d40350f">LAST_VECTOR_VALUETYPE</a>  = <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca3de49ed37c33836e97340c33186c9136">v4f64</a>,
+<a name="l00093"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca96ccbad40faf36c84e9f2cf821e733d6">00093</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca96ccbad40faf36c84e9f2cf821e733d6">FIRST_INTEGER_VECTOR_VALUETYPE</a> = <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca03eeae7529a0e3012956884ab96412bb">v2i1</a>,
+<a name="l00094"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cac3592e9452a84385e99c160151f7ace1">00094</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cac3592e9452a84385e99c160151f7ace1">LAST_INTEGER_VECTOR_VALUETYPE</a> = <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca42c7848a3ef138f5b7119e94b5e78723">v16i64</a>,
+<a name="l00095"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca8a48671a1ceb25c1025a152609497e15">00095</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca8a48671a1ceb25c1025a152609497e15">FIRST_FP_VECTOR_VALUETYPE</a> = <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca766168a67c5954796304a42e6287f23e">v2f16</a>,
+<a name="l00096"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca29b59231428eb32804afb17abd744941">00096</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca29b59231428eb32804afb17abd744941">LAST_FP_VECTOR_VALUETYPE</a> = <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca3de49ed37c33836e97340c33186c9136">v4f64</a>,
+<a name="l00097"></a>00097 
+<a name="l00098"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca99d6935065e7c7a2fa53208e41e5b428">00098</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca99d6935065e7c7a2fa53208e41e5b428">x86mmx</a>         =  43,   <span class="comment">// This is an X86 MMX value</span>
+<a name="l00099"></a>00099 
+<a name="l00100"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca59a1908cf136662bcfdc11ed49515ca9">00100</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca59a1908cf136662bcfdc11ed49515ca9">Glue</a>           =  44,   <span class="comment">// This glues nodes together during pre-RA sched</span>
+<a name="l00101"></a>00101 
+<a name="l00102"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca1d771d459e76b34e6839ac241b4be616">00102</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca1d771d459e76b34e6839ac241b4be616">isVoid</a>         =  45,   <span class="comment">// This has no value</span>
+<a name="l00103"></a>00103 
+<a name="l00104"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca707dc1fd6a4179316ffa6ca2516e18dc">00104</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca707dc1fd6a4179316ffa6ca2516e18dc">Untyped</a>        =  46,   <span class="comment">// This value takes a register, but has</span>
+<a name="l00105"></a>00105                               <span class="comment">// unspecified type.  The register class</span>
+<a name="l00106"></a>00106                               <span class="comment">// will be determined by the opcode.</span>
+<a name="l00107"></a>00107 
+<a name="l00108"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca2f78696cb9784a134baa9c3e4fc44838">00108</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca2f78696cb9784a134baa9c3e4fc44838">LAST_VALUETYPE</a> =  47,   <span class="comment">// This always remains at the end of the list.</span>
+<a name="l00109"></a>00109 
+<a name="l00110"></a>00110       <span class="comment">// This is the current maximum for LAST_VALUETYPE.</span>
+<a name="l00111"></a>00111       <span class="comment">// MVT::MAX_ALLOWED_VALUETYPE is used for asserts and to size bit vectors</span>
+<a name="l00112"></a>00112       <span class="comment">// This value must be a multiple of 32.</span>
+<a name="l00113"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca6d9a27a151ee53477a1c011de557a915">00113</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca6d9a27a151ee53477a1c011de557a915">MAX_ALLOWED_VALUETYPE</a> = 64,
+<a name="l00114"></a>00114 
+<a name="l00115"></a>00115       <span class="comment">// Metadata - This is MDNode or MDString.</span>
+<a name="l00116"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf129eb83f3662741873ada9ebaefebb0">00116</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf129eb83f3662741873ada9ebaefebb0">Metadata</a>       = 250,
+<a name="l00117"></a>00117 
+<a name="l00118"></a>00118       <span class="comment">// iPTRAny - An int value the size of the pointer of the current</span>
+<a name="l00119"></a>00119       <span class="comment">// target to any address space. This must only be used internal to</span>
+<a name="l00120"></a>00120       <span class="comment">// tblgen. Other than for overloading, we treat iPTRAny the same as iPTR.</span>
+<a name="l00121"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca8a5b58b6cae5041fef5b561aa1f6a28b">00121</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca8a5b58b6cae5041fef5b561aa1f6a28b">iPTRAny</a>        = 251,
+<a name="l00122"></a>00122 
+<a name="l00123"></a>00123       <span class="comment">// vAny - A vector with any length and element size. This is used</span>
+<a name="l00124"></a>00124       <span class="comment">// for intrinsics that have overloadings based on vector types.</span>
+<a name="l00125"></a>00125       <span class="comment">// This is only for tblgen's consumption!</span>
+<a name="l00126"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca391b65d00cc95a5535d0dc05df2a158a">00126</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca391b65d00cc95a5535d0dc05df2a158a">vAny</a>           = 252,
+<a name="l00127"></a>00127 
+<a name="l00128"></a>00128       <span class="comment">// fAny - Any floating-point or vector floating-point value. This is used</span>
+<a name="l00129"></a>00129       <span class="comment">// for intrinsics that have overloadings based on floating-point types.</span>
+<a name="l00130"></a>00130       <span class="comment">// This is only for tblgen's consumption!</span>
+<a name="l00131"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca56602959c9ddd3de680c980288c835b2">00131</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca56602959c9ddd3de680c980288c835b2">fAny</a>           = 253,
+<a name="l00132"></a>00132 
+<a name="l00133"></a>00133       <span class="comment">// iAny - An integer or vector integer value of any bit width. This is</span>
+<a name="l00134"></a>00134       <span class="comment">// used for intrinsics that have overloadings based on integer bit widths.</span>
+<a name="l00135"></a>00135       <span class="comment">// This is only for tblgen's consumption!</span>
+<a name="l00136"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cac16d48502498a2bf95d57d62e8f23159">00136</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cac16d48502498a2bf95d57d62e8f23159">iAny</a>           = 254,
+<a name="l00137"></a>00137 
+<a name="l00138"></a>00138       <span class="comment">// iPTR - An int value the size of the pointer of the current</span>
+<a name="l00139"></a>00139       <span class="comment">// target.  This should only be used internal to tblgen!</span>
+<a name="l00140"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca081c1b396411c5dbcf5c0d9491f4f6ec">00140</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca081c1b396411c5dbcf5c0d9491f4f6ec">iPTR</a>           = 255,
+<a name="l00141"></a>00141 
+<a name="l00142"></a>00142       <span class="comment">// LastSimpleValueType - The greatest valid SimpleValueType value.</span>
+<a name="l00143"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca9be8e1c61ee4934e4722c6c84b5665f3">00143</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca9be8e1c61ee4934e4722c6c84b5665f3">LastSimpleValueType</a> = 255,
+<a name="l00144"></a>00144 
+<a name="l00145"></a>00145       <span class="comment">// INVALID_SIMPLE_VALUE_TYPE - Simple value types greater than or equal</span>
+<a name="l00146"></a>00146       <span class="comment">// to this are considered extended value types.</span>
+<a name="l00147"></a><a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf4f312520aaba4506b874a3f83fe2464">00147</a>       <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf4f312520aaba4506b874a3f83fe2464">INVALID_SIMPLE_VALUE_TYPE</a> = <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca9be8e1c61ee4934e4722c6c84b5665f3">LastSimpleValueType</a> + 1
+<a name="l00148"></a>00148     };
+<a name="l00149"></a>00149 
+<a name="l00150"></a><a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">00150</a>     <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">SimpleValueType</a> <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a>;
+<a name="l00151"></a>00151 
+<a name="l00152"></a><a class="code" href="classllvm_1_1MVT.html#a1fca0a0a398d61c127a58c99ebdd6fb8">00152</a>     <a class="code" href="classllvm_1_1MVT.html#a1fca0a0a398d61c127a58c99ebdd6fb8">MVT</a>() : <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a>((<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">SimpleValueType</a>)(<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf4f312520aaba4506b874a3f83fe2464">INVALID_SIMPLE_VALUE_TYPE</a>)) {}
+<a name="l00153"></a><a class="code" href="classllvm_1_1MVT.html#a4afc572f780e60372ede6182f67a5ba8">00153</a>     <a class="code" href="classllvm_1_1MVT.html#a4afc572f780e60372ede6182f67a5ba8">MVT</a>(<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">SimpleValueType</a> SVT) : <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a>(SVT) { }
+<a name="l00154"></a>00154 
+<a name="l00155"></a><a class="code" href="classllvm_1_1MVT.html#a1e11ceb2894e73eb76fff1cf5fa175fe">00155</a>     <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MVT.html#a1e11ceb2894e73eb76fff1cf5fa175fe">operator></a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MVT.html">MVT</a>& S)<span class="keyword">  const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> >  S.<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a>; }
+<a name="l00156"></a><a class="code" href="classllvm_1_1MVT.html#ac3bd42580693beca459e5757742b4046">00156</a>     <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MVT.html#ac3bd42580693beca459e5757742b4046">operator<</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MVT.html">MVT</a>& S)<span class="keyword">  const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> <  S.<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a>; }
+<a name="l00157"></a><a class="code" href="classllvm_1_1MVT.html#a8210451be8de4c859531fb80faa156bd">00157</a>     <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MVT.html#a8210451be8de4c859531fb80faa156bd">operator==</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MVT.html">MVT</a>& S)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == S.<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a>; }
+<a name="l00158"></a><a class="code" href="classllvm_1_1MVT.html#ab15d94877108c7e757c6aa6dae16a626">00158</a>     <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MVT.html#ab15d94877108c7e757c6aa6dae16a626">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MVT.html">MVT</a>& S)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> != S.<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a>; }
+<a name="l00159"></a><a class="code" href="classllvm_1_1MVT.html#a10060ccbf10fa0fff507a92a9d72b570">00159</a>     <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MVT.html#a10060ccbf10fa0fff507a92a9d72b570">operator>=</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MVT.html">MVT</a>& S)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> >= S.<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a>; }
+<a name="l00160"></a><a class="code" href="classllvm_1_1MVT.html#a5ccd43d769c7a5a6a0240ae8f8911af4">00160</a>     <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MVT.html#a5ccd43d769c7a5a6a0240ae8f8911af4">operator<=</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MVT.html">MVT</a>& S)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> <= S.<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a>; }
+<a name="l00161"></a>00161 <span class="comment"></span>
+<a name="l00162"></a>00162 <span class="comment">    /// isFloatingPoint - Return true if this is a FP, or a vector FP type.</span>
+<a name="l00163"></a><a class="code" href="classllvm_1_1MVT.html#ab1311d6d51755d404adc348ad4aeaaad">00163</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MVT.html#ab1311d6d51755d404adc348ad4aeaaad" title="isFloatingPoint - Return true if this is a FP, or a vector FP type.">isFloatingPoint</a>()<span class="keyword"> const </span>{
+<a name="l00164"></a>00164       <span class="keywordflow">return</span> ((<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> >= <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca2bf1524c27a3d7b586eb5266b28a129e">MVT::FIRST_FP_VALUETYPE</a> &&
+<a name="l00165"></a>00165                <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> <= <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca8116445ddb725af437d6cb6b8fb84276">MVT::LAST_FP_VALUETYPE</a>) ||
+<a name="l00166"></a>00166               (<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> >= <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca8a48671a1ceb25c1025a152609497e15">MVT::FIRST_FP_VECTOR_VALUETYPE</a> &&
+<a name="l00167"></a>00167                <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> <= <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca29b59231428eb32804afb17abd744941">MVT::LAST_FP_VECTOR_VALUETYPE</a>));
+<a name="l00168"></a>00168     }
+<a name="l00169"></a>00169 <span class="comment"></span>
+<a name="l00170"></a>00170 <span class="comment">    /// isInteger - Return true if this is an integer, or a vector integer type.</span>
+<a name="l00171"></a><a class="code" href="classllvm_1_1MVT.html#a3d312d3d7b24b6684b07792888bc5efd">00171</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MVT.html#a3d312d3d7b24b6684b07792888bc5efd" title="isInteger - Return true if this is an integer, or a vector integer type.">isInteger</a>()<span class="keyword"> const </span>{
+<a name="l00172"></a>00172       <span class="keywordflow">return</span> ((<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> >= <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca97826d9e1c231c51153ef23ee4e95233">MVT::FIRST_INTEGER_VALUETYPE</a> &&
+<a name="l00173"></a>00173                <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> <= <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca5728436bd6ff6c800a6d96cb7dfa7d01">MVT::LAST_INTEGER_VALUETYPE</a>) ||
+<a name="l00174"></a>00174               (<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> >= <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca96ccbad40faf36c84e9f2cf821e733d6">MVT::FIRST_INTEGER_VECTOR_VALUETYPE</a> &&
+<a name="l00175"></a>00175                <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> <= <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cac3592e9452a84385e99c160151f7ace1">MVT::LAST_INTEGER_VECTOR_VALUETYPE</a>));
+<a name="l00176"></a>00176     }
+<a name="l00177"></a>00177 <span class="comment"></span>
+<a name="l00178"></a>00178 <span class="comment">    /// isVector - Return true if this is a vector value type.</span>
+<a name="l00179"></a><a class="code" href="classllvm_1_1MVT.html#afa328609e9c6183e2bc34afe59b84d1d">00179</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MVT.html#afa328609e9c6183e2bc34afe59b84d1d" title="isVector - Return true if this is a vector value type.">isVector</a>()<span class="keyword"> const </span>{
+<a name="l00180"></a>00180       <span class="keywordflow">return</span> (<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> >= <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cae95173386f40dde17d7ae56a7bdd416e">MVT::FIRST_VECTOR_VALUETYPE</a> &&
+<a name="l00181"></a>00181               <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> <= <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cac70c1ab4641d55854fdc2d7b7d40350f">MVT::LAST_VECTOR_VALUETYPE</a>);
+<a name="l00182"></a>00182     }
+<a name="l00183"></a>00183 <span class="comment"></span>
+<a name="l00184"></a>00184 <span class="comment">    /// is16BitVector - Return true if this is a 16-bit vector type.</span>
+<a name="l00185"></a><a class="code" href="classllvm_1_1MVT.html#aaf2ee5eaf25d3adbad7437e08f433892">00185</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MVT.html#aaf2ee5eaf25d3adbad7437e08f433892" title="is16BitVector - Return true if this is a 16-bit vector type.">is16BitVector</a>()<span class="keyword"> const </span>{
+<a name="l00186"></a>00186       <span class="keywordflow">return</span> (<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca467ea454a5aeb9501d4b6b1fa1baa250">MVT::v2i8</a>  || <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca2fbddaf5533297ffad6da0285219a7ac">MVT::v1i16</a> ||
+<a name="l00187"></a>00187               <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0ebe435f5423945489fecd670405e1a4">MVT::v16i1</a>);
+<a name="l00188"></a>00188     }
+<a name="l00189"></a>00189 <span class="comment"></span>
+<a name="l00190"></a>00190 <span class="comment">    /// is32BitVector - Return true if this is a 32-bit vector type.</span>
+<a name="l00191"></a><a class="code" href="classllvm_1_1MVT.html#a622e06c58b0da779511d9a19d4fe7381">00191</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MVT.html#a622e06c58b0da779511d9a19d4fe7381" title="is32BitVector - Return true if this is a 32-bit vector type.">is32BitVector</a>()<span class="keyword"> const </span>{
+<a name="l00192"></a>00192       <span class="keywordflow">return</span> (<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca2af129f2eeb16ebc7c0f2317083373cb">MVT::v4i8</a>  || <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca802353221ba95e0fb06ef5e38dd79192">MVT::v2i16</a> ||
+<a name="l00193"></a>00193               <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca5b729c23e158ab1c69a86ae5dae85822">MVT::v1i32</a>);
+<a name="l00194"></a>00194     }
+<a name="l00195"></a>00195 <span class="comment"></span>
+<a name="l00196"></a>00196 <span class="comment">    /// is64BitVector - Return true if this is a 64-bit vector type.</span>
+<a name="l00197"></a><a class="code" href="classllvm_1_1MVT.html#af5434e2ff166c79dce43ebf381b3787f">00197</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MVT.html#af5434e2ff166c79dce43ebf381b3787f" title="is64BitVector - Return true if this is a 64-bit vector type.">is64BitVector</a>()<span class="keyword"> const </span>{
+<a name="l00198"></a>00198       <span class="keywordflow">return</span> (<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca31f0af1863185f14e91278f7d567ae81">MVT::v8i8</a>  || <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca9b846c126ddfbe57601a050653a45bd3">MVT::v4i16</a> ||
+<a name="l00199"></a>00199               <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca5782b71c5eafe937e8d31d7b62497d99">MVT::v2i32</a> || <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf1e053801285fc066af033c62980eb33">MVT::v1i64</a> ||
+<a name="l00200"></a>00200               <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0bc51b0308b6c057dc86d2a6bf4b6573">MVT::v2f32</a>);
+<a name="l00201"></a>00201     }
+<a name="l00202"></a>00202 <span class="comment"></span>
+<a name="l00203"></a>00203 <span class="comment">    /// is128BitVector - Return true if this is a 128-bit vector type.</span>
+<a name="l00204"></a><a class="code" href="classllvm_1_1MVT.html#aed34d098cbe75820e27c939e86a1edae">00204</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MVT.html#aed34d098cbe75820e27c939e86a1edae" title="is128BitVector - Return true if this is a 128-bit vector type.">is128BitVector</a>()<span class="keyword"> const </span>{
+<a name="l00205"></a>00205       <span class="keywordflow">return</span> (<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cae3d1acb736016d92ec470470f1c26065">MVT::v16i8</a> || <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca97a9e92da302a5dd0ff02cf2587d7db3">MVT::v8i16</a> ||
+<a name="l00206"></a>00206               <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca4b321667ee9d821362ffabd3c24d17b1">MVT::v4i32</a> || <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0f87637b0102ab8e9f085bf80358fabc">MVT::v2i64</a> ||
+<a name="l00207"></a>00207               <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca49615145fd6c985a530ec3743d053475">MVT::v4f32</a> || <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca83cf3151949430d75a783f36e2a1ffd8">MVT::v2f64</a>);
+<a name="l00208"></a>00208     }
+<a name="l00209"></a>00209 <span class="comment"></span>
+<a name="l00210"></a>00210 <span class="comment">    /// is256BitVector - Return true if this is a 256-bit vector type.</span>
+<a name="l00211"></a><a class="code" href="classllvm_1_1MVT.html#a0079eaa7a60c51981781bb3963897750">00211</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MVT.html#a0079eaa7a60c51981781bb3963897750" title="is256BitVector - Return true if this is a 256-bit vector type.">is256BitVector</a>()<span class="keyword"> const </span>{
+<a name="l00212"></a>00212       <span class="keywordflow">return</span> (<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caae3cb65654a7470c8fab62100baa5a6b">MVT::v8f32</a> || <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca3de49ed37c33836e97340c33186c9136">MVT::v4f64</a>  ||
+<a name="l00213"></a>00213               <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf74fabd4f798ee5b63e5adb8b610a7c4">MVT::v32i8</a> || <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca751678573bf256a35799dfd23c0e143a">MVT::v16i16</a> ||
+<a name="l00214"></a>00214               <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cabace960037dd118c4a08237431d73b7d">MVT::v8i32</a> || <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca16a8c1f04762886c0a57a4d8b4500db1">MVT::v4i64</a>);
+<a name="l00215"></a>00215     }
+<a name="l00216"></a>00216 <span class="comment"></span>
+<a name="l00217"></a>00217 <span class="comment">    /// is512BitVector - Return true if this is a 512-bit vector type.</span>
+<a name="l00218"></a><a class="code" href="classllvm_1_1MVT.html#ae48519b414a222055344e4c4014db840">00218</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MVT.html#ae48519b414a222055344e4c4014db840" title="is512BitVector - Return true if this is a 512-bit vector type.">is512BitVector</a>()<span class="keyword"> const </span>{
+<a name="l00219"></a>00219       <span class="keywordflow">return</span> (<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca4c5a8a44331ca7bfa1400a74affc0d89">MVT::v8i64</a> || <a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca43880c339df7af47067f4b3fb6f7de03">MVT::v16i32</a>);
+<a name="l00220"></a>00220     }
+<a name="l00221"></a>00221 <span class="comment"></span>
+<a name="l00222"></a>00222 <span class="comment">    /// is1024BitVector - Return true if this is a 1024-bit vector type.</span>
+<a name="l00223"></a><a class="code" href="classllvm_1_1MVT.html#a8bf61726d976ebb27496e5ef3de2a532">00223</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MVT.html#a8bf61726d976ebb27496e5ef3de2a532" title="is1024BitVector - Return true if this is a 1024-bit vector type.">is1024BitVector</a>()<span class="keyword"> const </span>{
+<a name="l00224"></a>00224       <span class="keywordflow">return</span> (<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca42c7848a3ef138f5b7119e94b5e78723">MVT::v16i64</a>);
+<a name="l00225"></a>00225     }
+<a name="l00226"></a>00226 <span class="comment"></span>
+<a name="l00227"></a>00227 <span class="comment">    /// isPow2VectorType - Returns true if the given vector is a power of 2.</span>
+<a name="l00228"></a><a class="code" href="classllvm_1_1MVT.html#a5b62e8b595d2a3161297db1762a0d111">00228</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1MVT.html#a5b62e8b595d2a3161297db1762a0d111" title="isPow2VectorType - Returns true if the given vector is a power of 2.">isPow2VectorType</a>()<span class="keyword"> const </span>{
+<a name="l00229"></a>00229       <span class="keywordtype">unsigned</span> NElts = <a class="code" href="classllvm_1_1MVT.html#a4f7f4ae7e0f5444481b642d97bd380a6">getVectorNumElements</a>();
+<a name="l00230"></a>00230       <span class="keywordflow">return</span> !(NElts & (NElts - 1));
+<a name="l00231"></a>00231     }
+<a name="l00232"></a>00232 <span class="comment"></span>
+<a name="l00233"></a>00233 <span class="comment">    /// getPow2VectorType - Widens the length of the given vector MVT up to</span>
+<a name="l00234"></a>00234 <span class="comment">    /// the nearest power of 2 and returns that type.</span>
+<a name="l00235"></a><a class="code" href="classllvm_1_1MVT.html#a972499d357671ba69991e550a87b5a28">00235</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1MVT.html">MVT</a> <a class="code" href="classllvm_1_1MVT.html#a972499d357671ba69991e550a87b5a28">getPow2VectorType</a>()<span class="keyword"> const </span>{
+<a name="l00236"></a>00236       <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1MVT.html#a5b62e8b595d2a3161297db1762a0d111" title="isPow2VectorType - Returns true if the given vector is a power of 2.">isPow2VectorType</a>())
+<a name="l00237"></a>00237         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00238"></a>00238 
+<a name="l00239"></a>00239       <span class="keywordtype">unsigned</span> NElts = <a class="code" href="classllvm_1_1MVT.html#a4f7f4ae7e0f5444481b642d97bd380a6">getVectorNumElements</a>();
+<a name="l00240"></a>00240       <span class="keywordtype">unsigned</span> Pow2NElts = 1 << <a class="code" href="namespacellvm.html#a058782b98991f0719657d9008d3df41b">Log2_32_Ceil</a>(NElts);
+<a name="l00241"></a>00241       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#abf8d0055af4879a302268d3f834b2be5">MVT::getVectorVT</a>(<a class="code" href="classllvm_1_1MVT.html#a3b996ab27663c2ccc235d9e78e417bff">getVectorElementType</a>(), Pow2NElts);
+<a name="l00242"></a>00242     }
+<a name="l00243"></a>00243 <span class="comment"></span>
+<a name="l00244"></a>00244 <span class="comment">    /// getScalarType - If this is a vector type, return the element type,</span>
+<a name="l00245"></a>00245 <span class="comment">    /// otherwise return this.</span>
+<a name="l00246"></a><a class="code" href="classllvm_1_1MVT.html#a12423fca948bede7c072bca37627dda8">00246</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1MVT.html">MVT</a> <a class="code" href="classllvm_1_1MVT.html#a12423fca948bede7c072bca37627dda8">getScalarType</a>()<span class="keyword"> const </span>{
+<a name="l00247"></a>00247       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afa328609e9c6183e2bc34afe59b84d1d" title="isVector - Return true if this is a vector value type.">isVector</a>() ? <a class="code" href="classllvm_1_1MVT.html#a3b996ab27663c2ccc235d9e78e417bff">getVectorElementType</a>() : *<span class="keyword">this</span>;
+<a name="l00248"></a>00248     }
+<a name="l00249"></a>00249 
+<a name="l00250"></a><a class="code" href="classllvm_1_1MVT.html#a3b996ab27663c2ccc235d9e78e417bff">00250</a>     <a class="code" href="classllvm_1_1MVT.html">MVT</a> <a class="code" href="classllvm_1_1MVT.html#a3b996ab27663c2ccc235d9e78e417bff">getVectorElementType</a>()<span class="keyword"> const </span>{
+<a name="l00251"></a>00251       <span class="keywordflow">switch</span> (<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a>) {
+<a name="l00252"></a>00252       <span class="keywordflow">default</span>:
+<a name="l00253"></a>00253         <a class="code" href="ErrorHandling_8h.html#ace243f5c25697a1107cce46626b3dc94">llvm_unreachable</a>(<span class="stringliteral">"Not a vector MVT!"</span>);
+<a name="l00254"></a>00254       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca03eeae7529a0e3012956884ab96412bb">v2i1</a> :
+<a name="l00255"></a>00255       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca8b6cc6df8e802f1294219dd63944f164">v4i1</a> :
+<a name="l00256"></a>00256       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caad2a4353009c039ce3b4807c5dfc0759">v8i1</a> :
+<a name="l00257"></a>00257       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0ebe435f5423945489fecd670405e1a4">v16i1</a>: <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca85440bbdbba12de574c02e515444d3f4">i1</a>;
+<a name="l00258"></a>00258       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca467ea454a5aeb9501d4b6b1fa1baa250">v2i8</a> :
+<a name="l00259"></a>00259       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca2af129f2eeb16ebc7c0f2317083373cb">v4i8</a> :
+<a name="l00260"></a>00260       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca31f0af1863185f14e91278f7d567ae81">v8i8</a> :
+<a name="l00261"></a>00261       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cae3d1acb736016d92ec470470f1c26065">v16i8</a>:
+<a name="l00262"></a>00262       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf74fabd4f798ee5b63e5adb8b610a7c4">v32i8</a>: <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf777e086e32f60c0c87b460964eae7d0">i8</a>;
+<a name="l00263"></a>00263       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca2fbddaf5533297ffad6da0285219a7ac">v1i16</a>:
+<a name="l00264"></a>00264       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca802353221ba95e0fb06ef5e38dd79192">v2i16</a>:
+<a name="l00265"></a>00265       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca9b846c126ddfbe57601a050653a45bd3">v4i16</a>:
+<a name="l00266"></a>00266       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca97a9e92da302a5dd0ff02cf2587d7db3">v8i16</a>:
+<a name="l00267"></a>00267       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca751678573bf256a35799dfd23c0e143a">v16i16</a>: <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cab3be25b50efa0289a3c86fd50454b683">i16</a>;
+<a name="l00268"></a>00268       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca5b729c23e158ab1c69a86ae5dae85822">v1i32</a>:
+<a name="l00269"></a>00269       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca5782b71c5eafe937e8d31d7b62497d99">v2i32</a>:
+<a name="l00270"></a>00270       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca4b321667ee9d821362ffabd3c24d17b1">v4i32</a>:
+<a name="l00271"></a>00271       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cabace960037dd118c4a08237431d73b7d">v8i32</a>:
+<a name="l00272"></a>00272       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca43880c339df7af47067f4b3fb6f7de03">v16i32</a>: <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca04cca8bc12888d0a7238f55a6c550ad0">i32</a>;
+<a name="l00273"></a>00273       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf1e053801285fc066af033c62980eb33">v1i64</a>:
+<a name="l00274"></a>00274       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0f87637b0102ab8e9f085bf80358fabc">v2i64</a>:
+<a name="l00275"></a>00275       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca16a8c1f04762886c0a57a4d8b4500db1">v4i64</a>:
+<a name="l00276"></a>00276       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca4c5a8a44331ca7bfa1400a74affc0d89">v8i64</a>:
+<a name="l00277"></a>00277       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca42c7848a3ef138f5b7119e94b5e78723">v16i64</a>: <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca97f56253625b3fe7b371ce76722de4b8">i64</a>;
+<a name="l00278"></a>00278       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca766168a67c5954796304a42e6287f23e">v2f16</a>: <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca1e0cfc795f0b068229dcec6eecb69499">f16</a>;
+<a name="l00279"></a>00279       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0bc51b0308b6c057dc86d2a6bf4b6573">v2f32</a>:
+<a name="l00280"></a>00280       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca49615145fd6c985a530ec3743d053475">v4f32</a>:
+<a name="l00281"></a>00281       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caae3cb65654a7470c8fab62100baa5a6b">v8f32</a>: <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca586bae91020e6d8cccfe0995f527606f">f32</a>;
+<a name="l00282"></a>00282       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca83cf3151949430d75a783f36e2a1ffd8">v2f64</a>:
+<a name="l00283"></a>00283       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca3de49ed37c33836e97340c33186c9136">v4f64</a>: <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cac661c912350e3095c85ba75b8dbc17b1">f64</a>;
+<a name="l00284"></a>00284       }
+<a name="l00285"></a>00285     }
+<a name="l00286"></a>00286 
+<a name="l00287"></a><a class="code" href="classllvm_1_1MVT.html#a4f7f4ae7e0f5444481b642d97bd380a6">00287</a>     <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1MVT.html#a4f7f4ae7e0f5444481b642d97bd380a6">getVectorNumElements</a>()<span class="keyword"> const </span>{
+<a name="l00288"></a>00288       <span class="keywordflow">switch</span> (<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a>) {
+<a name="l00289"></a>00289       <span class="keywordflow">default</span>:
+<a name="l00290"></a>00290         <a class="code" href="ErrorHandling_8h.html#ace243f5c25697a1107cce46626b3dc94">llvm_unreachable</a>(<span class="stringliteral">"Not a vector MVT!"</span>);
+<a name="l00291"></a>00291       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf74fabd4f798ee5b63e5adb8b610a7c4">v32i8</a>: <span class="keywordflow">return</span> 32;
+<a name="l00292"></a>00292       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0ebe435f5423945489fecd670405e1a4">v16i1</a>:
+<a name="l00293"></a>00293       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cae3d1acb736016d92ec470470f1c26065">v16i8</a>:
+<a name="l00294"></a>00294       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca751678573bf256a35799dfd23c0e143a">v16i16</a>:
+<a name="l00295"></a>00295       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca43880c339df7af47067f4b3fb6f7de03">v16i32</a>:
+<a name="l00296"></a>00296       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca42c7848a3ef138f5b7119e94b5e78723">v16i64</a>:<span class="keywordflow">return</span> 16;
+<a name="l00297"></a>00297       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caad2a4353009c039ce3b4807c5dfc0759">v8i1</a>:
+<a name="l00298"></a>00298       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca31f0af1863185f14e91278f7d567ae81">v8i8</a> :
+<a name="l00299"></a>00299       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca97a9e92da302a5dd0ff02cf2587d7db3">v8i16</a>:
+<a name="l00300"></a>00300       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cabace960037dd118c4a08237431d73b7d">v8i32</a>:
+<a name="l00301"></a>00301       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca4c5a8a44331ca7bfa1400a74affc0d89">v8i64</a>:
+<a name="l00302"></a>00302       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caae3cb65654a7470c8fab62100baa5a6b">v8f32</a>: <span class="keywordflow">return</span> 8;
+<a name="l00303"></a>00303       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca8b6cc6df8e802f1294219dd63944f164">v4i1</a>:
+<a name="l00304"></a>00304       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca2af129f2eeb16ebc7c0f2317083373cb">v4i8</a>:
+<a name="l00305"></a>00305       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca9b846c126ddfbe57601a050653a45bd3">v4i16</a>:
+<a name="l00306"></a>00306       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca4b321667ee9d821362ffabd3c24d17b1">v4i32</a>:
+<a name="l00307"></a>00307       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca16a8c1f04762886c0a57a4d8b4500db1">v4i64</a>:
+<a name="l00308"></a>00308       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca49615145fd6c985a530ec3743d053475">v4f32</a>:
+<a name="l00309"></a>00309       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca3de49ed37c33836e97340c33186c9136">v4f64</a>: <span class="keywordflow">return</span> 4;
+<a name="l00310"></a>00310       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca03eeae7529a0e3012956884ab96412bb">v2i1</a>:
+<a name="l00311"></a>00311       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca467ea454a5aeb9501d4b6b1fa1baa250">v2i8</a>:
+<a name="l00312"></a>00312       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca802353221ba95e0fb06ef5e38dd79192">v2i16</a>:
+<a name="l00313"></a>00313       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca5782b71c5eafe937e8d31d7b62497d99">v2i32</a>:
+<a name="l00314"></a>00314       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0f87637b0102ab8e9f085bf80358fabc">v2i64</a>:
+<a name="l00315"></a>00315       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca766168a67c5954796304a42e6287f23e">v2f16</a>:
+<a name="l00316"></a>00316       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0bc51b0308b6c057dc86d2a6bf4b6573">v2f32</a>:
+<a name="l00317"></a>00317       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca83cf3151949430d75a783f36e2a1ffd8">v2f64</a>: <span class="keywordflow">return</span> 2;
+<a name="l00318"></a>00318       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca2fbddaf5533297ffad6da0285219a7ac">v1i16</a>:
+<a name="l00319"></a>00319       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca5b729c23e158ab1c69a86ae5dae85822">v1i32</a>:
+<a name="l00320"></a>00320       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf1e053801285fc066af033c62980eb33">v1i64</a>: <span class="keywordflow">return</span> 1;
+<a name="l00321"></a>00321       }
+<a name="l00322"></a>00322     }
+<a name="l00323"></a>00323 
+<a name="l00324"></a><a class="code" href="classllvm_1_1MVT.html#a423166b2b5d1010162dde0003e5ad09c">00324</a>     <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1MVT.html#a423166b2b5d1010162dde0003e5ad09c">getSizeInBits</a>()<span class="keyword"> const </span>{
+<a name="l00325"></a>00325       <span class="keywordflow">switch</span> (<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a>) {
+<a name="l00326"></a>00326       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca081c1b396411c5dbcf5c0d9491f4f6ec">iPTR</a>:
+<a name="l00327"></a>00327         <a class="code" href="ErrorHandling_8h.html#ace243f5c25697a1107cce46626b3dc94">llvm_unreachable</a>(<span class="stringliteral">"Value type size is target-dependent. Ask TLI."</span>);
+<a name="l00328"></a>00328       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca8a5b58b6cae5041fef5b561aa1f6a28b">iPTRAny</a>:
+<a name="l00329"></a>00329       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cac16d48502498a2bf95d57d62e8f23159">iAny</a>:
+<a name="l00330"></a>00330       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca56602959c9ddd3de680c980288c835b2">fAny</a>:
+<a name="l00331"></a>00331         <a class="code" href="ErrorHandling_8h.html#ace243f5c25697a1107cce46626b3dc94">llvm_unreachable</a>(<span class="stringliteral">"Value type is overloaded."</span>);
+<a name="l00332"></a>00332       <span class="keywordflow">default</span>:
+<a name="l00333"></a>00333         <a class="code" href="ErrorHandling_8h.html#ace243f5c25697a1107cce46626b3dc94">llvm_unreachable</a>(<span class="stringliteral">"getSizeInBits called on extended MVT."</span>);
+<a name="l00334"></a>00334       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca85440bbdbba12de574c02e515444d3f4">i1</a>  :  <span class="keywordflow">return</span> 1;
+<a name="l00335"></a>00335       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca03eeae7529a0e3012956884ab96412bb">v2i1</a>:  <span class="keywordflow">return</span> 2;
+<a name="l00336"></a>00336       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca8b6cc6df8e802f1294219dd63944f164">v4i1</a>:  <span class="keywordflow">return</span> 4;
+<a name="l00337"></a>00337       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf777e086e32f60c0c87b460964eae7d0">i8</a>  :
+<a name="l00338"></a>00338       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caad2a4353009c039ce3b4807c5dfc0759">v8i1</a>: <span class="keywordflow">return</span> 8;
+<a name="l00339"></a>00339       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cab3be25b50efa0289a3c86fd50454b683">i16</a> :
+<a name="l00340"></a>00340       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca1e0cfc795f0b068229dcec6eecb69499">f16</a>:
+<a name="l00341"></a>00341       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0ebe435f5423945489fecd670405e1a4">v16i1</a>:
+<a name="l00342"></a>00342       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca467ea454a5aeb9501d4b6b1fa1baa250">v2i8</a>:
+<a name="l00343"></a>00343       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca2fbddaf5533297ffad6da0285219a7ac">v1i16</a>: <span class="keywordflow">return</span> 16;
+<a name="l00344"></a>00344       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca586bae91020e6d8cccfe0995f527606f">f32</a> :
+<a name="l00345"></a>00345       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca04cca8bc12888d0a7238f55a6c550ad0">i32</a> :
+<a name="l00346"></a>00346       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca2af129f2eeb16ebc7c0f2317083373cb">v4i8</a>:
+<a name="l00347"></a>00347       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca802353221ba95e0fb06ef5e38dd79192">v2i16</a>:
+<a name="l00348"></a>00348       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca766168a67c5954796304a42e6287f23e">v2f16</a>: 
+<a name="l00349"></a>00349       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca5b729c23e158ab1c69a86ae5dae85822">v1i32</a>: <span class="keywordflow">return</span> 32;
+<a name="l00350"></a>00350       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca99d6935065e7c7a2fa53208e41e5b428">x86mmx</a>:
+<a name="l00351"></a>00351       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cac661c912350e3095c85ba75b8dbc17b1">f64</a> :
+<a name="l00352"></a>00352       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca97f56253625b3fe7b371ce76722de4b8">i64</a> :
+<a name="l00353"></a>00353       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca31f0af1863185f14e91278f7d567ae81">v8i8</a>:
+<a name="l00354"></a>00354       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca9b846c126ddfbe57601a050653a45bd3">v4i16</a>:
+<a name="l00355"></a>00355       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca5782b71c5eafe937e8d31d7b62497d99">v2i32</a>:
+<a name="l00356"></a>00356       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf1e053801285fc066af033c62980eb33">v1i64</a>:
+<a name="l00357"></a>00357       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0bc51b0308b6c057dc86d2a6bf4b6573">v2f32</a>: <span class="keywordflow">return</span> 64;
+<a name="l00358"></a>00358       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca6c5745e529b6b3534599c54d82bc4691">f80</a> :  <span class="keywordflow">return</span> 80;
+<a name="l00359"></a>00359       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caffc152986796ab57023f65116d2ee1b2">f128</a>:
+<a name="l00360"></a>00360       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca497ebfc1d05b772bf14cd530c950cf80">ppcf128</a>:
+<a name="l00361"></a>00361       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca586cbcab7599db1f50f3b6759115179b">i128</a>:
+<a name="l00362"></a>00362       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cae3d1acb736016d92ec470470f1c26065">v16i8</a>:
+<a name="l00363"></a>00363       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca97a9e92da302a5dd0ff02cf2587d7db3">v8i16</a>:
+<a name="l00364"></a>00364       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca4b321667ee9d821362ffabd3c24d17b1">v4i32</a>:
+<a name="l00365"></a>00365       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0f87637b0102ab8e9f085bf80358fabc">v2i64</a>:
+<a name="l00366"></a>00366       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca49615145fd6c985a530ec3743d053475">v4f32</a>:
+<a name="l00367"></a>00367       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca83cf3151949430d75a783f36e2a1ffd8">v2f64</a>: <span class="keywordflow">return</span> 128;
+<a name="l00368"></a>00368       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf74fabd4f798ee5b63e5adb8b610a7c4">v32i8</a>:
+<a name="l00369"></a>00369       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca751678573bf256a35799dfd23c0e143a">v16i16</a>:
+<a name="l00370"></a>00370       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cabace960037dd118c4a08237431d73b7d">v8i32</a>:
+<a name="l00371"></a>00371       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca16a8c1f04762886c0a57a4d8b4500db1">v4i64</a>:
+<a name="l00372"></a>00372       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caae3cb65654a7470c8fab62100baa5a6b">v8f32</a>:
+<a name="l00373"></a>00373       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca3de49ed37c33836e97340c33186c9136">v4f64</a>: <span class="keywordflow">return</span> 256;
+<a name="l00374"></a>00374       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca43880c339df7af47067f4b3fb6f7de03">v16i32</a>:
+<a name="l00375"></a>00375       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca4c5a8a44331ca7bfa1400a74affc0d89">v8i64</a>: <span class="keywordflow">return</span> 512;
+<a name="l00376"></a>00376       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca42c7848a3ef138f5b7119e94b5e78723">v16i64</a>:<span class="keywordflow">return</span> 1024;
+<a name="l00377"></a>00377       }
+<a name="l00378"></a>00378     }
+<a name="l00379"></a>00379 <span class="comment"></span>
+<a name="l00380"></a>00380 <span class="comment">    /// getStoreSize - Return the number of bytes overwritten by a store</span>
+<a name="l00381"></a>00381 <span class="comment">    /// of the specified value type.</span>
+<a name="l00382"></a><a class="code" href="classllvm_1_1MVT.html#aa85c8281ebfa4f0c2558a831eaf13a5d">00382</a> <span class="comment"></span>    <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1MVT.html#aa85c8281ebfa4f0c2558a831eaf13a5d">getStoreSize</a>()<span class="keyword"> const </span>{
+<a name="l00383"></a>00383       <span class="keywordflow">return</span> (<a class="code" href="classllvm_1_1MVT.html#a423166b2b5d1010162dde0003e5ad09c">getSizeInBits</a>() + 7) / 8;
+<a name="l00384"></a>00384     }
+<a name="l00385"></a>00385 <span class="comment"></span>
+<a name="l00386"></a>00386 <span class="comment">    /// getStoreSizeInBits - Return the number of bits overwritten by a store</span>
+<a name="l00387"></a>00387 <span class="comment">    /// of the specified value type.</span>
+<a name="l00388"></a><a class="code" href="classllvm_1_1MVT.html#a6825fa1f674910b0f37e6823320ab042">00388</a> <span class="comment"></span>    <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1MVT.html#a6825fa1f674910b0f37e6823320ab042">getStoreSizeInBits</a>()<span class="keyword"> const </span>{
+<a name="l00389"></a>00389       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#aa85c8281ebfa4f0c2558a831eaf13a5d">getStoreSize</a>() * 8;
+<a name="l00390"></a>00390     }
+<a name="l00391"></a>00391 
+<a name="l00392"></a><a class="code" href="classllvm_1_1MVT.html#a063563f5f87a96c0cd15403eeacf458e">00392</a>     <span class="keyword">static</span> <a class="code" href="classllvm_1_1MVT.html">MVT</a> <a class="code" href="classllvm_1_1MVT.html#a063563f5f87a96c0cd15403eeacf458e">getFloatingPointVT</a>(<span class="keywordtype">unsigned</span> BitWidth) {
+<a name="l00393"></a>00393       <span class="keywordflow">switch</span> (BitWidth) {
+<a name="l00394"></a>00394       <span class="keywordflow">default</span>:
+<a name="l00395"></a>00395         <a class="code" href="ErrorHandling_8h.html#ace243f5c25697a1107cce46626b3dc94">llvm_unreachable</a>(<span class="stringliteral">"Bad bit width!"</span>);
+<a name="l00396"></a>00396       <span class="keywordflow">case</span> 16:
+<a name="l00397"></a>00397         <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca1e0cfc795f0b068229dcec6eecb69499">MVT::f16</a>;
+<a name="l00398"></a>00398       <span class="keywordflow">case</span> 32:
+<a name="l00399"></a>00399         <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca586bae91020e6d8cccfe0995f527606f">MVT::f32</a>;
+<a name="l00400"></a>00400       <span class="keywordflow">case</span> 64:
+<a name="l00401"></a>00401         <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cac661c912350e3095c85ba75b8dbc17b1">MVT::f64</a>;
+<a name="l00402"></a>00402       <span class="keywordflow">case</span> 80:
+<a name="l00403"></a>00403         <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca6c5745e529b6b3534599c54d82bc4691">MVT::f80</a>;
+<a name="l00404"></a>00404       <span class="keywordflow">case</span> 128:
+<a name="l00405"></a>00405         <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caffc152986796ab57023f65116d2ee1b2">MVT::f128</a>;
+<a name="l00406"></a>00406       }
+<a name="l00407"></a>00407     }
+<a name="l00408"></a>00408 
+<a name="l00409"></a><a class="code" href="classllvm_1_1MVT.html#aded931e298cfa08b5038ca2b63c06bb8">00409</a>     <span class="keyword">static</span> <a class="code" href="classllvm_1_1MVT.html">MVT</a> <a class="code" href="classllvm_1_1MVT.html#aded931e298cfa08b5038ca2b63c06bb8">getIntegerVT</a>(<span class="keywordtype">unsigned</span> BitWidth) {
+<a name="l00410"></a>00410       <span class="keywordflow">switch</span> (BitWidth) {
+<a name="l00411"></a>00411       <span class="keywordflow">default</span>:
+<a name="l00412"></a>00412         <span class="keywordflow">return</span> (<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">MVT::SimpleValueType</a>)(<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf4f312520aaba4506b874a3f83fe2464">MVT::INVALID_SIMPLE_VALUE_TYPE</a>);
+<a name="l00413"></a>00413       <span class="keywordflow">case</span> 1:
+<a name="l00414"></a>00414         <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca85440bbdbba12de574c02e515444d3f4">MVT::i1</a>;
+<a name="l00415"></a>00415       <span class="keywordflow">case</span> 8:
+<a name="l00416"></a>00416         <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf777e086e32f60c0c87b460964eae7d0">MVT::i8</a>;
+<a name="l00417"></a>00417       <span class="keywordflow">case</span> 16:
+<a name="l00418"></a>00418         <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cab3be25b50efa0289a3c86fd50454b683">MVT::i16</a>;
+<a name="l00419"></a>00419       <span class="keywordflow">case</span> 32:
+<a name="l00420"></a>00420         <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca04cca8bc12888d0a7238f55a6c550ad0">MVT::i32</a>;
+<a name="l00421"></a>00421       <span class="keywordflow">case</span> 64:
+<a name="l00422"></a>00422         <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca97f56253625b3fe7b371ce76722de4b8">MVT::i64</a>;
+<a name="l00423"></a>00423       <span class="keywordflow">case</span> 128:
+<a name="l00424"></a>00424         <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca586cbcab7599db1f50f3b6759115179b">MVT::i128</a>;
+<a name="l00425"></a>00425       }
+<a name="l00426"></a>00426     }
+<a name="l00427"></a>00427 
+<a name="l00428"></a><a class="code" href="classllvm_1_1MVT.html#abf8d0055af4879a302268d3f834b2be5">00428</a>     <span class="keyword">static</span> <a class="code" href="classllvm_1_1MVT.html">MVT</a> <a class="code" href="classllvm_1_1MVT.html#abf8d0055af4879a302268d3f834b2be5">getVectorVT</a>(<a class="code" href="classllvm_1_1MVT.html">MVT</a> VT, <span class="keywordtype">unsigned</span> NumElements) {
+<a name="l00429"></a>00429       <span class="keywordflow">switch</span> (VT.<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a>) {
+<a name="l00430"></a>00430       <span class="keywordflow">default</span>:
+<a name="l00431"></a>00431         <span class="keywordflow">break</span>;
+<a name="l00432"></a>00432       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca85440bbdbba12de574c02e515444d3f4">MVT::i1</a>:
+<a name="l00433"></a>00433         <span class="keywordflow">if</span> (NumElements == 2)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca03eeae7529a0e3012956884ab96412bb">MVT::v2i1</a>;
+<a name="l00434"></a>00434         <span class="keywordflow">if</span> (NumElements == 4)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca8b6cc6df8e802f1294219dd63944f164">MVT::v4i1</a>;
+<a name="l00435"></a>00435         <span class="keywordflow">if</span> (NumElements == 8)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caad2a4353009c039ce3b4807c5dfc0759">MVT::v8i1</a>;
+<a name="l00436"></a>00436         <span class="keywordflow">if</span> (NumElements == 16) <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0ebe435f5423945489fecd670405e1a4">MVT::v16i1</a>;
+<a name="l00437"></a>00437         <span class="keywordflow">break</span>;
+<a name="l00438"></a>00438       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf777e086e32f60c0c87b460964eae7d0">MVT::i8</a>:
+<a name="l00439"></a>00439         <span class="keywordflow">if</span> (NumElements == 2)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca467ea454a5aeb9501d4b6b1fa1baa250">MVT::v2i8</a>;
+<a name="l00440"></a>00440         <span class="keywordflow">if</span> (NumElements == 4)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca2af129f2eeb16ebc7c0f2317083373cb">MVT::v4i8</a>;
+<a name="l00441"></a>00441         <span class="keywordflow">if</span> (NumElements == 8)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca31f0af1863185f14e91278f7d567ae81">MVT::v8i8</a>;
+<a name="l00442"></a>00442         <span class="keywordflow">if</span> (NumElements == 16) <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cae3d1acb736016d92ec470470f1c26065">MVT::v16i8</a>;
+<a name="l00443"></a>00443         <span class="keywordflow">if</span> (NumElements == 32) <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf74fabd4f798ee5b63e5adb8b610a7c4">MVT::v32i8</a>;
+<a name="l00444"></a>00444         <span class="keywordflow">break</span>;
+<a name="l00445"></a>00445       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cab3be25b50efa0289a3c86fd50454b683">MVT::i16</a>:
+<a name="l00446"></a>00446         <span class="keywordflow">if</span> (NumElements == 1)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca2fbddaf5533297ffad6da0285219a7ac">MVT::v1i16</a>;
+<a name="l00447"></a>00447         <span class="keywordflow">if</span> (NumElements == 2)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca802353221ba95e0fb06ef5e38dd79192">MVT::v2i16</a>;
+<a name="l00448"></a>00448         <span class="keywordflow">if</span> (NumElements == 4)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca9b846c126ddfbe57601a050653a45bd3">MVT::v4i16</a>;
+<a name="l00449"></a>00449         <span class="keywordflow">if</span> (NumElements == 8)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca97a9e92da302a5dd0ff02cf2587d7db3">MVT::v8i16</a>;
+<a name="l00450"></a>00450         <span class="keywordflow">if</span> (NumElements == 16) <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca751678573bf256a35799dfd23c0e143a">MVT::v16i16</a>;
+<a name="l00451"></a>00451         <span class="keywordflow">break</span>;
+<a name="l00452"></a>00452       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca04cca8bc12888d0a7238f55a6c550ad0">MVT::i32</a>:
+<a name="l00453"></a>00453         <span class="keywordflow">if</span> (NumElements == 1)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca5b729c23e158ab1c69a86ae5dae85822">MVT::v1i32</a>;
+<a name="l00454"></a>00454         <span class="keywordflow">if</span> (NumElements == 2)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca5782b71c5eafe937e8d31d7b62497d99">MVT::v2i32</a>;
+<a name="l00455"></a>00455         <span class="keywordflow">if</span> (NumElements == 4)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca4b321667ee9d821362ffabd3c24d17b1">MVT::v4i32</a>;
+<a name="l00456"></a>00456         <span class="keywordflow">if</span> (NumElements == 8)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cabace960037dd118c4a08237431d73b7d">MVT::v8i32</a>;
+<a name="l00457"></a>00457         <span class="keywordflow">if</span> (NumElements == 16) <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca43880c339df7af47067f4b3fb6f7de03">MVT::v16i32</a>;
+<a name="l00458"></a>00458         <span class="keywordflow">break</span>;
+<a name="l00459"></a>00459       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca97f56253625b3fe7b371ce76722de4b8">MVT::i64</a>:
+<a name="l00460"></a>00460         <span class="keywordflow">if</span> (NumElements == 1)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf1e053801285fc066af033c62980eb33">MVT::v1i64</a>;
+<a name="l00461"></a>00461         <span class="keywordflow">if</span> (NumElements == 2)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0f87637b0102ab8e9f085bf80358fabc">MVT::v2i64</a>;
+<a name="l00462"></a>00462         <span class="keywordflow">if</span> (NumElements == 4)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca16a8c1f04762886c0a57a4d8b4500db1">MVT::v4i64</a>;
+<a name="l00463"></a>00463         <span class="keywordflow">if</span> (NumElements == 8)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca4c5a8a44331ca7bfa1400a74affc0d89">MVT::v8i64</a>;
+<a name="l00464"></a>00464         <span class="keywordflow">if</span> (NumElements == 16) <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca42c7848a3ef138f5b7119e94b5e78723">MVT::v16i64</a>;
+<a name="l00465"></a>00465         <span class="keywordflow">break</span>;
+<a name="l00466"></a>00466       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca1e0cfc795f0b068229dcec6eecb69499">MVT::f16</a>:
+<a name="l00467"></a>00467         <span class="keywordflow">if</span> (NumElements == 2)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca766168a67c5954796304a42e6287f23e">MVT::v2f16</a>;
+<a name="l00468"></a>00468         <span class="keywordflow">break</span>;
+<a name="l00469"></a>00469       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca586bae91020e6d8cccfe0995f527606f">MVT::f32</a>:
+<a name="l00470"></a>00470         <span class="keywordflow">if</span> (NumElements == 2)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca0bc51b0308b6c057dc86d2a6bf4b6573">MVT::v2f32</a>;
+<a name="l00471"></a>00471         <span class="keywordflow">if</span> (NumElements == 4)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca49615145fd6c985a530ec3743d053475">MVT::v4f32</a>;
+<a name="l00472"></a>00472         <span class="keywordflow">if</span> (NumElements == 8)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caae3cb65654a7470c8fab62100baa5a6b">MVT::v8f32</a>;
+<a name="l00473"></a>00473         <span class="keywordflow">break</span>;
+<a name="l00474"></a>00474       <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cac661c912350e3095c85ba75b8dbc17b1">MVT::f64</a>:
+<a name="l00475"></a>00475         <span class="keywordflow">if</span> (NumElements == 2)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca83cf3151949430d75a783f36e2a1ffd8">MVT::v2f64</a>;
+<a name="l00476"></a>00476         <span class="keywordflow">if</span> (NumElements == 4)  <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca3de49ed37c33836e97340c33186c9136">MVT::v4f64</a>;
+<a name="l00477"></a>00477         <span class="keywordflow">break</span>;
+<a name="l00478"></a>00478       }
+<a name="l00479"></a>00479       <span class="keywordflow">return</span> (<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">MVT::SimpleValueType</a>)(<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf4f312520aaba4506b874a3f83fe2464">MVT::INVALID_SIMPLE_VALUE_TYPE</a>);
+<a name="l00480"></a>00480     }
+<a name="l00481"></a>00481   };
+<a name="l00482"></a>00482 
+<a name="l00483"></a>00483 <span class="comment"></span>
+<a name="l00484"></a>00484 <span class="comment">  /// EVT - Extended Value Type.  Capable of holding value types which are not</span>
+<a name="l00485"></a>00485 <span class="comment">  /// native for any processor (such as the i12345 type), as well as the types</span>
+<a name="l00486"></a>00486 <span class="comment">  /// a MVT can represent.</span>
+<a name="l00487"></a><a class="code" href="structllvm_1_1EVT.html">00487</a> <span class="comment"></span>  <span class="keyword">struct </span><a class="code" href="structllvm_1_1EVT.html">EVT</a> {
+<a name="l00488"></a>00488   <span class="keyword">private</span>:
+<a name="l00489"></a>00489     <a class="code" href="classllvm_1_1MVT.html">MVT</a> V;
+<a name="l00490"></a>00490     <a class="code" href="classllvm_1_1Type.html">Type</a> *LLVMTy;
+<a name="l00491"></a>00491 
+<a name="l00492"></a>00492   <span class="keyword">public</span>:
+<a name="l00493"></a><a class="code" href="structllvm_1_1EVT.html#a42721c1ac473e3244c2a6a4c5301c35a">00493</a>     <a class="code" href="structllvm_1_1EVT.html#a42721c1ac473e3244c2a6a4c5301c35a">EVT</a>() : V((<a class="code" href="classllvm_1_1MVT.html">MVT</a>::SimpleValueType)(<a class="code" href="classllvm_1_1MVT.html">MVT</a>::INVALID_SIMPLE_VALUE_TYPE)),
+<a name="l00494"></a>00494             LLVMTy(0) {}
+<a name="l00495"></a><a class="code" href="structllvm_1_1EVT.html#a1499d8365354ce84f170089aa060bd4d">00495</a>     <a class="code" href="structllvm_1_1EVT.html#a1499d8365354ce84f170089aa060bd4d">EVT</a>(<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">MVT::SimpleValueType</a> SVT) : V(SVT), LLVMTy(0) { }
+<a name="l00496"></a><a class="code" href="structllvm_1_1EVT.html#a08a262924b08021bb7cbcfeac137529d">00496</a>     <a class="code" href="structllvm_1_1EVT.html#a08a262924b08021bb7cbcfeac137529d">EVT</a>(<a class="code" href="classllvm_1_1MVT.html">MVT</a> S) : V(S), LLVMTy(0) {}
+<a name="l00497"></a>00497 
+<a name="l00498"></a><a class="code" href="structllvm_1_1EVT.html#ae20cfc1679d8c156a86260704fd740bc">00498</a>     <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#ae20cfc1679d8c156a86260704fd740bc">operator==</a>(<a class="code" href="structllvm_1_1EVT.html">EVT</a> VT)<span class="keyword"> const </span>{
+<a name="l00499"></a>00499       <span class="keywordflow">return</span> !(*<span class="keyword">this</span> != VT);
+<a name="l00500"></a>00500     }
+<a name="l00501"></a><a class="code" href="structllvm_1_1EVT.html#acdcf1da9a8af687c815e5e0e132821de">00501</a>     <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#acdcf1da9a8af687c815e5e0e132821de">operator!=</a>(<a class="code" href="structllvm_1_1EVT.html">EVT</a> VT)<span class="keyword"> const </span>{
+<a name="l00502"></a>00502       <span class="keywordflow">if</span> (V.<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> != VT.V.<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a>)
+<a name="l00503"></a>00503         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00504"></a>00504       <span class="keywordflow">if</span> (V.<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf4f312520aaba4506b874a3f83fe2464">MVT::INVALID_SIMPLE_VALUE_TYPE</a>)
+<a name="l00505"></a>00505         <span class="keywordflow">return</span> LLVMTy != VT.LLVMTy;
+<a name="l00506"></a>00506       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00507"></a>00507     }
+<a name="l00508"></a>00508 <span class="comment"></span>
+<a name="l00509"></a>00509 <span class="comment">    /// getFloatingPointVT - Returns the EVT that represents a floating point</span>
+<a name="l00510"></a>00510 <span class="comment">    /// type with the given number of bits.  There are two floating point types</span>
+<a name="l00511"></a>00511 <span class="comment">    /// with 128 bits - this returns f128 rather than ppcf128.</span>
+<a name="l00512"></a><a class="code" href="structllvm_1_1EVT.html#a9a76e0197f5c34a3e15ba92fbdc9c8b4">00512</a> <span class="comment"></span>    <span class="keyword">static</span> <a class="code" href="structllvm_1_1EVT.html">EVT</a> <a class="code" href="structllvm_1_1EVT.html#a9a76e0197f5c34a3e15ba92fbdc9c8b4">getFloatingPointVT</a>(<span class="keywordtype">unsigned</span> BitWidth) {
+<a name="l00513"></a>00513       <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#a9a76e0197f5c34a3e15ba92fbdc9c8b4">MVT::getFloatingPointVT</a>(BitWidth);
+<a name="l00514"></a>00514     }
+<a name="l00515"></a>00515 <span class="comment"></span>
+<a name="l00516"></a>00516 <span class="comment">    /// getIntegerVT - Returns the EVT that represents an integer with the given</span>
+<a name="l00517"></a>00517 <span class="comment">    /// number of bits.</span>
+<a name="l00518"></a><a class="code" href="structllvm_1_1EVT.html#a752372e170e4e7c595bf8810bb52adf2">00518</a> <span class="comment"></span>    <span class="keyword">static</span> <a class="code" href="structllvm_1_1EVT.html">EVT</a> <a class="code" href="structllvm_1_1EVT.html#a752372e170e4e7c595bf8810bb52adf2">getIntegerVT</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &Context, <span class="keywordtype">unsigned</span> BitWidth) {
+<a name="l00519"></a>00519       <a class="code" href="classllvm_1_1MVT.html">MVT</a> M = <a class="code" href="structllvm_1_1EVT.html#a752372e170e4e7c595bf8810bb52adf2">MVT::getIntegerVT</a>(BitWidth);
+<a name="l00520"></a>00520       <span class="keywordflow">if</span> (M.<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> != <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf4f312520aaba4506b874a3f83fe2464">MVT::INVALID_SIMPLE_VALUE_TYPE</a>)
+<a name="l00521"></a>00521         <span class="keywordflow">return</span> M;
+<a name="l00522"></a>00522       <span class="keywordflow">return</span> getExtendedIntegerVT(Context, BitWidth);
+<a name="l00523"></a>00523     }
+<a name="l00524"></a>00524 <span class="comment"></span>
+<a name="l00525"></a>00525 <span class="comment">    /// getVectorVT - Returns the EVT that represents a vector NumElements in</span>
+<a name="l00526"></a>00526 <span class="comment">    /// length, where each element is of type VT.</span>
+<a name="l00527"></a><a class="code" href="structllvm_1_1EVT.html#a18c2edf1939f6e87f1e586b815f398cd">00527</a> <span class="comment"></span>    <span class="keyword">static</span> <a class="code" href="structllvm_1_1EVT.html">EVT</a> <a class="code" href="structllvm_1_1EVT.html#a18c2edf1939f6e87f1e586b815f398cd">getVectorVT</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &Context, <a class="code" href="structllvm_1_1EVT.html">EVT</a> VT, <span class="keywordtype">unsigned</span> NumElements) {
+<a name="l00528"></a>00528       <a class="code" href="classllvm_1_1MVT.html">MVT</a> M = <a class="code" href="structllvm_1_1EVT.html#a18c2edf1939f6e87f1e586b815f398cd">MVT::getVectorVT</a>(VT.V, NumElements);
+<a name="l00529"></a>00529       <span class="keywordflow">if</span> (M.<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> != <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf4f312520aaba4506b874a3f83fe2464">MVT::INVALID_SIMPLE_VALUE_TYPE</a>)
+<a name="l00530"></a>00530         <span class="keywordflow">return</span> M;
+<a name="l00531"></a>00531       <span class="keywordflow">return</span> getExtendedVectorVT(Context, VT, NumElements);
+<a name="l00532"></a>00532     }
+<a name="l00533"></a>00533 <span class="comment"></span>
+<a name="l00534"></a>00534 <span class="comment">    /// changeVectorElementTypeToInteger - Return a vector with the same number</span>
+<a name="l00535"></a>00535 <span class="comment">    /// of elements as this vector, but with the element type converted to an</span>
+<a name="l00536"></a>00536 <span class="comment">    /// integer type with the same bitwidth.</span>
+<a name="l00537"></a><a class="code" href="structllvm_1_1EVT.html#a2eed75ff7477295264c8320af1630bbb">00537</a> <span class="comment"></span>    <a class="code" href="structllvm_1_1EVT.html">EVT</a> <a class="code" href="structllvm_1_1EVT.html#a2eed75ff7477295264c8320af1630bbb">changeVectorElementTypeToInteger</a>()<span class="keyword"> const </span>{
+<a name="l00538"></a>00538       <span class="keywordflow">if</span> (!<a class="code" href="structllvm_1_1EVT.html#ac6f053514ba29bdf3b7f051f643dabe5">isSimple</a>())
+<a name="l00539"></a>00539         <span class="keywordflow">return</span> changeExtendedVectorElementTypeToInteger();
+<a name="l00540"></a>00540       <a class="code" href="classllvm_1_1MVT.html">MVT</a> EltTy = <a class="code" href="structllvm_1_1EVT.html#a5b45953b758fdfe88452530f7d8371bc">getSimpleVT</a>().<a class="code" href="classllvm_1_1MVT.html#a3b996ab27663c2ccc235d9e78e417bff">getVectorElementType</a>();
+<a name="l00541"></a>00541       <span class="keywordtype">unsigned</span> BitWidth = EltTy.<a class="code" href="classllvm_1_1MVT.html#a423166b2b5d1010162dde0003e5ad09c">getSizeInBits</a>();
+<a name="l00542"></a>00542       <a class="code" href="classllvm_1_1MVT.html">MVT</a> IntTy = <a class="code" href="structllvm_1_1EVT.html#a752372e170e4e7c595bf8810bb52adf2">MVT::getIntegerVT</a>(BitWidth);
+<a name="l00543"></a>00543       <a class="code" href="classllvm_1_1MVT.html">MVT</a> VecTy = <a class="code" href="structllvm_1_1EVT.html#a18c2edf1939f6e87f1e586b815f398cd">MVT::getVectorVT</a>(IntTy, <a class="code" href="structllvm_1_1EVT.html#a42bca41d2438197c12b6db2c710a959c">getVectorNumElements</a>());
+<a name="l00544"></a>00544       assert(VecTy != <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf4f312520aaba4506b874a3f83fe2464">MVT::INVALID_SIMPLE_VALUE_TYPE</a> &&
+<a name="l00545"></a>00545              <span class="stringliteral">"Simple vector VT not representable by simple integer vector VT!"</span>);
+<a name="l00546"></a>00546       <span class="keywordflow">return</span> VecTy;
+<a name="l00547"></a>00547     }
+<a name="l00548"></a>00548 <span class="comment"></span>
+<a name="l00549"></a>00549 <span class="comment">    /// isSimple - Test if the given EVT is simple (as opposed to being</span>
+<a name="l00550"></a>00550 <span class="comment">    /// extended).</span>
+<a name="l00551"></a><a class="code" href="structllvm_1_1EVT.html#ac6f053514ba29bdf3b7f051f643dabe5">00551</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#ac6f053514ba29bdf3b7f051f643dabe5">isSimple</a>()<span class="keyword"> const </span>{
+<a name="l00552"></a>00552       <span class="keywordflow">return</span> V.<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> <= <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca9be8e1c61ee4934e4722c6c84b5665f3">MVT::LastSimpleValueType</a>;
+<a name="l00553"></a>00553     }
+<a name="l00554"></a>00554 <span class="comment"></span>
+<a name="l00555"></a>00555 <span class="comment">    /// isExtended - Test if the given EVT is extended (as opposed to</span>
+<a name="l00556"></a>00556 <span class="comment">    /// being simple).</span>
+<a name="l00557"></a><a class="code" href="structllvm_1_1EVT.html#a0ca9e22c58f23f19b5c3eb010318b699">00557</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#a0ca9e22c58f23f19b5c3eb010318b699">isExtended</a>()<span class="keyword"> const </span>{
+<a name="l00558"></a>00558       <span class="keywordflow">return</span> !<a class="code" href="structllvm_1_1EVT.html#ac6f053514ba29bdf3b7f051f643dabe5">isSimple</a>();
+<a name="l00559"></a>00559     }
+<a name="l00560"></a>00560 <span class="comment"></span>
+<a name="l00561"></a>00561 <span class="comment">    /// isFloatingPoint - Return true if this is a FP, or a vector FP type.</span>
+<a name="l00562"></a><a class="code" href="structllvm_1_1EVT.html#afc4147764cdb5599c67f747813ef9bdc">00562</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#afc4147764cdb5599c67f747813ef9bdc" title="isFloatingPoint - Return true if this is a FP, or a vector FP type.">isFloatingPoint</a>()<span class="keyword"> const </span>{
+<a name="l00563"></a>00563       <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#ac6f053514ba29bdf3b7f051f643dabe5">isSimple</a>() ? V.<a class="code" href="classllvm_1_1MVT.html#ab1311d6d51755d404adc348ad4aeaaad" title="isFloatingPoint - Return true if this is a FP, or a vector FP type.">isFloatingPoint</a>() : isExtendedFloatingPoint();
+<a name="l00564"></a>00564     }
+<a name="l00565"></a>00565 <span class="comment"></span>
+<a name="l00566"></a>00566 <span class="comment">    /// isInteger - Return true if this is an integer, or a vector integer type.</span>
+<a name="l00567"></a><a class="code" href="structllvm_1_1EVT.html#a8cc407ac00df4edd4ec4d5168d6ecb26">00567</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#a8cc407ac00df4edd4ec4d5168d6ecb26" title="isInteger - Return true if this is an integer, or a vector integer type.">isInteger</a>()<span class="keyword"> const </span>{
+<a name="l00568"></a>00568       <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#ac6f053514ba29bdf3b7f051f643dabe5">isSimple</a>() ? V.<a class="code" href="classllvm_1_1MVT.html#a3d312d3d7b24b6684b07792888bc5efd" title="isInteger - Return true if this is an integer, or a vector integer type.">isInteger</a>() : isExtendedInteger();
+<a name="l00569"></a>00569     }
+<a name="l00570"></a>00570 <span class="comment"></span>
+<a name="l00571"></a>00571 <span class="comment">    /// isVector - Return true if this is a vector value type.</span>
+<a name="l00572"></a><a class="code" href="structllvm_1_1EVT.html#a73f7c824cad61a47c21bf6d652ae2fd7">00572</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#a73f7c824cad61a47c21bf6d652ae2fd7" title="isVector - Return true if this is a vector value type.">isVector</a>()<span class="keyword"> const </span>{
+<a name="l00573"></a>00573       <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#ac6f053514ba29bdf3b7f051f643dabe5">isSimple</a>() ? V.<a class="code" href="classllvm_1_1MVT.html#afa328609e9c6183e2bc34afe59b84d1d" title="isVector - Return true if this is a vector value type.">isVector</a>() : isExtendedVector();
+<a name="l00574"></a>00574     }
+<a name="l00575"></a>00575 <span class="comment"></span>
+<a name="l00576"></a>00576 <span class="comment">    /// is16BitVector - Return true if this is a 16-bit vector type.</span>
+<a name="l00577"></a><a class="code" href="structllvm_1_1EVT.html#ae27e218b48f1e618038af260b7d0265e">00577</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#ae27e218b48f1e618038af260b7d0265e" title="is16BitVector - Return true if this is a 16-bit vector type.">is16BitVector</a>()<span class="keyword"> const </span>{
+<a name="l00578"></a>00578       <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#ac6f053514ba29bdf3b7f051f643dabe5">isSimple</a>() ? V.<a class="code" href="classllvm_1_1MVT.html#aaf2ee5eaf25d3adbad7437e08f433892" title="is16BitVector - Return true if this is a 16-bit vector type.">is16BitVector</a>() : isExtended16BitVector();
+<a name="l00579"></a>00579     }
+<a name="l00580"></a>00580 <span class="comment"></span>
+<a name="l00581"></a>00581 <span class="comment">    /// is32BitVector - Return true if this is a 32-bit vector type.</span>
+<a name="l00582"></a><a class="code" href="structllvm_1_1EVT.html#a4c1d6ef4fb1661bc491a234c2c2e6dd4">00582</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#a4c1d6ef4fb1661bc491a234c2c2e6dd4" title="is32BitVector - Return true if this is a 32-bit vector type.">is32BitVector</a>()<span class="keyword"> const </span>{
+<a name="l00583"></a>00583       <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#ac6f053514ba29bdf3b7f051f643dabe5">isSimple</a>() ? V.<a class="code" href="classllvm_1_1MVT.html#a622e06c58b0da779511d9a19d4fe7381" title="is32BitVector - Return true if this is a 32-bit vector type.">is32BitVector</a>() : isExtended32BitVector();
+<a name="l00584"></a>00584     }
+<a name="l00585"></a>00585 <span class="comment"></span>
+<a name="l00586"></a>00586 <span class="comment">    /// is64BitVector - Return true if this is a 64-bit vector type.</span>
+<a name="l00587"></a><a class="code" href="structllvm_1_1EVT.html#a2b1f43f2f2563290b65f7e7e6bb71b0b">00587</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#a2b1f43f2f2563290b65f7e7e6bb71b0b" title="is64BitVector - Return true if this is a 64-bit vector type.">is64BitVector</a>()<span class="keyword"> const </span>{
+<a name="l00588"></a>00588       <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#ac6f053514ba29bdf3b7f051f643dabe5">isSimple</a>() ? V.<a class="code" href="classllvm_1_1MVT.html#af5434e2ff166c79dce43ebf381b3787f" title="is64BitVector - Return true if this is a 64-bit vector type.">is64BitVector</a>() : isExtended64BitVector();
+<a name="l00589"></a>00589     }
+<a name="l00590"></a>00590 <span class="comment"></span>
+<a name="l00591"></a>00591 <span class="comment">    /// is128BitVector - Return true if this is a 128-bit vector type.</span>
+<a name="l00592"></a><a class="code" href="structllvm_1_1EVT.html#aea7fd4e11a4194a9df590e2975e4d939">00592</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#aea7fd4e11a4194a9df590e2975e4d939" title="is128BitVector - Return true if this is a 128-bit vector type.">is128BitVector</a>()<span class="keyword"> const </span>{
+<a name="l00593"></a>00593       <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#ac6f053514ba29bdf3b7f051f643dabe5">isSimple</a>() ? V.<a class="code" href="classllvm_1_1MVT.html#aed34d098cbe75820e27c939e86a1edae" title="is128BitVector - Return true if this is a 128-bit vector type.">is128BitVector</a>() : isExtended128BitVector();
+<a name="l00594"></a>00594     }
+<a name="l00595"></a>00595 <span class="comment"></span>
+<a name="l00596"></a>00596 <span class="comment">    /// is256BitVector - Return true if this is a 256-bit vector type.</span>
+<a name="l00597"></a><a class="code" href="structllvm_1_1EVT.html#a654ee39088ca2eeeab65b721276860ef">00597</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#a654ee39088ca2eeeab65b721276860ef" title="is256BitVector - Return true if this is a 256-bit vector type.">is256BitVector</a>()<span class="keyword"> const </span>{
+<a name="l00598"></a>00598       <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#ac6f053514ba29bdf3b7f051f643dabe5">isSimple</a>() ? V.<a class="code" href="classllvm_1_1MVT.html#a0079eaa7a60c51981781bb3963897750" title="is256BitVector - Return true if this is a 256-bit vector type.">is256BitVector</a>() : isExtended256BitVector();
+<a name="l00599"></a>00599     }
+<a name="l00600"></a>00600 <span class="comment"></span>
+<a name="l00601"></a>00601 <span class="comment">    /// is512BitVector - Return true if this is a 512-bit vector type.</span>
+<a name="l00602"></a><a class="code" href="structllvm_1_1EVT.html#a50eb9dab6533a386cafae3473173217d">00602</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#a50eb9dab6533a386cafae3473173217d" title="is512BitVector - Return true if this is a 512-bit vector type.">is512BitVector</a>()<span class="keyword"> const </span>{
+<a name="l00603"></a>00603       <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#ac6f053514ba29bdf3b7f051f643dabe5">isSimple</a>() ? V.<a class="code" href="classllvm_1_1MVT.html#ae48519b414a222055344e4c4014db840" title="is512BitVector - Return true if this is a 512-bit vector type.">is512BitVector</a>() : isExtended512BitVector();
+<a name="l00604"></a>00604     }
+<a name="l00605"></a>00605 <span class="comment"></span>
+<a name="l00606"></a>00606 <span class="comment">    /// is1024BitVector - Return true if this is a 1024-bit vector type.</span>
+<a name="l00607"></a><a class="code" href="structllvm_1_1EVT.html#abaeb28e85cef52e33d4573d671cb6d69">00607</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#abaeb28e85cef52e33d4573d671cb6d69" title="is1024BitVector - Return true if this is a 1024-bit vector type.">is1024BitVector</a>()<span class="keyword"> const </span>{
+<a name="l00608"></a>00608       <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#ac6f053514ba29bdf3b7f051f643dabe5">isSimple</a>() ? V.<a class="code" href="classllvm_1_1MVT.html#a8bf61726d976ebb27496e5ef3de2a532" title="is1024BitVector - Return true if this is a 1024-bit vector type.">is1024BitVector</a>() : isExtended1024BitVector();
+<a name="l00609"></a>00609     }
+<a name="l00610"></a>00610 <span class="comment"></span>
+<a name="l00611"></a>00611 <span class="comment">    /// isOverloaded - Return true if this is an overloaded type for TableGen.</span>
+<a name="l00612"></a><a class="code" href="structllvm_1_1EVT.html#a1ab11ac18459bd75f5aab74ba2a3aca1">00612</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#a1ab11ac18459bd75f5aab74ba2a3aca1" title="isOverloaded - Return true if this is an overloaded type for TableGen.">isOverloaded</a>()<span class="keyword"> const </span>{
+<a name="l00613"></a>00613       <span class="keywordflow">return</span> (V==<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50cac16d48502498a2bf95d57d62e8f23159">MVT::iAny</a> || V==<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca56602959c9ddd3de680c980288c835b2">MVT::fAny</a> || V==<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca391b65d00cc95a5535d0dc05df2a158a">MVT::vAny</a> || V==<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca8a5b58b6cae5041fef5b561aa1f6a28b">MVT::iPTRAny</a>);
+<a name="l00614"></a>00614     }
+<a name="l00615"></a>00615 <span class="comment"></span>
+<a name="l00616"></a>00616 <span class="comment">    /// isByteSized - Return true if the bit size is a multiple of 8.</span>
+<a name="l00617"></a><a class="code" href="structllvm_1_1EVT.html#a0e47d5994d9b6fd12125d13d20867ceb">00617</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#a0e47d5994d9b6fd12125d13d20867ceb" title="isByteSized - Return true if the bit size is a multiple of 8.">isByteSized</a>()<span class="keyword"> const </span>{
+<a name="l00618"></a>00618       <span class="keywordflow">return</span> (<a class="code" href="structllvm_1_1EVT.html#a8cca25ddb3be86ad23567dc8d36dacd3" title="getSizeInBits - Return the size of the specified value type in bits.">getSizeInBits</a>() & 7) == 0;
+<a name="l00619"></a>00619     }
+<a name="l00620"></a>00620 <span class="comment"></span>
+<a name="l00621"></a>00621 <span class="comment">    /// isRound - Return true if the size is a power-of-two number of bytes.</span>
+<a name="l00622"></a><a class="code" href="structllvm_1_1EVT.html#af5afc8257ed5adc0f55be3a9f7587267">00622</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#af5afc8257ed5adc0f55be3a9f7587267" title="isRound - Return true if the size is a power-of-two number of bytes.">isRound</a>()<span class="keyword"> const </span>{
+<a name="l00623"></a>00623       <span class="keywordtype">unsigned</span> BitSize = <a class="code" href="structllvm_1_1EVT.html#a8cca25ddb3be86ad23567dc8d36dacd3" title="getSizeInBits - Return the size of the specified value type in bits.">getSizeInBits</a>();
+<a name="l00624"></a>00624       <span class="keywordflow">return</span> BitSize >= 8 && !(BitSize & (BitSize - 1));
+<a name="l00625"></a>00625     }
+<a name="l00626"></a>00626 <span class="comment"></span>
+<a name="l00627"></a>00627 <span class="comment">    /// bitsEq - Return true if this has the same number of bits as VT.</span>
+<a name="l00628"></a><a class="code" href="structllvm_1_1EVT.html#ab8f0e414facbed711a9754687bdcd23f">00628</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#ab8f0e414facbed711a9754687bdcd23f" title="bitsEq - Return true if this has the same number of bits as VT.">bitsEq</a>(<a class="code" href="structllvm_1_1EVT.html">EVT</a> VT)<span class="keyword"> const </span>{
+<a name="l00629"></a>00629       <span class="keywordflow">if</span> (EVT::operator==(VT)) <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00630"></a>00630       <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#a8cca25ddb3be86ad23567dc8d36dacd3" title="getSizeInBits - Return the size of the specified value type in bits.">getSizeInBits</a>() == VT.<a class="code" href="structllvm_1_1EVT.html#a8cca25ddb3be86ad23567dc8d36dacd3" title="getSizeInBits - Return the size of the specified value type in bits.">getSizeInBits</a>();
+<a name="l00631"></a>00631     }
+<a name="l00632"></a>00632 <span class="comment"></span>
+<a name="l00633"></a>00633 <span class="comment">    /// bitsGT - Return true if this has more bits than VT.</span>
+<a name="l00634"></a><a class="code" href="structllvm_1_1EVT.html#ac267a86695d58fe541ef96f8c60c1b0f">00634</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#ac267a86695d58fe541ef96f8c60c1b0f" title="bitsGT - Return true if this has more bits than VT.">bitsGT</a>(<a class="code" href="structllvm_1_1EVT.html">EVT</a> VT)<span class="keyword"> const </span>{
+<a name="l00635"></a>00635       <span class="keywordflow">if</span> (EVT::operator==(VT)) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00636"></a>00636       <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#a8cca25ddb3be86ad23567dc8d36dacd3" title="getSizeInBits - Return the size of the specified value type in bits.">getSizeInBits</a>() > VT.<a class="code" href="structllvm_1_1EVT.html#a8cca25ddb3be86ad23567dc8d36dacd3" title="getSizeInBits - Return the size of the specified value type in bits.">getSizeInBits</a>();
+<a name="l00637"></a>00637     }
+<a name="l00638"></a>00638 <span class="comment"></span>
+<a name="l00639"></a>00639 <span class="comment">    /// bitsGE - Return true if this has no less bits than VT.</span>
+<a name="l00640"></a><a class="code" href="structllvm_1_1EVT.html#a7027dbab36b90c5ccc2a34323c41bdfe">00640</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#a7027dbab36b90c5ccc2a34323c41bdfe" title="bitsGE - Return true if this has no less bits than VT.">bitsGE</a>(<a class="code" href="structllvm_1_1EVT.html">EVT</a> VT)<span class="keyword"> const </span>{
+<a name="l00641"></a>00641       <span class="keywordflow">if</span> (EVT::operator==(VT)) <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00642"></a>00642       <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#a8cca25ddb3be86ad23567dc8d36dacd3" title="getSizeInBits - Return the size of the specified value type in bits.">getSizeInBits</a>() >= VT.<a class="code" href="structllvm_1_1EVT.html#a8cca25ddb3be86ad23567dc8d36dacd3" title="getSizeInBits - Return the size of the specified value type in bits.">getSizeInBits</a>();
+<a name="l00643"></a>00643     }
+<a name="l00644"></a>00644 <span class="comment"></span>
+<a name="l00645"></a>00645 <span class="comment">    /// bitsLT - Return true if this has less bits than VT.</span>
+<a name="l00646"></a><a class="code" href="structllvm_1_1EVT.html#a5ebe5227fe53e0dcf4102a6ebf1594a2">00646</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#a5ebe5227fe53e0dcf4102a6ebf1594a2" title="bitsLT - Return true if this has less bits than VT.">bitsLT</a>(<a class="code" href="structllvm_1_1EVT.html">EVT</a> VT)<span class="keyword"> const </span>{
+<a name="l00647"></a>00647       <span class="keywordflow">if</span> (EVT::operator==(VT)) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00648"></a>00648       <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#a8cca25ddb3be86ad23567dc8d36dacd3" title="getSizeInBits - Return the size of the specified value type in bits.">getSizeInBits</a>() < VT.<a class="code" href="structllvm_1_1EVT.html#a8cca25ddb3be86ad23567dc8d36dacd3" title="getSizeInBits - Return the size of the specified value type in bits.">getSizeInBits</a>();
+<a name="l00649"></a>00649     }
+<a name="l00650"></a>00650 <span class="comment"></span>
+<a name="l00651"></a>00651 <span class="comment">    /// bitsLE - Return true if this has no more bits than VT.</span>
+<a name="l00652"></a><a class="code" href="structllvm_1_1EVT.html#a3751db99f9ba955c570ecbd1aff0b6fd">00652</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#a3751db99f9ba955c570ecbd1aff0b6fd" title="bitsLE - Return true if this has no more bits than VT.">bitsLE</a>(<a class="code" href="structllvm_1_1EVT.html">EVT</a> VT)<span class="keyword"> const </span>{
+<a name="l00653"></a>00653       <span class="keywordflow">if</span> (EVT::operator==(VT)) <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00654"></a>00654       <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#a8cca25ddb3be86ad23567dc8d36dacd3" title="getSizeInBits - Return the size of the specified value type in bits.">getSizeInBits</a>() <= VT.<a class="code" href="structllvm_1_1EVT.html#a8cca25ddb3be86ad23567dc8d36dacd3" title="getSizeInBits - Return the size of the specified value type in bits.">getSizeInBits</a>();
+<a name="l00655"></a>00655     }
+<a name="l00656"></a>00656 
+<a name="l00657"></a>00657 <span class="comment"></span>
+<a name="l00658"></a>00658 <span class="comment">    /// getSimpleVT - Return the SimpleValueType held in the specified</span>
+<a name="l00659"></a>00659 <span class="comment">    /// simple EVT.</span>
+<a name="l00660"></a><a class="code" href="structllvm_1_1EVT.html#a5b45953b758fdfe88452530f7d8371bc">00660</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1MVT.html">MVT</a> <a class="code" href="structllvm_1_1EVT.html#a5b45953b758fdfe88452530f7d8371bc">getSimpleVT</a>()<span class="keyword"> const </span>{
+<a name="l00661"></a>00661       assert(<a class="code" href="structllvm_1_1EVT.html#ac6f053514ba29bdf3b7f051f643dabe5">isSimple</a>() && <span class="stringliteral">"Expected a SimpleValueType!"</span>);
+<a name="l00662"></a>00662       <span class="keywordflow">return</span> V;
+<a name="l00663"></a>00663     }
+<a name="l00664"></a>00664 <span class="comment"></span>
+<a name="l00665"></a>00665 <span class="comment">    /// getScalarType - If this is a vector type, return the element type,</span>
+<a name="l00666"></a>00666 <span class="comment">    /// otherwise return this.</span>
+<a name="l00667"></a><a class="code" href="structllvm_1_1EVT.html#a15be9767d0aad93fe5dcb60b7b7a78da">00667</a> <span class="comment"></span>    <a class="code" href="structllvm_1_1EVT.html">EVT</a> <a class="code" href="structllvm_1_1EVT.html#a15be9767d0aad93fe5dcb60b7b7a78da">getScalarType</a>()<span class="keyword"> const </span>{
+<a name="l00668"></a>00668       <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#a73f7c824cad61a47c21bf6d652ae2fd7" title="isVector - Return true if this is a vector value type.">isVector</a>() ? <a class="code" href="structllvm_1_1EVT.html#a3a07c062cc9330acd8e8c4e3930cbb25">getVectorElementType</a>() : *<span class="keyword">this</span>;
+<a name="l00669"></a>00669     }
+<a name="l00670"></a>00670 <span class="comment"></span>
+<a name="l00671"></a>00671 <span class="comment">    /// getVectorElementType - Given a vector type, return the type of</span>
+<a name="l00672"></a>00672 <span class="comment">    /// each element.</span>
+<a name="l00673"></a><a class="code" href="structllvm_1_1EVT.html#a3a07c062cc9330acd8e8c4e3930cbb25">00673</a> <span class="comment"></span>    <a class="code" href="structllvm_1_1EVT.html">EVT</a> <a class="code" href="structllvm_1_1EVT.html#a3a07c062cc9330acd8e8c4e3930cbb25">getVectorElementType</a>()<span class="keyword"> const </span>{
+<a name="l00674"></a>00674       assert(<a class="code" href="structllvm_1_1EVT.html#a73f7c824cad61a47c21bf6d652ae2fd7" title="isVector - Return true if this is a vector value type.">isVector</a>() && <span class="stringliteral">"Invalid vector type!"</span>);
+<a name="l00675"></a>00675       <span class="keywordflow">if</span> (<a class="code" href="structllvm_1_1EVT.html#ac6f053514ba29bdf3b7f051f643dabe5">isSimple</a>())
+<a name="l00676"></a>00676         <span class="keywordflow">return</span> V.<a class="code" href="classllvm_1_1MVT.html#a3b996ab27663c2ccc235d9e78e417bff">getVectorElementType</a>();
+<a name="l00677"></a>00677       <span class="keywordflow">return</span> getExtendedVectorElementType();
+<a name="l00678"></a>00678     }
+<a name="l00679"></a>00679 <span class="comment"></span>
+<a name="l00680"></a>00680 <span class="comment">    /// getVectorNumElements - Given a vector type, return the number of</span>
+<a name="l00681"></a>00681 <span class="comment">    /// elements it contains.</span>
+<a name="l00682"></a><a class="code" href="structllvm_1_1EVT.html#a42bca41d2438197c12b6db2c710a959c">00682</a> <span class="comment"></span>    <span class="keywordtype">unsigned</span> <a class="code" href="structllvm_1_1EVT.html#a42bca41d2438197c12b6db2c710a959c">getVectorNumElements</a>()<span class="keyword"> const </span>{
+<a name="l00683"></a>00683       assert(<a class="code" href="structllvm_1_1EVT.html#a73f7c824cad61a47c21bf6d652ae2fd7" title="isVector - Return true if this is a vector value type.">isVector</a>() && <span class="stringliteral">"Invalid vector type!"</span>);
+<a name="l00684"></a>00684       <span class="keywordflow">if</span> (<a class="code" href="structllvm_1_1EVT.html#ac6f053514ba29bdf3b7f051f643dabe5">isSimple</a>())
+<a name="l00685"></a>00685         <span class="keywordflow">return</span> V.<a class="code" href="classllvm_1_1MVT.html#a4f7f4ae7e0f5444481b642d97bd380a6">getVectorNumElements</a>();
+<a name="l00686"></a>00686       <span class="keywordflow">return</span> getExtendedVectorNumElements();
+<a name="l00687"></a>00687     }
+<a name="l00688"></a>00688 <span class="comment"></span>
+<a name="l00689"></a>00689 <span class="comment">    /// getSizeInBits - Return the size of the specified value type in bits.</span>
+<a name="l00690"></a><a class="code" href="structllvm_1_1EVT.html#a8cca25ddb3be86ad23567dc8d36dacd3">00690</a> <span class="comment"></span>    <span class="keywordtype">unsigned</span> <a class="code" href="structllvm_1_1EVT.html#a8cca25ddb3be86ad23567dc8d36dacd3" title="getSizeInBits - Return the size of the specified value type in bits.">getSizeInBits</a>()<span class="keyword"> const </span>{
+<a name="l00691"></a>00691       <span class="keywordflow">if</span> (<a class="code" href="structllvm_1_1EVT.html#ac6f053514ba29bdf3b7f051f643dabe5">isSimple</a>())
+<a name="l00692"></a>00692         <span class="keywordflow">return</span> V.<a class="code" href="classllvm_1_1MVT.html#a423166b2b5d1010162dde0003e5ad09c">getSizeInBits</a>();
+<a name="l00693"></a>00693       <span class="keywordflow">return</span> getExtendedSizeInBits();
+<a name="l00694"></a>00694     }
+<a name="l00695"></a>00695 <span class="comment"></span>
+<a name="l00696"></a>00696 <span class="comment">    /// getStoreSize - Return the number of bytes overwritten by a store</span>
+<a name="l00697"></a>00697 <span class="comment">    /// of the specified value type.</span>
+<a name="l00698"></a><a class="code" href="structllvm_1_1EVT.html#a451be47fed950157cb4c327bc9f91c2d">00698</a> <span class="comment"></span>    <span class="keywordtype">unsigned</span> <a class="code" href="structllvm_1_1EVT.html#a451be47fed950157cb4c327bc9f91c2d">getStoreSize</a>()<span class="keyword"> const </span>{
+<a name="l00699"></a>00699       <span class="keywordflow">return</span> (<a class="code" href="structllvm_1_1EVT.html#a8cca25ddb3be86ad23567dc8d36dacd3" title="getSizeInBits - Return the size of the specified value type in bits.">getSizeInBits</a>() + 7) / 8;
+<a name="l00700"></a>00700     }
+<a name="l00701"></a>00701 <span class="comment"></span>
+<a name="l00702"></a>00702 <span class="comment">    /// getStoreSizeInBits - Return the number of bits overwritten by a store</span>
+<a name="l00703"></a>00703 <span class="comment">    /// of the specified value type.</span>
+<a name="l00704"></a><a class="code" href="structllvm_1_1EVT.html#a9b1d12f467b88f8da64a1d6841910193">00704</a> <span class="comment"></span>    <span class="keywordtype">unsigned</span> <a class="code" href="structllvm_1_1EVT.html#a9b1d12f467b88f8da64a1d6841910193">getStoreSizeInBits</a>()<span class="keyword"> const </span>{
+<a name="l00705"></a>00705       <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#a451be47fed950157cb4c327bc9f91c2d">getStoreSize</a>() * 8;
+<a name="l00706"></a>00706     }
+<a name="l00707"></a>00707 <span class="comment"></span>
+<a name="l00708"></a>00708 <span class="comment">    /// getRoundIntegerType - Rounds the bit-width of the given integer EVT up</span>
+<a name="l00709"></a>00709 <span class="comment">    /// to the nearest power of two (and at least to eight), and returns the</span>
+<a name="l00710"></a>00710 <span class="comment">    /// integer EVT with that number of bits.</span>
+<a name="l00711"></a><a class="code" href="structllvm_1_1EVT.html#a1f52472a6ef8f295849571a83b46430b">00711</a> <span class="comment"></span>    <a class="code" href="structllvm_1_1EVT.html">EVT</a> <a class="code" href="structllvm_1_1EVT.html#a1f52472a6ef8f295849571a83b46430b">getRoundIntegerType</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &Context)<span class="keyword"> const </span>{
+<a name="l00712"></a>00712       assert(<a class="code" href="structllvm_1_1EVT.html#a8cc407ac00df4edd4ec4d5168d6ecb26" title="isInteger - Return true if this is an integer, or a vector integer type.">isInteger</a>() && !<a class="code" href="structllvm_1_1EVT.html#a73f7c824cad61a47c21bf6d652ae2fd7" title="isVector - Return true if this is a vector value type.">isVector</a>() && <span class="stringliteral">"Invalid integer type!"</span>);
+<a name="l00713"></a>00713       <span class="keywordtype">unsigned</span> BitWidth = <a class="code" href="structllvm_1_1EVT.html#a8cca25ddb3be86ad23567dc8d36dacd3" title="getSizeInBits - Return the size of the specified value type in bits.">getSizeInBits</a>();
+<a name="l00714"></a>00714       <span class="keywordflow">if</span> (BitWidth <= 8)
+<a name="l00715"></a>00715         <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#a42721c1ac473e3244c2a6a4c5301c35a">EVT</a>(<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50caf777e086e32f60c0c87b460964eae7d0">MVT::i8</a>);
+<a name="l00716"></a>00716       <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#a752372e170e4e7c595bf8810bb52adf2">getIntegerVT</a>(Context, 1 << <a class="code" href="namespacellvm.html#a058782b98991f0719657d9008d3df41b">Log2_32_Ceil</a>(BitWidth));
+<a name="l00717"></a>00717     }
+<a name="l00718"></a>00718 <span class="comment"></span>
+<a name="l00719"></a>00719 <span class="comment">    /// getHalfSizedIntegerVT - Finds the smallest simple value type that is</span>
+<a name="l00720"></a>00720 <span class="comment">    /// greater than or equal to half the width of this EVT. If no simple</span>
+<a name="l00721"></a>00721 <span class="comment">    /// value type can be found, an extended integer value type of half the</span>
+<a name="l00722"></a>00722 <span class="comment">    /// size (rounded up) is returned.</span>
+<a name="l00723"></a><a class="code" href="structllvm_1_1EVT.html#ad24c19c8b98f7a9792485d3749873a5d">00723</a> <span class="comment"></span>    <a class="code" href="structllvm_1_1EVT.html">EVT</a> <a class="code" href="structllvm_1_1EVT.html#ad24c19c8b98f7a9792485d3749873a5d">getHalfSizedIntegerVT</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &Context)<span class="keyword"> const </span>{
+<a name="l00724"></a>00724       assert(<a class="code" href="structllvm_1_1EVT.html#a8cc407ac00df4edd4ec4d5168d6ecb26" title="isInteger - Return true if this is an integer, or a vector integer type.">isInteger</a>() && !<a class="code" href="structllvm_1_1EVT.html#a73f7c824cad61a47c21bf6d652ae2fd7" title="isVector - Return true if this is a vector value type.">isVector</a>() && <span class="stringliteral">"Invalid integer type!"</span>);
+<a name="l00725"></a>00725       <span class="keywordtype">unsigned</span> EVTSize = <a class="code" href="structllvm_1_1EVT.html#a8cca25ddb3be86ad23567dc8d36dacd3" title="getSizeInBits - Return the size of the specified value type in bits.">getSizeInBits</a>();
+<a name="l00726"></a>00726       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> IntVT = <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca97826d9e1c231c51153ef23ee4e95233">MVT::FIRST_INTEGER_VALUETYPE</a>;
+<a name="l00727"></a>00727           IntVT <= <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca5728436bd6ff6c800a6d96cb7dfa7d01">MVT::LAST_INTEGER_VALUETYPE</a>; ++IntVT) {
+<a name="l00728"></a>00728         <a class="code" href="structllvm_1_1EVT.html">EVT</a> HalfVT = <a class="code" href="structllvm_1_1EVT.html#a42721c1ac473e3244c2a6a4c5301c35a">EVT</a>((<a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50c">MVT::SimpleValueType</a>)IntVT);
+<a name="l00729"></a>00729         <span class="keywordflow">if</span> (HalfVT.<a class="code" href="structllvm_1_1EVT.html#a8cca25ddb3be86ad23567dc8d36dacd3" title="getSizeInBits - Return the size of the specified value type in bits.">getSizeInBits</a>() * 2 >= EVTSize)
+<a name="l00730"></a>00730           <span class="keywordflow">return</span> HalfVT;
+<a name="l00731"></a>00731       }
+<a name="l00732"></a>00732       <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#a752372e170e4e7c595bf8810bb52adf2">getIntegerVT</a>(Context, (EVTSize + 1) / 2);
+<a name="l00733"></a>00733     }
+<a name="l00734"></a>00734 <span class="comment"></span>
+<a name="l00735"></a>00735 <span class="comment">    /// isPow2VectorType - Returns true if the given vector is a power of 2.</span>
+<a name="l00736"></a><a class="code" href="structllvm_1_1EVT.html#a9793cda11aee6be259f09342ff45778b">00736</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT.html#a9793cda11aee6be259f09342ff45778b" title="isPow2VectorType - Returns true if the given vector is a power of 2.">isPow2VectorType</a>()<span class="keyword"> const </span>{
+<a name="l00737"></a>00737       <span class="keywordtype">unsigned</span> NElts = <a class="code" href="structllvm_1_1EVT.html#a42bca41d2438197c12b6db2c710a959c">getVectorNumElements</a>();
+<a name="l00738"></a>00738       <span class="keywordflow">return</span> !(NElts & (NElts - 1));
+<a name="l00739"></a>00739     }
+<a name="l00740"></a>00740 <span class="comment"></span>
+<a name="l00741"></a>00741 <span class="comment">    /// getPow2VectorType - Widens the length of the given vector EVT up to</span>
+<a name="l00742"></a>00742 <span class="comment">    /// the nearest power of 2 and returns that type.</span>
+<a name="l00743"></a><a class="code" href="structllvm_1_1EVT.html#afeee401a724cc000ae76c7709f26e483">00743</a> <span class="comment"></span>    <a class="code" href="structllvm_1_1EVT.html">EVT</a> <a class="code" href="structllvm_1_1EVT.html#afeee401a724cc000ae76c7709f26e483">getPow2VectorType</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &Context)<span class="keyword"> const </span>{
+<a name="l00744"></a>00744       <span class="keywordflow">if</span> (!<a class="code" href="structllvm_1_1EVT.html#a9793cda11aee6be259f09342ff45778b" title="isPow2VectorType - Returns true if the given vector is a power of 2.">isPow2VectorType</a>()) {
+<a name="l00745"></a>00745         <span class="keywordtype">unsigned</span> NElts = <a class="code" href="structllvm_1_1EVT.html#a42bca41d2438197c12b6db2c710a959c">getVectorNumElements</a>();
+<a name="l00746"></a>00746         <span class="keywordtype">unsigned</span> Pow2NElts = 1 <<  <a class="code" href="namespacellvm.html#a058782b98991f0719657d9008d3df41b">Log2_32_Ceil</a>(NElts);
+<a name="l00747"></a>00747         <span class="keywordflow">return</span> <a class="code" href="structllvm_1_1EVT.html#a18c2edf1939f6e87f1e586b815f398cd">EVT::getVectorVT</a>(Context, <a class="code" href="structllvm_1_1EVT.html#a3a07c062cc9330acd8e8c4e3930cbb25">getVectorElementType</a>(), Pow2NElts);
+<a name="l00748"></a>00748       }
+<a name="l00749"></a>00749       <span class="keywordflow">else</span> {
+<a name="l00750"></a>00750         <span class="keywordflow">return</span> *<span class="keyword">this</span>;
+<a name="l00751"></a>00751       }
+<a name="l00752"></a>00752     }
+<a name="l00753"></a>00753 <span class="comment"></span>
+<a name="l00754"></a>00754 <span class="comment">    /// getEVTString - This function returns value type as a string,</span>
+<a name="l00755"></a>00755 <span class="comment">    /// e.g. "i32".</span>
+<a name="l00756"></a>00756 <span class="comment"></span>    std::string <a class="code" href="structllvm_1_1EVT.html#a840a2d72e6d1e7ec1c938ffd9f023c68">getEVTString</a>() <span class="keyword">const</span>;
+<a name="l00757"></a>00757 <span class="comment"></span>
+<a name="l00758"></a>00758 <span class="comment">    /// getTypeForEVT - This method returns an LLVM type corresponding to the</span>
+<a name="l00759"></a>00759 <span class="comment">    /// specified EVT.  For integer types, this returns an unsigned type.  Note</span>
+<a name="l00760"></a>00760 <span class="comment">    /// that this will abort for types that cannot be represented.</span>
+<a name="l00761"></a>00761 <span class="comment"></span>    <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="structllvm_1_1EVT.html#a226345d0c8262e9469d30a993d1656ff">getTypeForEVT</a>(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &Context) <span class="keyword">const</span>;
+<a name="l00762"></a>00762 <span class="comment"></span>
+<a name="l00763"></a>00763 <span class="comment">    /// getEVT - Return the value type corresponding to the specified type.</span>
+<a name="l00764"></a>00764 <span class="comment">    /// This returns all pointers as iPTR.  If HandleUnknown is true, unknown</span>
+<a name="l00765"></a>00765 <span class="comment">    /// types are returned as Other, otherwise they are invalid.</span>
+<a name="l00766"></a>00766 <span class="comment"></span>    <span class="keyword">static</span> <a class="code" href="structllvm_1_1EVT.html">EVT</a> <a class="code" href="structllvm_1_1EVT.html#a5db8faf73cf29bcefdb3bdfadf3dc2c1">getEVT</a>(<a class="code" href="classllvm_1_1Type.html">Type</a> *Ty, <span class="keywordtype">bool</span> HandleUnknown = <span class="keyword">false</span>);
+<a name="l00767"></a>00767 
+<a name="l00768"></a><a class="code" href="structllvm_1_1EVT.html#a56f58ae31b85ce3396d2017fa6391316">00768</a>     <a class="code" href="classintptr__t.html">intptr_t</a> <a class="code" href="structllvm_1_1EVT.html#a56f58ae31b85ce3396d2017fa6391316">getRawBits</a>() {
+<a name="l00769"></a>00769       <span class="keywordflow">if</span> (<a class="code" href="structllvm_1_1EVT.html#ac6f053514ba29bdf3b7f051f643dabe5">isSimple</a>())
+<a name="l00770"></a>00770         <span class="keywordflow">return</span> V.<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a>;
+<a name="l00771"></a>00771       <span class="keywordflow">else</span>
+<a name="l00772"></a>00772         <span class="keywordflow">return</span> (<a class="code" href="classintptr__t.html">intptr_t</a>)(LLVMTy);
+<a name="l00773"></a>00773     }
+<a name="l00774"></a>00774 <span class="comment"></span>
+<a name="l00775"></a>00775 <span class="comment">    /// compareRawBits - A meaningless but well-behaved order, useful for</span>
+<a name="l00776"></a>00776 <span class="comment">    /// constructing containers.</span>
+<a name="l00777"></a><a class="code" href="structllvm_1_1EVT_1_1compareRawBits.html">00777</a> <span class="comment"></span>    <span class="keyword">struct </span><a class="code" href="structllvm_1_1EVT_1_1compareRawBits.html">compareRawBits</a> {
+<a name="l00778"></a><a class="code" href="structllvm_1_1EVT_1_1compareRawBits.html#acbfa0af57218820fa5cbbb9354e5bce6">00778</a>       <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1EVT_1_1compareRawBits.html#acbfa0af57218820fa5cbbb9354e5bce6">operator()</a>(<a class="code" href="structllvm_1_1EVT.html">EVT</a> L, <a class="code" href="structllvm_1_1EVT.html">EVT</a> R)<span class="keyword"> const </span>{
+<a name="l00779"></a>00779         <span class="keywordflow">if</span> (L.V.<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> == R.V.<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a>)
+<a name="l00780"></a>00780           <span class="keywordflow">return</span> L.LLVMTy < R.LLVMTy;
+<a name="l00781"></a>00781         <span class="keywordflow">else</span>
+<a name="l00782"></a>00782           <span class="keywordflow">return</span> L.V.<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a> < R.V.<a class="code" href="classllvm_1_1MVT.html#a27bda7d8e8e4f0337650a892f3c9b46a">SimpleTy</a>;
+<a name="l00783"></a>00783       }
+<a name="l00784"></a>00784     };
+<a name="l00785"></a>00785 
+<a name="l00786"></a>00786   <span class="keyword">private</span>:
+<a name="l00787"></a>00787     <span class="comment">// Methods for handling the Extended-type case in functions above.</span>
+<a name="l00788"></a>00788     <span class="comment">// These are all out-of-line to prevent users of this header file</span>
+<a name="l00789"></a>00789     <span class="comment">// from having a dependency on Type.h.</span>
+<a name="l00790"></a>00790     <a class="code" href="structllvm_1_1EVT.html">EVT</a> changeExtendedVectorElementTypeToInteger() <span class="keyword">const</span>;
+<a name="l00791"></a>00791     <span class="keyword">static</span> <a class="code" href="structllvm_1_1EVT.html">EVT</a> getExtendedIntegerVT(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <span class="keywordtype">unsigned</span> BitWidth);
+<a name="l00792"></a>00792     <span class="keyword">static</span> <a class="code" href="structllvm_1_1EVT.html">EVT</a> getExtendedVectorVT(<a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>, <a class="code" href="structllvm_1_1EVT.html">EVT</a> VT,
+<a name="l00793"></a>00793                                    <span class="keywordtype">unsigned</span> NumElements);
+<a name="l00794"></a>00794     <span class="keywordtype">bool</span> isExtendedFloatingPoint() <span class="keyword">const</span>;
+<a name="l00795"></a>00795     <span class="keywordtype">bool</span> isExtendedInteger() <span class="keyword">const</span>;
+<a name="l00796"></a>00796     <span class="keywordtype">bool</span> isExtendedVector() <span class="keyword">const</span>;
+<a name="l00797"></a>00797     <span class="keywordtype">bool</span> isExtended16BitVector() <span class="keyword">const</span>;
+<a name="l00798"></a>00798     <span class="keywordtype">bool</span> isExtended32BitVector() <span class="keyword">const</span>;
+<a name="l00799"></a>00799     <span class="keywordtype">bool</span> isExtended64BitVector() <span class="keyword">const</span>;
+<a name="l00800"></a>00800     <span class="keywordtype">bool</span> isExtended128BitVector() <span class="keyword">const</span>;
+<a name="l00801"></a>00801     <span class="keywordtype">bool</span> isExtended256BitVector() <span class="keyword">const</span>;
+<a name="l00802"></a>00802     <span class="keywordtype">bool</span> isExtended512BitVector() <span class="keyword">const</span>;
+<a name="l00803"></a>00803     <span class="keywordtype">bool</span> isExtended1024BitVector() <span class="keyword">const</span>;
+<a name="l00804"></a>00804     <a class="code" href="structllvm_1_1EVT.html">EVT</a> getExtendedVectorElementType() <span class="keyword">const</span>;
+<a name="l00805"></a>00805     <span class="keywordtype">unsigned</span> getExtendedVectorNumElements() <span class="keyword">const</span>;
+<a name="l00806"></a>00806     <span class="keywordtype">unsigned</span> getExtendedSizeInBits() <span class="keyword">const</span>;
+<a name="l00807"></a>00807   };
+<a name="l00808"></a>00808 
+<a name="l00809"></a>00809 } <span class="comment">// End llvm namespace</span>
+<a name="l00810"></a>00810 
+<a name="l00811"></a>00811 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:09 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/Value_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Value_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Value_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Value_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,194 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: Value.cpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_83e3867971eec972e26e5b2c6ac80c1f.html">VMCore</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#enum-members">Enumerations</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">Value.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="LLVMContextImpl_8h_source.html">LLVMContextImpl.h</a>"</code><br/>
+<code>#include "<a class="el" href="Constant_8h_source.html">llvm/Constant.h</a>"</code><br/>
+<code>#include "<a class="el" href="Constants_8h_source.html">llvm/Constants.h</a>"</code><br/>
+<code>#include "<a class="el" href="DerivedTypes_8h_source.html">llvm/DerivedTypes.h</a>"</code><br/>
+<code>#include "<a class="el" href="InstrTypes_8h_source.html">llvm/InstrTypes.h</a>"</code><br/>
+<code>#include "<a class="el" href="Instructions_8h_source.html">llvm/Instructions.h</a>"</code><br/>
+<code>#include "<a class="el" href="Operator_8h_source.html">llvm/Operator.h</a>"</code><br/>
+<code>#include "<a class="el" href="Module_8h_source.html">llvm/Module.h</a>"</code><br/>
+<code>#include "<a class="el" href="ValueSymbolTable_8h_source.html">llvm/ValueSymbolTable.h</a>"</code><br/>
+<code>#include "<a class="el" href="SmallString_8h_source.html">llvm/ADT/SmallString.h</a>"</code><br/>
+<code>#include "<a class="el" href="Debug_8h_source.html">llvm/Support/Debug.h</a>"</code><br/>
+<code>#include "<a class="el" href="GetElementPtrTypeIterator_8h_source.html">llvm/Support/GetElementPtrTypeIterator.h</a>"</code><br/>
+<code>#include "<a class="el" href="ErrorHandling_8h_source.html">llvm/Support/ErrorHandling.h</a>"</code><br/>
+<code>#include "<a class="el" href="LeakDetector_8h_source.html">llvm/Support/LeakDetector.h</a>"</code><br/>
+<code>#include "<a class="el" href="ManagedStatic_8h_source.html">llvm/Support/ManagedStatic.h</a>"</code><br/>
+<code>#include "<a class="el" href="ValueHandle_8h_source.html">llvm/Support/ValueHandle.h</a>"</code><br/>
+<code>#include "<a class="el" href="DenseMap_8h_source.html">llvm/ADT/DenseMap.h</a>"</code><br/>
+<code>#include <algorithm></code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for Value.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="Value_8cpp__incl.png" border="0" usemap="#Value_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="Value_8cpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="Value_8cpp.html#a463980c8670a6911dde17bea2195ea6b">PointerStripKind</a> </td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1Type.html">Type</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="Value_8cpp.html#aed16020450cab1b3d4b76d9019cdab1f">checkType</a> (<a class="el" href="classllvm_1_1Type.html">Type</a> *Ty)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="Value_8cpp.html#a5c3c0815d6e4c2535bc27f822f5e0960">getSymTab</a> (<a class="el" href="classllvm_1_1Value.html">Value</a> *V, <a class="el" href="classllvm_1_1ValueSymbolTable.html">ValueSymbolTable</a> *&ST)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="Value_8cpp.html#a57f8d8f9e8381cf884a7ba8480785fa6">isDereferenceablePointer</a> (const <a class="el" href="classllvm_1_1Value.html">Value</a> *V, <a class="el" href="classllvm_1_1SmallPtrSet.html">SmallPtrSet</a>< const <a class="el" href="classllvm_1_1Value.html">Value</a> *, 32 > &Visited)</td></tr>
+</table>
+<hr/><h2>Enumeration Type Documentation</h2>
+<a class="anchor" id="a463980c8670a6911dde17bea2195ea6b"></a><!-- doxytag: member="Value.cpp::PointerStripKind" ref="a463980c8670a6911dde17bea2195ea6b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="Value_8cpp.html#a463980c8670a6911dde17bea2195ea6b">PointerStripKind</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="Value_8cpp_source.html#l00327">327</a> of file <a class="el" href="Value_8cpp_source.html">Value.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="aed16020450cab1b3d4b76d9019cdab1f"></a><!-- doxytag: member="Value.cpp::checkType" ref="aed16020450cab1b3d4b76d9019cdab1f" args="(Type *Ty)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classllvm_1_1Type.html">Type</a>* checkType </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Type.html">Type</a> * </td>
+          <td class="paramname"><em>Ty</em></td><td>)</td>
+          <td><code> [inline, static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="Value_8cpp_source.html#l00038">38</a> of file <a class="el" href="Value_8cpp_source.html">Value.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5c3c0815d6e4c2535bc27f822f5e0960"></a><!-- doxytag: member="Value.cpp::getSymTab" ref="a5c3c0815d6e4c2535bc27f822f5e0960" args="(Value *V, ValueSymbolTable *&ST)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> getSymTab </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1Value.html">Value</a> * </td>
+          <td class="paramname"><em>V</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1ValueSymbolTable.html">ValueSymbolTable</a> *& </td>
+          <td class="paramname"><em>ST</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="Value_8cpp_source.html#l00140">140</a> of file <a class="el" href="Value_8cpp_source.html">Value.cpp</a>.</p>
+
+<p>References <a class="el" href="ARMBaseInfo_8h_source.html#l00098">llvm::ARM_PROC::A</a>, <a class="el" href="GlobalValue_8h_source.html#l00286">llvm::GlobalValue::getParent()</a>, and <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>.</p>
+
+<p>Referenced by <a class="el" href="SymbolTableListTraitsImpl_8h_source.html#l00067">llvm::SymbolTableListTraits< ValueSubClass, ItemParentClass >::addNodeToList()</a>, <a class="el" href="SymbolTableListTraitsImpl_8h_source.html#l00078">llvm::SymbolTableListTraits< ValueSubClass, ItemParentClass >::removeNodeFromList()</a>, <a class="el" href="Value_8cpp_source.html#l00172">llvm::Value::setName()</a>, <a class="el" href="SymbolTableListTraitsImpl_8h_source.html#l00030">llvm::SymbolTableListTraits< ValueSubClass, ItemParentClass >::setSymTabObject()</a>, <a class="el" href="Value_8cpp_source.html#l00233">llvm::Value::takeName()</a>, and <a class="el" href="SymbolTableListTraitsImpl_8h_source.html#l00087">llvm::SymbolTableListTraits< ValueSubClass, ItemParentClass >::transferNodesFromList()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a57f8d8f9e8381cf884a7ba8480785fa6"></a><!-- doxytag: member="Value.cpp::isDereferenceablePointer" ref="a57f8d8f9e8381cf884a7ba8480785fa6" args="(const Value *V, SmallPtrSet< const Value *, 32 > &Visited)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> isDereferenceablePointer </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1Value.html">Value</a> * </td>
+          <td class="paramname"><em>V</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SmallPtrSet.html">SmallPtrSet</a>< const <a class="el" href="classllvm_1_1Value.html">Value</a> *, 32 > & </td>
+          <td class="paramname"><em>Visited</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>isDereferenceablePointer - Test if this value is always a pointer to allocated and suitably aligned memory for a simple load or store. </p>
+
+<p>Definition at line <a class="el" href="Value_8cpp_source.html#l00390">390</a> of file <a class="el" href="Value_8cpp_source.html">Value.cpp</a>.</p>
+
+<p>References <a class="el" href="ARMBaseInfo_8h_source.html#l00098">llvm::ARM_PROC::A</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="GetElementPtrTypeIterator_8h_source.html#l00085">llvm::gep_type_begin()</a>, <a class="el" href="APInt_8h_source.html#l01186">llvm::APInt::getActiveBits()</a>, <a class="el" href="DerivedTypes_8h_source.html#l00348">llvm::ArrayType::getNumElements()</a>, <a class="el" href="Constants_8h_source.html#l00104">llvm::ConstantInt::getValue()</a>, <a class="el" href="Constants_8h_source.html#l00116">llvm::ConstantInt::getZExtValue()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="SmallPtrSet_8h_source.html#l00254">llvm::SmallPtrSet< PtrType, SmallSize >::insert()</a>, and <a class="el" href="Constants_8h_source.html#l00161">llvm::ConstantInt::isZero()</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:56 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/Value_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Value_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Value_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Value_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,466 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: Value.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_25acc6571c4e3a053ee4203146b47a61.html">include</a>      </li>
+      <li class="navelem"><a class="el" href="dir_fd2d7b5ce83b1c1657cd6600d8cb39fa.html">llvm</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Value.h</div>  </div>
+</div>
+<div class="contents">
+<a href="Value_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- llvm/Value.h - Definition of the Value class ------------*- C++ -*-===//</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">//                     The LLVM Compiler Infrastructure</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">// This file is distributed under the University of Illinois Open Source</span>
+<a name="l00006"></a>00006 <span class="comment">// License. See LICENSE.TXT for details.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00009"></a>00009 <span class="comment">//</span>
+<a name="l00010"></a>00010 <span class="comment">// This file declares the Value class. </span>
+<a name="l00011"></a>00011 <span class="comment">//</span>
+<a name="l00012"></a>00012 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00013"></a>00013 
+<a name="l00014"></a>00014 <span class="preprocessor">#ifndef LLVM_VALUE_H</span>
+<a name="l00015"></a>00015 <span class="preprocessor"></span><span class="preprocessor">#define LLVM_VALUE_H</span>
+<a name="l00016"></a>00016 <span class="preprocessor"></span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="Use_8h.html">llvm/Use.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="Casting_8h.html">llvm/Support/Casting.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="Compiler_8h.html">llvm/Support/Compiler.h</a>"</span>
+<a name="l00020"></a>00020 
+<a name="l00021"></a>00021 <span class="keyword">namespace </span>llvm {
+<a name="l00022"></a>00022 
+<a name="l00023"></a>00023 <span class="keyword">class </span><a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110aac2f0a84dd2aa5ee4c3f1385e9565f5e">Constant</a>;
+<a name="l00024"></a>00024 <span class="keyword">class </span>Argument;
+<a name="l00025"></a>00025 <span class="keyword">class </span>Instruction;
+<a name="l00026"></a>00026 <span class="keyword">class </span><a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a>;
+<a name="l00027"></a>00027 <span class="keyword">class </span>GlobalValue;
+<a name="l00028"></a>00028 <span class="keyword">class </span>Function;
+<a name="l00029"></a>00029 <span class="keyword">class </span>GlobalVariable;
+<a name="l00030"></a>00030 <span class="keyword">class </span>GlobalAlias;
+<a name="l00031"></a>00031 <span class="keyword">class </span>InlineAsm;
+<a name="l00032"></a>00032 <span class="keyword">class </span>ValueSymbolTable;
+<a name="l00033"></a><a class="code" href="namespacellvm.html#a5faf19e8cf24cfa4c6615617bd215be7">00033</a> <span class="keyword">template</span><<span class="keyword">typename</span> ValueTy> <span class="keyword">class </span><a class="code" href="classllvm_1_1StringMapEntry.html">StringMapEntry</a>;
+<a name="l00034"></a>00034 <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1StringMapEntry.html">StringMapEntry<Value*></a> <a class="code" href="namespacellvm.html#a5faf19e8cf24cfa4c6615617bd215be7">ValueName</a>;
+<a name="l00035"></a>00035 <span class="keyword">class </span><a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a>;
+<a name="l00036"></a>00036 <span class="keyword">class </span><a class="code" href="classllvm_1_1AssemblyAnnotationWriter.html">AssemblyAnnotationWriter</a>;
+<a name="l00037"></a>00037 <span class="keyword">class </span><a class="code" href="classllvm_1_1ValueHandleBase.html">ValueHandleBase</a>;
+<a name="l00038"></a>00038 <span class="keyword">class </span><a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a>;
+<a name="l00039"></a>00039 <span class="keyword">class </span><a class="code" href="classllvm_1_1Twine.html">Twine</a>;
+<a name="l00040"></a>00040 <span class="keyword">class </span><a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a>;
+<a name="l00041"></a>00041 <span class="keyword">class </span><a class="code" href="classllvm_1_1Type.html">Type</a>;
+<a name="l00042"></a>00042 <span class="keyword">class </span><a class="code" href="classllvm_1_1StringRef.html">StringRef</a>;
+<a name="l00043"></a>00043 
+<a name="l00044"></a>00044 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00045"></a>00045 <span class="comment">//                                 Value Class</span>
+<a name="l00046"></a>00046 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00047"></a>00047 <span class="comment"></span>
+<a name="l00048"></a>00048 <span class="comment">/// This is a very important LLVM class. It is the base class of all values </span>
+<a name="l00049"></a>00049 <span class="comment">/// computed by a program that may be used as operands to other values. Value is</span>
+<a name="l00050"></a>00050 <span class="comment">/// the super class of other important classes such as Instruction and Function.</span>
+<a name="l00051"></a>00051 <span class="comment">/// All Values have a Type. Type is not a subclass of Value. Some values can</span>
+<a name="l00052"></a>00052 <span class="comment">/// have a name and they belong to some Module.  Setting the name on the Value</span>
+<a name="l00053"></a>00053 <span class="comment">/// automatically updates the module's symbol table.</span>
+<a name="l00054"></a>00054 <span class="comment">///</span>
+<a name="l00055"></a>00055 <span class="comment">/// Every value has a "use list" that keeps track of which other Values are</span>
+<a name="l00056"></a>00056 <span class="comment">/// using this Value.  A Value can also have an arbitrary number of ValueHandle</span>
+<a name="l00057"></a>00057 <span class="comment">/// objects that watch it and listen to RAUW and Destroy events.  See</span>
+<a name="l00058"></a>00058 <span class="comment">/// llvm/Support/ValueHandle.h for details.</span>
+<a name="l00059"></a>00059 <span class="comment">///</span>
+<a name="l00060"></a>00060 <span class="comment">/// @brief LLVM Value Representation</span>
+<a name="l00061"></a><a class="code" href="classllvm_1_1Value.html">00061</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> {
+<a name="l00062"></a>00062   <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> SubclassID;   <span class="comment">// Subclass identifier (for isa/dyn_cast)</span>
+<a name="l00063"></a>00063   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> HasValueHandle : 1; <span class="comment">// Has a ValueHandle pointing to this?</span>
+<a name="l00064"></a>00064 <span class="keyword">protected</span>:<span class="comment"></span>
+<a name="l00065"></a>00065 <span class="comment">  /// SubclassOptionalData - This member is similar to SubclassData, however it</span>
+<a name="l00066"></a>00066 <span class="comment">  /// is for holding information which may be used to aid optimization, but</span>
+<a name="l00067"></a>00067 <span class="comment">  /// which may be cleared to zero without affecting conservative</span>
+<a name="l00068"></a>00068 <span class="comment">  /// interpretation.</span>
+<a name="l00069"></a><a class="code" href="classllvm_1_1Value.html#a21e38886795ed32ec28d4eb5dc92b6a4">00069</a> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="classllvm_1_1Value.html#a21e38886795ed32ec28d4eb5dc92b6a4">SubclassOptionalData</a> : 7;
+<a name="l00070"></a>00070 
+<a name="l00071"></a>00071 <span class="keyword">private</span>:<span class="comment"></span>
+<a name="l00072"></a>00072 <span class="comment">  /// SubclassData - This member is defined by this class, but is not used for</span>
+<a name="l00073"></a>00073 <span class="comment">  /// anything.  Subclasses can use it to hold whatever state they find useful.</span>
+<a name="l00074"></a>00074 <span class="comment">  /// This field is initialized to zero by the ctor.</span>
+<a name="l00075"></a>00075 <span class="comment"></span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> SubclassData;
+<a name="l00076"></a>00076 
+<a name="l00077"></a>00077   <a class="code" href="classllvm_1_1Type.html">Type</a> *VTy;
+<a name="l00078"></a>00078   <a class="code" href="classllvm_1_1Use.html">Use</a> *UseList;
+<a name="l00079"></a>00079 
+<a name="l00080"></a><a class="code" href="classllvm_1_1Value.html#a576e9cf11856f5d306940d025e18ac7d">00080</a>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classllvm_1_1ValueSymbolTable.html">ValueSymbolTable</a>; <span class="comment">// Allow ValueSymbolTable to directly mod Name.</span>
+<a name="l00081"></a><a class="code" href="classllvm_1_1Value.html#a3382a955d5cfa8adec3e002ffd6c2b72">00081</a>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classllvm_1_1ValueHandleBase.html">ValueHandleBase</a>;
+<a name="l00082"></a>00082   <a class="code" href="classllvm_1_1StringMapEntry.html">ValueName</a> *<a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>;
+<a name="l00083"></a>00083 
+<a name="l00084"></a>00084   <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> &) <a class="code" href="Compiler_8h.html#aacca75352b8e153274310c374564eb01">LLVM_DELETED_FUNCTION</a>;
+<a name="l00085"></a>00085   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>(const <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> &) LLVM_DELETED_FUNCTION;
+<a name="l00086"></a>00086 
+<a name="l00087"></a>00087 protected:<span class="comment"></span>
+<a name="l00088"></a>00088 <span class="comment">  /// printCustom - Value subclasses can override this to implement custom</span>
+<a name="l00089"></a>00089 <span class="comment">  /// printing behavior.</span>
+<a name="l00090"></a>00090 <span class="comment"></span>  virtual <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Value.html#ac1270a417105e0d63aa0508b09c52b6c">printCustom</a>(<a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O) const;
+<a name="l00091"></a>00091 
+<a name="l00092"></a>00092   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>(<a class="code" href="classllvm_1_1Type.html">Type</a> *Ty, <span class="keywordtype">unsigned</span> scid);
+<a name="l00093"></a>00093 public:
+<a name="l00094"></a>00094   virtual ~<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>();
+<a name="l00095"></a>00095 <span class="comment"></span>
+<a name="l00096"></a>00096 <span class="comment">  /// dump - Support for debugging, callable in GDB: V->dump()</span>
+<a name="l00097"></a>00097 <span class="comment"></span>  <span class="comment">//</span>
+<a name="l00098"></a>00098   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Value.html#a1933ce346f4cbadcc151cea432c2b316" title="dump - Support for debugging, callable in GDB: V->dump()">dump</a>() const;
+<a name="l00099"></a>00099 <span class="comment"></span>
+<a name="l00100"></a>00100 <span class="comment">  /// print - Implement operator<< on Value.</span>
+<a name="l00101"></a>00101 <span class="comment">  ///</span>
+<a name="l00102"></a>00102 <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Value.html#a8684e39c1b3c53d525b96996b5b771ed">print</a>(<a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O, <a class="code" href="classllvm_1_1AssemblyAnnotationWriter.html">AssemblyAnnotationWriter</a> *AAW = 0) const;
+<a name="l00103"></a>00103 <span class="comment"></span>
+<a name="l00104"></a>00104 <span class="comment">  /// All values are typed, get the type of this value.</span>
+<a name="l00105"></a>00105 <span class="comment">  ///</span>
+<a name="l00106"></a><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">00106</a> <span class="comment"></span>  <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> VTy; }
+<a name="l00107"></a>00107 <span class="comment"></span>
+<a name="l00108"></a>00108 <span class="comment">  /// All values hold a context through their type.</span>
+<a name="l00109"></a>00109 <span class="comment"></span>  <a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="classllvm_1_1Value.html#af85a4828b6b5a8de7fc0a55cc0e5b52f" title="All values hold a context through their type.">getContext</a>() <span class="keyword">const</span>;
+<a name="l00110"></a>00110 
+<a name="l00111"></a>00111   <span class="comment">// All values can potentially be named.</span>
+<a name="l00112"></a><a class="code" href="classllvm_1_1Value.html#a9b6d1ca60deddf2f2c25cfea671f617c">00112</a>   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Value.html#a9b6d1ca60deddf2f2c25cfea671f617c">hasName</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a> != 0 && SubclassID != <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a7819f6e7f0d96e39942523ed8a11d305">MDStringVal</a>; }
+<a name="l00113"></a><a class="code" href="classllvm_1_1Value.html#a101e4765689b79fabe7632ba8f2a1a21">00113</a>   <a class="code" href="classllvm_1_1StringMapEntry.html">ValueName</a> *<a class="code" href="classllvm_1_1Value.html#a101e4765689b79fabe7632ba8f2a1a21">getValueName</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>; }
+<a name="l00114"></a><a class="code" href="classllvm_1_1Value.html#a0d424ef8d2ce505024a9fe6ba4928df4">00114</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Value.html#a0d424ef8d2ce505024a9fe6ba4928df4">setValueName</a>(<a class="code" href="classllvm_1_1StringMapEntry.html">ValueName</a> *VN) { <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a> = VN; }
+<a name="l00115"></a>00115   <span class="comment"></span>
+<a name="l00116"></a>00116 <span class="comment">  /// getName() - Return a constant reference to the value's name. This is cheap</span>
+<a name="l00117"></a>00117 <span class="comment">  /// and guaranteed to return the same reference as long as the value is not</span>
+<a name="l00118"></a>00118 <span class="comment">  /// modified.</span>
+<a name="l00119"></a>00119 <span class="comment"></span>  <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>() <span class="keyword">const</span>;
+<a name="l00120"></a>00120 <span class="comment"></span>
+<a name="l00121"></a>00121 <span class="comment">  /// setName() - Change the name of the value, choosing a new unique name if</span>
+<a name="l00122"></a>00122 <span class="comment">  /// the provided name is taken.</span>
+<a name="l00123"></a>00123 <span class="comment">  ///</span>
+<a name="l00124"></a>00124 <span class="comment">  /// \param Name The new name; or "" if the value's name should be removed.</span>
+<a name="l00125"></a>00125 <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Value.html#a35ee267850af7c235474a8c46c7ac5af">setName</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Twine.html">Twine</a> &<a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>);
+<a name="l00126"></a>00126 
+<a name="l00127"></a>00127   <span class="comment"></span>
+<a name="l00128"></a>00128 <span class="comment">  /// takeName - transfer the name from V to this value, setting V's name to</span>
+<a name="l00129"></a>00129 <span class="comment">  /// empty.  It is an error to call V->takeName(V). </span>
+<a name="l00130"></a>00130 <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Value.html#ae855357b6c5e6e7ed1869272708a3a84">takeName</a>(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *V);
+<a name="l00131"></a>00131 <span class="comment"></span>
+<a name="l00132"></a>00132 <span class="comment">  /// replaceAllUsesWith - Go through the uses list for this definition and make</span>
+<a name="l00133"></a>00133 <span class="comment">  /// each use point to "V" instead of "this".  After this completes, 'this's</span>
+<a name="l00134"></a>00134 <span class="comment">  /// use list is guaranteed to be empty.</span>
+<a name="l00135"></a>00135 <span class="comment">  ///</span>
+<a name="l00136"></a>00136 <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Value.html#a3ab5fc45117b450e8bb04e564cb6e5f2">replaceAllUsesWith</a>(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *V);
+<a name="l00137"></a>00137 
+<a name="l00138"></a>00138   <span class="comment">//----------------------------------------------------------------------</span>
+<a name="l00139"></a>00139   <span class="comment">// Methods for handling the chain of uses of this Value.</span>
+<a name="l00140"></a>00140   <span class="comment">//</span>
+<a name="l00141"></a><a class="code" href="classllvm_1_1Value.html#ac33c7ecbf1c0f1e8bf93403522e6976b">00141</a>   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1value__use__iterator.html">value_use_iterator<User></a>       <a class="code" href="classllvm_1_1Value.html#ac33c7ecbf1c0f1e8bf93403522e6976b">use_iterator</a>;
+<a name="l00142"></a><a class="code" href="classllvm_1_1Value.html#a06cb713e29374eb1e9356a5d0207fcf6">00142</a>   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1value__use__iterator.html">value_use_iterator<const User></a> <a class="code" href="classllvm_1_1Value.html#a06cb713e29374eb1e9356a5d0207fcf6">const_use_iterator</a>;
+<a name="l00143"></a>00143 
+<a name="l00144"></a><a class="code" href="classllvm_1_1Value.html#ac38c53f76ef532f91f1666c8a87370e9">00144</a>   <span class="keywordtype">bool</span>               <a class="code" href="classllvm_1_1Value.html#ac38c53f76ef532f91f1666c8a87370e9">use_empty</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> UseList == 0; }
+<a name="l00145"></a><a class="code" href="classllvm_1_1Value.html#a413abcab8dbc3900fc2fde96a5d8fca6">00145</a>   <a class="code" href="classllvm_1_1value__use__iterator.html">use_iterator</a>       <a class="code" href="classllvm_1_1Value.html#a413abcab8dbc3900fc2fde96a5d8fca6">use_begin</a>()       { <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Value.html#ac33c7ecbf1c0f1e8bf93403522e6976b">use_iterator</a>(UseList); }
+<a name="l00146"></a><a class="code" href="classllvm_1_1Value.html#a4e87534508b813311e98412ede2a98dc">00146</a>   <a class="code" href="classllvm_1_1value__use__iterator.html">const_use_iterator</a> <a class="code" href="classllvm_1_1Value.html#a4e87534508b813311e98412ede2a98dc">use_begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Value.html#a06cb713e29374eb1e9356a5d0207fcf6">const_use_iterator</a>(UseList); }
+<a name="l00147"></a><a class="code" href="classllvm_1_1Value.html#ad86469939d2a8bdd4169be9403b89f5a">00147</a>   <a class="code" href="classllvm_1_1value__use__iterator.html">use_iterator</a>       <a class="code" href="classllvm_1_1Value.html#ad86469939d2a8bdd4169be9403b89f5a">use_end</a>()         { <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Value.html#ac33c7ecbf1c0f1e8bf93403522e6976b">use_iterator</a>(0);   }
+<a name="l00148"></a><a class="code" href="classllvm_1_1Value.html#a8bcaeb4a6f0c8c82519659de9a9dd342">00148</a>   <a class="code" href="classllvm_1_1value__use__iterator.html">const_use_iterator</a> <a class="code" href="classllvm_1_1Value.html#a8bcaeb4a6f0c8c82519659de9a9dd342">use_end</a>()<span class="keyword">   const </span>{ <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Value.html#a06cb713e29374eb1e9356a5d0207fcf6">const_use_iterator</a>(0);   }
+<a name="l00149"></a><a class="code" href="classllvm_1_1Value.html#ad9a329f9f85bc896a726a628aa3f4e9d">00149</a>   <a class="code" href="classllvm_1_1User.html">User</a>              *<a class="code" href="classllvm_1_1Value.html#ad9a329f9f85bc896a726a628aa3f4e9d">use_back</a>()        { <span class="keywordflow">return</span> *<a class="code" href="classllvm_1_1Value.html#a413abcab8dbc3900fc2fde96a5d8fca6">use_begin</a>(); }
+<a name="l00150"></a><a class="code" href="classllvm_1_1Value.html#af7fcaed37e00a06b7514852b57a17db6">00150</a>   <span class="keyword">const</span> <a class="code" href="classllvm_1_1User.html">User</a>        *<a class="code" href="classllvm_1_1Value.html#af7fcaed37e00a06b7514852b57a17db6">use_back</a>()<span class="keyword">  const </span>{ <span class="keywordflow">return</span> *<a class="code" href="classllvm_1_1Value.html#a413abcab8dbc3900fc2fde96a5d8fca6">use_begin</a>(); }
+<a name="l00151"></a>00151 <span class="comment"></span>
+<a name="l00152"></a>00152 <span class="comment">  /// hasOneUse - Return true if there is exactly one user of this value.  This</span>
+<a name="l00153"></a>00153 <span class="comment">  /// is specialized because it is a common request and does not require</span>
+<a name="l00154"></a>00154 <span class="comment">  /// traversing the whole use list.</span>
+<a name="l00155"></a>00155 <span class="comment">  ///</span>
+<a name="l00156"></a><a class="code" href="classllvm_1_1Value.html#a085b82f074c28030fb8e194377ed2d0c">00156</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Value.html#a085b82f074c28030fb8e194377ed2d0c">hasOneUse</a>()<span class="keyword"> const </span>{
+<a name="l00157"></a>00157     <a class="code" href="classllvm_1_1value__use__iterator.html">const_use_iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = <a class="code" href="classllvm_1_1Value.html#a413abcab8dbc3900fc2fde96a5d8fca6">use_begin</a>(), E = <a class="code" href="classllvm_1_1Value.html#ad86469939d2a8bdd4169be9403b89f5a">use_end</a>();
+<a name="l00158"></a>00158     <span class="keywordflow">if</span> (I == E) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00159"></a>00159     <span class="keywordflow">return</span> ++I == E;
+<a name="l00160"></a>00160   }
+<a name="l00161"></a>00161 <span class="comment"></span>
+<a name="l00162"></a>00162 <span class="comment">  /// hasNUses - Return true if this Value has exactly N users.</span>
+<a name="l00163"></a>00163 <span class="comment">  ///</span>
+<a name="l00164"></a>00164 <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Value.html#ad58ff1cf33943e54cc5bed1aba593928">hasNUses</a>(<span class="keywordtype">unsigned</span> N) <span class="keyword">const</span>;
+<a name="l00165"></a>00165 <span class="comment"></span>
+<a name="l00166"></a>00166 <span class="comment">  /// hasNUsesOrMore - Return true if this value has N users or more.  This is</span>
+<a name="l00167"></a>00167 <span class="comment">  /// logically equivalent to getNumUses() >= N.</span>
+<a name="l00168"></a>00168 <span class="comment">  ///</span>
+<a name="l00169"></a>00169 <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Value.html#a9ea9a909185ecbf9fc81ab35ebfb11d6">hasNUsesOrMore</a>(<span class="keywordtype">unsigned</span> N) <span class="keyword">const</span>;
+<a name="l00170"></a>00170 
+<a name="l00171"></a>00171   <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Value.html#ae653031669d53ef43398e34c620131a5">isUsedInBasicBlock</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *BB) <span class="keyword">const</span>;
+<a name="l00172"></a>00172 <span class="comment"></span>
+<a name="l00173"></a>00173 <span class="comment">  /// getNumUses - This method computes the number of uses of this Value.  This</span>
+<a name="l00174"></a>00174 <span class="comment">  /// is a linear time operation.  Use hasOneUse, hasNUses, or hasNUsesOrMore</span>
+<a name="l00175"></a>00175 <span class="comment">  /// to check for specific values.</span>
+<a name="l00176"></a>00176 <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1Value.html#a380559e99b47632a34f74de7c1d03cc0">getNumUses</a>() <span class="keyword">const</span>;
+<a name="l00177"></a>00177 <span class="comment"></span>
+<a name="l00178"></a>00178 <span class="comment">  /// addUse - This method should only be used by the Use class.</span>
+<a name="l00179"></a>00179 <span class="comment">  ///</span>
+<a name="l00180"></a><a class="code" href="classllvm_1_1Value.html#aa8c61025e1632cf57e24e59163e3df9c">00180</a> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Value.html#aa8c61025e1632cf57e24e59163e3df9c">addUse</a>(<a class="code" href="classllvm_1_1Use.html">Use</a> &U) { U.addToList(&UseList); }
+<a name="l00181"></a>00181 <span class="comment"></span>
+<a name="l00182"></a>00182 <span class="comment">  /// An enumeration for keeping track of the concrete subclass of Value that</span>
+<a name="l00183"></a>00183 <span class="comment">  /// is actually instantiated. Values of this enumeration are kept in the </span>
+<a name="l00184"></a>00184 <span class="comment">  /// Value classes SubclassID field. They are used for concrete type</span>
+<a name="l00185"></a>00185 <span class="comment">  /// identification.</span>
+<a name="l00186"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0">00186</a> <span class="comment"></span>  <span class="keyword">enum</span> <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0">ValueTy</a> {
+<a name="l00187"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a12e67587956f3686b81c118088795122">00187</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a12e67587956f3686b81c118088795122">ArgumentVal</a>,              <span class="comment">// This is an instance of Argument</span>
+<a name="l00188"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0ab808ad17b9c21de1edbe2e723aabddc7">00188</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0ab808ad17b9c21de1edbe2e723aabddc7">BasicBlockVal</a>,            <span class="comment">// This is an instance of BasicBlock</span>
+<a name="l00189"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0acf6cf4dfd0f75d7c31af1f6400d60116">00189</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0acf6cf4dfd0f75d7c31af1f6400d60116">FunctionVal</a>,              <span class="comment">// This is an instance of Function</span>
+<a name="l00190"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a73041e08212646f905d03d72e9af48cc">00190</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a73041e08212646f905d03d72e9af48cc">GlobalAliasVal</a>,           <span class="comment">// This is an instance of GlobalAlias</span>
+<a name="l00191"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a8860c970f9194a26c19b885c07dbb58a">00191</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a8860c970f9194a26c19b885c07dbb58a">GlobalVariableVal</a>,        <span class="comment">// This is an instance of GlobalVariable</span>
+<a name="l00192"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0aa2d0ca89bfea4e499841f8a27547d291">00192</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0aa2d0ca89bfea4e499841f8a27547d291">UndefValueVal</a>,            <span class="comment">// This is an instance of UndefValue</span>
+<a name="l00193"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0ad6fbb85685eb6fe3c79141fa27e88122">00193</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0ad6fbb85685eb6fe3c79141fa27e88122">BlockAddressVal</a>,          <span class="comment">// This is an instance of BlockAddress</span>
+<a name="l00194"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a77ba86313e9ad342af55fd6b620760ef">00194</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a77ba86313e9ad342af55fd6b620760ef">ConstantExprVal</a>,          <span class="comment">// This is an instance of ConstantExpr</span>
+<a name="l00195"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0ad83cecbab8a5ea3d20f80a0f0609ca0d">00195</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0ad83cecbab8a5ea3d20f80a0f0609ca0d">ConstantAggregateZeroVal</a>, <span class="comment">// This is an instance of ConstantAggregateZero</span>
+<a name="l00196"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0aa1dbed968677846ee7dc1a3ec1db614d">00196</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0aa1dbed968677846ee7dc1a3ec1db614d">ConstantDataArrayVal</a>,     <span class="comment">// This is an instance of ConstantDataArray</span>
+<a name="l00197"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0af116944546e62cc744a9ee0bd3afcb91">00197</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0af116944546e62cc744a9ee0bd3afcb91">ConstantDataVectorVal</a>,    <span class="comment">// This is an instance of ConstantDataVector</span>
+<a name="l00198"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a4cdbcef87e1cc539593386c10b085d20">00198</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a4cdbcef87e1cc539593386c10b085d20">ConstantIntVal</a>,           <span class="comment">// This is an instance of ConstantInt</span>
+<a name="l00199"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a022dbd89849158288238893820e0f1a3">00199</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a022dbd89849158288238893820e0f1a3">ConstantFPVal</a>,            <span class="comment">// This is an instance of ConstantFP</span>
+<a name="l00200"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a3406c10200e2497e6d4075ff5ffe89bc">00200</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a3406c10200e2497e6d4075ff5ffe89bc">ConstantArrayVal</a>,         <span class="comment">// This is an instance of ConstantArray</span>
+<a name="l00201"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0aaf027afa70e52a02fc05d6112bbfbb67">00201</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0aaf027afa70e52a02fc05d6112bbfbb67">ConstantStructVal</a>,        <span class="comment">// This is an instance of ConstantStruct</span>
+<a name="l00202"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a9c3271d0bbe21209b819de6c996df233">00202</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a9c3271d0bbe21209b819de6c996df233">ConstantVectorVal</a>,        <span class="comment">// This is an instance of ConstantVector</span>
+<a name="l00203"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a8369af199475670e3198ea90a57edc2e">00203</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a8369af199475670e3198ea90a57edc2e">ConstantPointerNullVal</a>,   <span class="comment">// This is an instance of ConstantPointerNull</span>
+<a name="l00204"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a7424b3e47efcfb292d08afa312a1b857">00204</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a7424b3e47efcfb292d08afa312a1b857">MDNodeVal</a>,                <span class="comment">// This is an instance of MDNode</span>
+<a name="l00205"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a7819f6e7f0d96e39942523ed8a11d305">00205</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a7819f6e7f0d96e39942523ed8a11d305">MDStringVal</a>,              <span class="comment">// This is an instance of MDString</span>
+<a name="l00206"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a47980378076d543ddda1fe321bb6a068">00206</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a47980378076d543ddda1fe321bb6a068">InlineAsmVal</a>,             <span class="comment">// This is an instance of InlineAsm</span>
+<a name="l00207"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a59c922cbffdcac80e877a47432944999">00207</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a59c922cbffdcac80e877a47432944999">PseudoSourceValueVal</a>,     <span class="comment">// This is an instance of PseudoSourceValue</span>
+<a name="l00208"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a584d0165dda30a5f02e5c1390d78a9db">00208</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a584d0165dda30a5f02e5c1390d78a9db">FixedStackPseudoSourceValueVal</a>, <span class="comment">// This is an instance of </span>
+<a name="l00209"></a>00209                                     <span class="comment">// FixedStackPseudoSourceValue</span>
+<a name="l00210"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a8221843f7f75185ce7697dca43cb6a02">00210</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a8221843f7f75185ce7697dca43cb6a02">InstructionVal</a>,           <span class="comment">// This is an instance of Instruction</span>
+<a name="l00211"></a>00211     <span class="comment">// Enum values starting at InstructionVal are used for Instructions;</span>
+<a name="l00212"></a>00212     <span class="comment">// don't add new values here!</span>
+<a name="l00213"></a>00213 
+<a name="l00214"></a>00214     <span class="comment">// Markers:</span>
+<a name="l00215"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0aeac236cf372472f6c9fd67711aac776a">00215</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0aeac236cf372472f6c9fd67711aac776a">ConstantFirstVal</a> = <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0acf6cf4dfd0f75d7c31af1f6400d60116">FunctionVal</a>,
+<a name="l00216"></a><a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0ac583a95f440729783d14333490b41a07">00216</a>     <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0ac583a95f440729783d14333490b41a07">ConstantLastVal</a>  = <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a8369af199475670e3198ea90a57edc2e">ConstantPointerNullVal</a>
+<a name="l00217"></a>00217   };
+<a name="l00218"></a>00218 <span class="comment"></span>
+<a name="l00219"></a>00219 <span class="comment">  /// getValueID - Return an ID for the concrete type of this object.  This is</span>
+<a name="l00220"></a>00220 <span class="comment">  /// used to implement the classof checks.  This should not be used for any</span>
+<a name="l00221"></a>00221 <span class="comment">  /// other purpose, as the values may change as LLVM evolves.  Also, note that</span>
+<a name="l00222"></a>00222 <span class="comment">  /// for instructions, the Instruction's opcode is added to InstructionVal. So</span>
+<a name="l00223"></a>00223 <span class="comment">  /// this means three things:</span>
+<a name="l00224"></a>00224 <span class="comment">  /// # there is no value with code InstructionVal (no opcode==0).</span>
+<a name="l00225"></a>00225 <span class="comment">  /// # there are more possible values for the value type than in ValueTy enum.</span>
+<a name="l00226"></a>00226 <span class="comment">  /// # the InstructionVal enumerator must be the highest valued enumerator in</span>
+<a name="l00227"></a>00227 <span class="comment">  ///   the ValueTy enum.</span>
+<a name="l00228"></a><a class="code" href="classllvm_1_1Value.html#a2983b7b4998ef5b9f51b18c01588af3c">00228</a> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1Value.html#a2983b7b4998ef5b9f51b18c01588af3c">getValueID</a>()<span class="keyword"> const </span>{
+<a name="l00229"></a>00229     <span class="keywordflow">return</span> SubclassID;
+<a name="l00230"></a>00230   }
+<a name="l00231"></a>00231 <span class="comment"></span>
+<a name="l00232"></a>00232 <span class="comment">  /// getRawSubclassOptionalData - Return the raw optional flags value</span>
+<a name="l00233"></a>00233 <span class="comment">  /// contained in this value. This should only be used when testing two</span>
+<a name="l00234"></a>00234 <span class="comment">  /// Values for equivalence.</span>
+<a name="l00235"></a><a class="code" href="classllvm_1_1Value.html#a7a05753812658a2c4bdd354af156b9f8">00235</a> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1Value.html#a7a05753812658a2c4bdd354af156b9f8">getRawSubclassOptionalData</a>()<span class="keyword"> const </span>{
+<a name="l00236"></a>00236     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Value.html#a21e38886795ed32ec28d4eb5dc92b6a4">SubclassOptionalData</a>;
+<a name="l00237"></a>00237   }
+<a name="l00238"></a>00238 <span class="comment"></span>
+<a name="l00239"></a>00239 <span class="comment">  /// clearSubclassOptionalData - Clear the optional flags contained in</span>
+<a name="l00240"></a>00240 <span class="comment">  /// this value.</span>
+<a name="l00241"></a><a class="code" href="classllvm_1_1Value.html#a48790dc28d4007833380faed30c9f44c">00241</a> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Value.html#a48790dc28d4007833380faed30c9f44c">clearSubclassOptionalData</a>() {
+<a name="l00242"></a>00242     <a class="code" href="classllvm_1_1Value.html#a21e38886795ed32ec28d4eb5dc92b6a4">SubclassOptionalData</a> = 0;
+<a name="l00243"></a>00243   }
+<a name="l00244"></a>00244 <span class="comment"></span>
+<a name="l00245"></a>00245 <span class="comment">  /// hasSameSubclassOptionalData - Test whether the optional flags contained</span>
+<a name="l00246"></a>00246 <span class="comment">  /// in this value are equal to the optional flags in the given value.</span>
+<a name="l00247"></a><a class="code" href="classllvm_1_1Value.html#a821826adbabcf4e58b2bc4dda8069d06">00247</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Value.html#a821826adbabcf4e58b2bc4dda8069d06">hasSameSubclassOptionalData</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *V)<span class="keyword"> const </span>{
+<a name="l00248"></a>00248     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1Value.html#a21e38886795ed32ec28d4eb5dc92b6a4">SubclassOptionalData</a> == V-><a class="code" href="classllvm_1_1Value.html#a21e38886795ed32ec28d4eb5dc92b6a4">SubclassOptionalData</a>;
+<a name="l00249"></a>00249   }
+<a name="l00250"></a>00250 <span class="comment"></span>
+<a name="l00251"></a>00251 <span class="comment">  /// intersectOptionalDataWith - Clear any optional flags in this value</span>
+<a name="l00252"></a>00252 <span class="comment">  /// that are not also set in the given value.</span>
+<a name="l00253"></a><a class="code" href="classllvm_1_1Value.html#a12b091e586dea5849c4d85723d2cba1b">00253</a> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Value.html#a12b091e586dea5849c4d85723d2cba1b">intersectOptionalDataWith</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *V) {
+<a name="l00254"></a>00254     <a class="code" href="classllvm_1_1Value.html#a21e38886795ed32ec28d4eb5dc92b6a4">SubclassOptionalData</a> &= V-><a class="code" href="classllvm_1_1Value.html#a21e38886795ed32ec28d4eb5dc92b6a4">SubclassOptionalData</a>;
+<a name="l00255"></a>00255   }
+<a name="l00256"></a>00256 <span class="comment"></span>
+<a name="l00257"></a>00257 <span class="comment">  /// hasValueHandle - Return true if there is a value handle associated with</span>
+<a name="l00258"></a>00258 <span class="comment">  /// this value.</span>
+<a name="l00259"></a><a class="code" href="classllvm_1_1Value.html#a637b563c6f89328b4e35e9454094be73">00259</a> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Value.html#a637b563c6f89328b4e35e9454094be73">hasValueHandle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> HasValueHandle; }
+<a name="l00260"></a>00260 <span class="comment"></span>
+<a name="l00261"></a>00261 <span class="comment">  /// stripPointerCasts - This method strips off any unneeded pointer casts and</span>
+<a name="l00262"></a>00262 <span class="comment">  /// all-zero GEPs from the specified value, returning the original uncasted</span>
+<a name="l00263"></a>00263 <span class="comment">  /// value. If this is called on a non-pointer value, it returns 'this'.</span>
+<a name="l00264"></a>00264 <span class="comment"></span>  <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *<a class="code" href="classllvm_1_1Value.html#a38ea12c04523d63adda732b9c5d6da0a">stripPointerCasts</a>();
+<a name="l00265"></a><a class="code" href="classllvm_1_1Value.html#ad6eebd8f4162320e4b31cbef2428808b">00265</a>   <span class="keyword">const</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *<a class="code" href="classllvm_1_1Value.html#ad6eebd8f4162320e4b31cbef2428808b">stripPointerCasts</a>()<span class="keyword"> const </span>{
+<a name="l00266"></a>00266     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classllvm_1_1Value.html#a38ea12c04523d63adda732b9c5d6da0a">stripPointerCasts</a>();
+<a name="l00267"></a>00267   }
+<a name="l00268"></a>00268 <span class="comment"></span>
+<a name="l00269"></a>00269 <span class="comment">  /// stripInBoundsConstantOffsets - This method strips off unneeded pointer casts and</span>
+<a name="l00270"></a>00270 <span class="comment">  /// all-constant GEPs from the specified value, returning the original</span>
+<a name="l00271"></a>00271 <span class="comment">  /// pointer value. If this is called on a non-pointer value, it returns</span>
+<a name="l00272"></a>00272 <span class="comment">  /// 'this'.</span>
+<a name="l00273"></a>00273 <span class="comment"></span>  <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *<a class="code" href="classllvm_1_1Value.html#a6b068d79609cc605e06f84f564f50cd0">stripInBoundsConstantOffsets</a>();
+<a name="l00274"></a><a class="code" href="classllvm_1_1Value.html#ac6d3159cf7640bd18a8737156d6bd415">00274</a>   <span class="keyword">const</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *<a class="code" href="classllvm_1_1Value.html#ac6d3159cf7640bd18a8737156d6bd415">stripInBoundsConstantOffsets</a>()<span class="keyword"> const </span>{
+<a name="l00275"></a>00275     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classllvm_1_1Value.html#a6b068d79609cc605e06f84f564f50cd0">stripInBoundsConstantOffsets</a>();
+<a name="l00276"></a>00276   }
+<a name="l00277"></a>00277 <span class="comment"></span>
+<a name="l00278"></a>00278 <span class="comment">  /// stripInBoundsOffsets - This method strips off unneeded pointer casts and</span>
+<a name="l00279"></a>00279 <span class="comment">  /// any in-bounds Offsets from the specified value, returning the original</span>
+<a name="l00280"></a>00280 <span class="comment">  /// pointer value. If this is called on a non-pointer value, it returns</span>
+<a name="l00281"></a>00281 <span class="comment">  /// 'this'.</span>
+<a name="l00282"></a>00282 <span class="comment"></span>  <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *<a class="code" href="classllvm_1_1Value.html#a30fec2a6a53ed66b12318765c8feac13">stripInBoundsOffsets</a>();
+<a name="l00283"></a><a class="code" href="classllvm_1_1Value.html#ac9b3286c10743a605b1ebb93de6b537d">00283</a>   <span class="keyword">const</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *<a class="code" href="classllvm_1_1Value.html#ac9b3286c10743a605b1ebb93de6b537d">stripInBoundsOffsets</a>()<span class="keyword"> const </span>{
+<a name="l00284"></a>00284     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classllvm_1_1Value.html#a30fec2a6a53ed66b12318765c8feac13">stripInBoundsOffsets</a>();
+<a name="l00285"></a>00285   }
+<a name="l00286"></a>00286 <span class="comment"></span>
+<a name="l00287"></a>00287 <span class="comment">  /// isDereferenceablePointer - Test if this value is always a pointer to</span>
+<a name="l00288"></a>00288 <span class="comment">  /// allocated and suitably aligned memory for a simple load or store.</span>
+<a name="l00289"></a>00289 <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1Value.html#ae6a2729f1446acc2ae3e5a05bc2a5a4b">isDereferenceablePointer</a>() <span class="keyword">const</span>;
+<a name="l00290"></a>00290   <span class="comment"></span>
+<a name="l00291"></a>00291 <span class="comment">  /// DoPHITranslation - If this value is a PHI node with CurBB as its parent,</span>
+<a name="l00292"></a>00292 <span class="comment">  /// return the value in the PHI node corresponding to PredBB.  If not, return</span>
+<a name="l00293"></a>00293 <span class="comment">  /// ourself.  This is useful if you want to know the value something has in a</span>
+<a name="l00294"></a>00294 <span class="comment">  /// predecessor block.</span>
+<a name="l00295"></a>00295 <span class="comment"></span>  <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *<a class="code" href="classllvm_1_1Value.html#a7a5732db5f7198200d61bd40da6e488c">DoPHITranslation</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *CurBB, <span class="keyword">const</span> <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *PredBB);
+<a name="l00296"></a>00296 
+<a name="l00297"></a><a class="code" href="classllvm_1_1Value.html#aa082d5bbd2dfc0cff8195b3c165aaa84">00297</a>   <span class="keyword">const</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *<a class="code" href="classllvm_1_1Value.html#a7a5732db5f7198200d61bd40da6e488c">DoPHITranslation</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *CurBB,
+<a name="l00298"></a>00298                                 <span class="keyword">const</span> <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *PredBB)<span class="keyword"> const</span>{
+<a name="l00299"></a>00299     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classllvm_1_1Value.html#a7a5732db5f7198200d61bd40da6e488c">DoPHITranslation</a>(CurBB, PredBB);
+<a name="l00300"></a>00300   }
+<a name="l00301"></a>00301   <span class="comment"></span>
+<a name="l00302"></a>00302 <span class="comment">  /// MaximumAlignment - This is the greatest alignment value supported by</span>
+<a name="l00303"></a>00303 <span class="comment">  /// load, store, and alloca instructions, and global values.</span>
+<a name="l00304"></a><a class="code" href="classllvm_1_1Value.html#a2885f6c5817ff68bc24bd1e22e221740">00304</a> <span class="comment"></span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1Value.html#a2885f6c5817ff68bc24bd1e22e221740">MaximumAlignment</a> = 1u << 29;
+<a name="l00305"></a>00305   <span class="comment"></span>
+<a name="l00306"></a>00306 <span class="comment">  /// mutateType - Mutate the type of this Value to be of the specified type.</span>
+<a name="l00307"></a>00307 <span class="comment">  /// Note that this is an extremely dangerous operation which can create</span>
+<a name="l00308"></a>00308 <span class="comment">  /// completely invalid IR very easily.  It is strongly recommended that you</span>
+<a name="l00309"></a>00309 <span class="comment">  /// recreate IR objects with the right types instead of mutating them in</span>
+<a name="l00310"></a>00310 <span class="comment">  /// place.</span>
+<a name="l00311"></a><a class="code" href="classllvm_1_1Value.html#ac0f09c2c9951158f9eecfaf7068d7b20">00311</a> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Value.html#ac0f09c2c9951158f9eecfaf7068d7b20">mutateType</a>(<a class="code" href="classllvm_1_1Type.html">Type</a> *Ty) {
+<a name="l00312"></a>00312     VTy = Ty;
+<a name="l00313"></a>00313   }
+<a name="l00314"></a>00314   
+<a name="l00315"></a>00315 <span class="keyword">protected</span>:
+<a name="l00316"></a><a class="code" href="classllvm_1_1Value.html#a2dce2d8e4af845c036ec5590d37ab5f4">00316</a>   <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="classllvm_1_1Value.html#a2dce2d8e4af845c036ec5590d37ab5f4">getSubclassDataFromValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> SubclassData; }
+<a name="l00317"></a><a class="code" href="classllvm_1_1Value.html#aae37705b598ef612f698198dc33d6f65">00317</a>   <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Value.html#aae37705b598ef612f698198dc33d6f65">setValueSubclassData</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> D) { SubclassData = D; }
+<a name="l00318"></a>00318 };
+<a name="l00319"></a>00319 
+<a name="l00320"></a><a class="code" href="namespacellvm.html#a8c8a2cceb97d290d7298ef2c40ced2c0">00320</a> <span class="keyword">inline</span> <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &<a class="code" href="namespacellvm.html#a6a02d446812b76c3b271d9e3e3c77b49">operator<<</a>(<a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &OS, <span class="keyword">const</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> &V) {
+<a name="l00321"></a>00321   V.<a class="code" href="classllvm_1_1Value.html#a8684e39c1b3c53d525b96996b5b771ed">print</a>(OS);
+<a name="l00322"></a>00322   <span class="keywordflow">return</span> OS;
+<a name="l00323"></a>00323 }
+<a name="l00324"></a>00324   
+<a name="l00325"></a><a class="code" href="classllvm_1_1Use.html#a40360b4fa7b8e6920a68e5a8a0814f1f">00325</a> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1Use.html#a40360b4fa7b8e6920a68e5a8a0814f1f">Use::set</a>(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *V) {
+<a name="l00326"></a>00326   <span class="keywordflow">if</span> (Val) removeFromList();
+<a name="l00327"></a>00327   Val = V;
+<a name="l00328"></a>00328   <span class="keywordflow">if</span> (V) V-><a class="code" href="classllvm_1_1Value.html#aa8c61025e1632cf57e24e59163e3df9c">addUse</a>(*<span class="keyword">this</span>);
+<a name="l00329"></a>00329 }
+<a name="l00330"></a>00330 
+<a name="l00331"></a>00331 
+<a name="l00332"></a>00332 <span class="comment">// isa - Provide some specializations of isa so that we don't have to include</span>
+<a name="l00333"></a>00333 <span class="comment">// the subtype header files to test to see if the value is a subclass...</span>
+<a name="l00334"></a>00334 <span class="comment">//</span>
+<a name="l00335"></a><a class="code" href="structllvm_1_1isa__impl_3_01Constant_00_01Value_01_4.html">00335</a> <span class="keyword">template</span> <> <span class="keyword">struct </span><a class="code" href="structllvm_1_1isa__impl.html">isa_impl</a><<a class="code" href="classllvm_1_1Constant.html" title="LLVM Constant Representation.">Constant</a>, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>> {
+<a name="l00336"></a><a class="code" href="structllvm_1_1isa__impl_3_01Constant_00_01Value_01_4.html#ae6e3fb6804174101033a5cd179101780">00336</a>   <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1isa__impl_3_01Constant_00_01Value_01_4.html#ae6e3fb6804174101033a5cd179101780">doit</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> &Val) {
+<a name="l00337"></a>00337     <span class="keywordflow">return</span> Val.<a class="code" href="classllvm_1_1Value.html#a2983b7b4998ef5b9f51b18c01588af3c">getValueID</a>() >= <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0aeac236cf372472f6c9fd67711aac776a">Value::ConstantFirstVal</a> &&
+<a name="l00338"></a>00338       Val.<a class="code" href="classllvm_1_1Value.html#a2983b7b4998ef5b9f51b18c01588af3c">getValueID</a>() <= <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0ac583a95f440729783d14333490b41a07">Value::ConstantLastVal</a>;
+<a name="l00339"></a>00339   }
+<a name="l00340"></a>00340 };
+<a name="l00341"></a>00341 
+<a name="l00342"></a><a class="code" href="structllvm_1_1isa__impl_3_01Argument_00_01Value_01_4.html">00342</a> <span class="keyword">template</span> <> <span class="keyword">struct </span><a class="code" href="structllvm_1_1isa__impl.html">isa_impl</a><<a class="code" href="classllvm_1_1Argument.html" title="LLVM Argument representation.">Argument</a>, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>> {
+<a name="l00343"></a><a class="code" href="structllvm_1_1isa__impl_3_01Argument_00_01Value_01_4.html#aa547d248f12fe80ad1151538a12f7a3d">00343</a>   <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1isa__impl_3_01Argument_00_01Value_01_4.html#aa547d248f12fe80ad1151538a12f7a3d">doit</a> (<span class="keyword">const</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> &Val) {
+<a name="l00344"></a>00344     <span class="keywordflow">return</span> Val.<a class="code" href="classllvm_1_1Value.html#a2983b7b4998ef5b9f51b18c01588af3c">getValueID</a>() == <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a12e67587956f3686b81c118088795122">Value::ArgumentVal</a>;
+<a name="l00345"></a>00345   }
+<a name="l00346"></a>00346 };
+<a name="l00347"></a>00347 
+<a name="l00348"></a><a class="code" href="structllvm_1_1isa__impl_3_01InlineAsm_00_01Value_01_4.html">00348</a> <span class="keyword">template</span> <> <span class="keyword">struct </span><a class="code" href="structllvm_1_1isa__impl.html">isa_impl</a><<a class="code" href="classllvm_1_1InlineAsm.html">InlineAsm</a>, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>> { 
+<a name="l00349"></a><a class="code" href="structllvm_1_1isa__impl_3_01InlineAsm_00_01Value_01_4.html#a6f99f49b2dcef36f7b31c8ed64145307">00349</a>   <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1isa__impl_3_01InlineAsm_00_01Value_01_4.html#a6f99f49b2dcef36f7b31c8ed64145307">doit</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> &Val) {
+<a name="l00350"></a>00350     <span class="keywordflow">return</span> Val.<a class="code" href="classllvm_1_1Value.html#a2983b7b4998ef5b9f51b18c01588af3c">getValueID</a>() == <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a47980378076d543ddda1fe321bb6a068">Value::InlineAsmVal</a>;
+<a name="l00351"></a>00351   }
+<a name="l00352"></a>00352 };
+<a name="l00353"></a>00353 
+<a name="l00354"></a><a class="code" href="structllvm_1_1isa__impl_3_01Instruction_00_01Value_01_4.html">00354</a> <span class="keyword">template</span> <> <span class="keyword">struct </span><a class="code" href="structllvm_1_1isa__impl.html">isa_impl</a><<a class="code" href="classllvm_1_1Instruction.html">Instruction</a>, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>> { 
+<a name="l00355"></a><a class="code" href="structllvm_1_1isa__impl_3_01Instruction_00_01Value_01_4.html#a16b7dab711f014635a047d74777c727b">00355</a>   <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1isa__impl_3_01Instruction_00_01Value_01_4.html#a16b7dab711f014635a047d74777c727b">doit</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> &Val) {
+<a name="l00356"></a>00356     <span class="keywordflow">return</span> Val.<a class="code" href="classllvm_1_1Value.html#a2983b7b4998ef5b9f51b18c01588af3c">getValueID</a>() >= <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a8221843f7f75185ce7697dca43cb6a02">Value::InstructionVal</a>;
+<a name="l00357"></a>00357   }
+<a name="l00358"></a>00358 };
+<a name="l00359"></a>00359 
+<a name="l00360"></a><a class="code" href="structllvm_1_1isa__impl_3_01BasicBlock_00_01Value_01_4.html">00360</a> <span class="keyword">template</span> <> <span class="keyword">struct </span><a class="code" href="structllvm_1_1isa__impl.html">isa_impl</a><<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>> { 
+<a name="l00361"></a><a class="code" href="structllvm_1_1isa__impl_3_01BasicBlock_00_01Value_01_4.html#a0fa4fd108e41b40df6d3c8152a7b8f48">00361</a>   <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1isa__impl_3_01BasicBlock_00_01Value_01_4.html#a0fa4fd108e41b40df6d3c8152a7b8f48">doit</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> &Val) {
+<a name="l00362"></a>00362     <span class="keywordflow">return</span> Val.<a class="code" href="classllvm_1_1Value.html#a2983b7b4998ef5b9f51b18c01588af3c">getValueID</a>() == <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0ab808ad17b9c21de1edbe2e723aabddc7">Value::BasicBlockVal</a>;
+<a name="l00363"></a>00363   }
+<a name="l00364"></a>00364 };
+<a name="l00365"></a>00365 
+<a name="l00366"></a><a class="code" href="structllvm_1_1isa__impl_3_01Function_00_01Value_01_4.html">00366</a> <span class="keyword">template</span> <> <span class="keyword">struct </span><a class="code" href="structllvm_1_1isa__impl.html">isa_impl</a><<a class="code" href="classllvm_1_1Function.html">Function</a>, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>> { 
+<a name="l00367"></a><a class="code" href="structllvm_1_1isa__impl_3_01Function_00_01Value_01_4.html#a4b98b530d0333e39fa119c18e5b34401">00367</a>   <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1isa__impl_3_01Function_00_01Value_01_4.html#a4b98b530d0333e39fa119c18e5b34401">doit</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> &Val) {
+<a name="l00368"></a>00368     <span class="keywordflow">return</span> Val.<a class="code" href="classllvm_1_1Value.html#a2983b7b4998ef5b9f51b18c01588af3c">getValueID</a>() == <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0acf6cf4dfd0f75d7c31af1f6400d60116">Value::FunctionVal</a>;
+<a name="l00369"></a>00369   }
+<a name="l00370"></a>00370 };
+<a name="l00371"></a>00371 
+<a name="l00372"></a><a class="code" href="structllvm_1_1isa__impl_3_01GlobalVariable_00_01Value_01_4.html">00372</a> <span class="keyword">template</span> <> <span class="keyword">struct </span><a class="code" href="structllvm_1_1isa__impl.html">isa_impl</a><<a class="code" href="classllvm_1_1GlobalVariable.html">GlobalVariable</a>, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>> { 
+<a name="l00373"></a><a class="code" href="structllvm_1_1isa__impl_3_01GlobalVariable_00_01Value_01_4.html#a892343ab24cda5239371ddf5b298d658">00373</a>   <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1isa__impl_3_01GlobalVariable_00_01Value_01_4.html#a892343ab24cda5239371ddf5b298d658">doit</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> &Val) {
+<a name="l00374"></a>00374     <span class="keywordflow">return</span> Val.<a class="code" href="classllvm_1_1Value.html#a2983b7b4998ef5b9f51b18c01588af3c">getValueID</a>() == <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a8860c970f9194a26c19b885c07dbb58a">Value::GlobalVariableVal</a>;
+<a name="l00375"></a>00375   }
+<a name="l00376"></a>00376 };
+<a name="l00377"></a>00377 
+<a name="l00378"></a><a class="code" href="structllvm_1_1isa__impl_3_01GlobalAlias_00_01Value_01_4.html">00378</a> <span class="keyword">template</span> <> <span class="keyword">struct </span><a class="code" href="structllvm_1_1isa__impl.html">isa_impl</a><<a class="code" href="classllvm_1_1GlobalAlias.html">GlobalAlias</a>, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>> { 
+<a name="l00379"></a><a class="code" href="structllvm_1_1isa__impl_3_01GlobalAlias_00_01Value_01_4.html#abec1415f535f0bb4a08e2ee1c1559ffd">00379</a>   <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1isa__impl_3_01GlobalAlias_00_01Value_01_4.html#abec1415f535f0bb4a08e2ee1c1559ffd">doit</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> &Val) {
+<a name="l00380"></a>00380     <span class="keywordflow">return</span> Val.<a class="code" href="classllvm_1_1Value.html#a2983b7b4998ef5b9f51b18c01588af3c">getValueID</a>() == <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a73041e08212646f905d03d72e9af48cc">Value::GlobalAliasVal</a>;
+<a name="l00381"></a>00381   }
+<a name="l00382"></a>00382 };
+<a name="l00383"></a>00383 
+<a name="l00384"></a><a class="code" href="structllvm_1_1isa__impl_3_01GlobalValue_00_01Value_01_4.html">00384</a> <span class="keyword">template</span> <> <span class="keyword">struct </span><a class="code" href="structllvm_1_1isa__impl.html">isa_impl</a><<a class="code" href="classllvm_1_1GlobalValue.html">GlobalValue</a>, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>> { 
+<a name="l00385"></a><a class="code" href="structllvm_1_1isa__impl_3_01GlobalValue_00_01Value_01_4.html#afaad3138be837a94eab8af399757836f">00385</a>   <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1isa__impl_3_01GlobalValue_00_01Value_01_4.html#afaad3138be837a94eab8af399757836f">doit</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> &Val) {
+<a name="l00386"></a>00386     <span class="keywordflow">return</span> isa<GlobalVariable>(Val) || isa<Function>(Val) ||
+<a name="l00387"></a>00387       isa<GlobalAlias>(Val);
+<a name="l00388"></a>00388   }
+<a name="l00389"></a>00389 };
+<a name="l00390"></a>00390 
+<a name="l00391"></a><a class="code" href="structllvm_1_1isa__impl_3_01MDNode_00_01Value_01_4.html">00391</a> <span class="keyword">template</span> <> <span class="keyword">struct </span><a class="code" href="structllvm_1_1isa__impl.html">isa_impl</a><<a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a>, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>> { 
+<a name="l00392"></a><a class="code" href="structllvm_1_1isa__impl_3_01MDNode_00_01Value_01_4.html#aeb9356cb24423cb4d163683937010f62">00392</a>   <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1isa__impl_3_01MDNode_00_01Value_01_4.html#aeb9356cb24423cb4d163683937010f62">doit</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> &Val) {
+<a name="l00393"></a>00393     <span class="keywordflow">return</span> Val.<a class="code" href="classllvm_1_1Value.html#a2983b7b4998ef5b9f51b18c01588af3c">getValueID</a>() == <a class="code" href="classllvm_1_1Value.html#af6d11b38374c4f9e6ba3a6407da2dee0a7424b3e47efcfb292d08afa312a1b857">Value::MDNodeVal</a>;
+<a name="l00394"></a>00394   }
+<a name="l00395"></a>00395 };
+<a name="l00396"></a>00396   
+<a name="l00397"></a>00397 <span class="comment">// Value* is only 4-byte aligned.</span>
+<a name="l00398"></a>00398 <span class="keyword">template</span><>
+<a name="l00399"></a><a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01Value_01_5_01_4.html">00399</a> <span class="keyword">class </span><a class="code" href="classllvm_1_1PointerLikeTypeTraits.html">PointerLikeTypeTraits</a><<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>*> {
+<a name="l00400"></a>00400   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>* <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">PT</a>;
+<a name="l00401"></a>00401 <span class="keyword">public</span>:
+<a name="l00402"></a><a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01Value_01_5_01_4.html#a364e3f005019d6eb2643b5acf15103c5">00402</a>   <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> *<a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01Value_01_5_01_4.html#a364e3f005019d6eb2643b5acf15103c5">getAsVoidPointer</a>(PT P) { <span class="keywordflow">return</span> P; }
+<a name="l00403"></a><a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01Value_01_5_01_4.html#afc856699cd398ec175a109b05f1471f5">00403</a>   <span class="keyword">static</span> <span class="keyword">inline</span> PT <a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01Value_01_5_01_4.html#afc856699cd398ec175a109b05f1471f5">getFromVoidPointer</a>(<span class="keywordtype">void</span> *P) {
+<a name="l00404"></a>00404     <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>PT<span class="keyword">></span>(P);
+<a name="l00405"></a>00405   }
+<a name="l00406"></a><a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01Value_01_5_01_4.html#af100d74f8868eb9b0e17f9f9a6f20648adde90c6b1d232a2bcf08423b20fc51e5">00406</a>   <span class="keyword">enum</span> { NumLowBitsAvailable = 2 };
+<a name="l00407"></a>00407 };
+<a name="l00408"></a>00408 
+<a name="l00409"></a>00409 } <span class="comment">// End llvm namespace</span>
+<a name="l00410"></a>00410 
+<a name="l00411"></a>00411 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:08 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/Windows_2Host_8inc.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Windows_2Host_8inc.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Windows_2Host_8inc.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Windows_2Host_8inc.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: Host.inc File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_3927ff15cdce1d22d8dcb33a29894069.html">Support</a>      </li>
+      <li class="navelem"><a class="el" href="dir_b7eec3d26332824c78eb22ae4472bfeb.html">Windows</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Windows/Host.inc File Reference</div>  </div>
+</div>
+<div class="contents">
+
+<p><a href="Windows_2Host_8inc_source.html">Go to the source code of this file.</a></p>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:30 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/Windows_2PathV2_8inc.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Windows_2PathV2_8inc.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Windows_2PathV2_8inc.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Windows_2PathV2_8inc.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: PathV2.inc File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_3927ff15cdce1d22d8dcb33a29894069.html">Support</a>      </li>
+      <li class="navelem"><a class="el" href="dir_b7eec3d26332824c78eb22ae4472bfeb.html">Windows</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Windows/PathV2.inc File Reference</div>  </div>
+</div>
+<div class="contents">
+
+<p><a href="Windows_2PathV2_8inc_source.html">Go to the source code of this file.</a></p>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:38 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/Windows_2Program_8inc_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Windows_2Program_8inc_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Windows_2Program_8inc_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Windows_2Program_8inc_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,477 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: Program.inc Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_3927ff15cdce1d22d8dcb33a29894069.html">Support</a>      </li>
+      <li class="navelem"><a class="el" href="dir_b7eec3d26332824c78eb22ae4472bfeb.html">Windows</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Windows/Program.inc</div>  </div>
+</div>
+<div class="contents">
+<a href="Windows_2Program_8inc.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===- Win32/Program.cpp - Win32 Program Implementation ------- -*- C++ -*-===//</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">//                     The LLVM Compiler Infrastructure</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">// This file is distributed under the University of Illinois Open Source</span>
+<a name="l00006"></a>00006 <span class="comment">// License. See LICENSE.TXT for details.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00009"></a>00009 <span class="comment">//</span>
+<a name="l00010"></a>00010 <span class="comment">// This file provides the Win32 specific implementation of the Program class.</span>
+<a name="l00011"></a>00011 <span class="comment">//</span>
+<a name="l00012"></a>00012 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00013"></a>00013 
+<a name="l00014"></a>00014 <span class="preprocessor">#include "<a class="code" href="Windows_8h.html">Windows.h</a>"</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include <cstdio></span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include <malloc.h></span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include <io.h></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include <fcntl.h></span>
+<a name="l00019"></a>00019 
+<a name="l00020"></a>00020 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00021"></a>00021 <span class="comment">//=== WARNING: Implementation here must contain only Win32 specific code</span>
+<a name="l00022"></a>00022 <span class="comment">//===          and must not be UNIX code</span>
+<a name="l00023"></a>00023 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00024"></a>00024 
+<a name="l00025"></a>00025 <span class="keyword">namespace </span>{
+<a name="l00026"></a>00026   <span class="keyword">struct </span>Win32ProcessInfo {
+<a name="l00027"></a>00027     HANDLE hProcess;
+<a name="l00028"></a>00028     DWORD  dwProcessId;
+<a name="l00029"></a>00029   };
+<a name="l00030"></a>00030 }
+<a name="l00031"></a>00031 
+<a name="l00032"></a>00032 <span class="keyword">namespace </span>llvm {
+<a name="l00033"></a>00033 <span class="keyword">using namespace </span>sys;
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035 <a class="code" href="classllvm_1_1sys_1_1Program.html#a97b69e14ebd3d741ffe446fc59d43cde">Program::Program</a>() : Data_(0) {}
+<a name="l00036"></a>00036 
+<a name="l00037"></a>00037 <a class="code" href="classllvm_1_1sys_1_1Program.html#abfa10862240ab1a7fc63bcf3d56c943e">Program::~Program</a>() {
+<a name="l00038"></a>00038   <span class="keywordflow">if</span> (Data_) {
+<a name="l00039"></a>00039     Win32ProcessInfo* wpi = <span class="keyword">reinterpret_cast<</span>Win32ProcessInfo*<span class="keyword">></span>(Data_);
+<a name="l00040"></a>00040     CloseHandle(wpi->hProcess);
+<a name="l00041"></a>00041     <span class="keyword">delete</span> wpi;
+<a name="l00042"></a>00042     Data_ = 0;
+<a name="l00043"></a>00043   }
+<a name="l00044"></a>00044 }
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046 <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1sys_1_1Program.html#a24050a181e28a6eccc238e2bfd43c06e" title="Return process ID of this program.">Program::GetPid</a>()<span class="keyword"> const </span>{
+<a name="l00047"></a>00047   Win32ProcessInfo* wpi = <span class="keyword">reinterpret_cast<</span>Win32ProcessInfo*<span class="keyword">></span>(Data_);
+<a name="l00048"></a>00048   <span class="keywordflow">return</span> wpi->dwProcessId;
+<a name="l00049"></a>00049 }
+<a name="l00050"></a>00050 
+<a name="l00051"></a>00051 <span class="comment">// This function just uses the PATH environment variable to find the program.</span>
+<a name="l00052"></a>00052 Path
+<a name="l00053"></a>00053 <a class="code" href="classllvm_1_1sys_1_1Program.html#af4d5a51728344025d5653944169f00d6" title="Construct a Program by finding it by name.">Program::FindProgramByName</a>(<span class="keyword">const</span> std::string& progName) {
+<a name="l00054"></a>00054 
+<a name="l00055"></a>00055   <span class="comment">// Check some degenerate cases</span>
+<a name="l00056"></a>00056   <span class="keywordflow">if</span> (progName.length() == 0) <span class="comment">// no program</span>
+<a name="l00057"></a>00057     <span class="keywordflow">return</span> Path();
+<a name="l00058"></a>00058   Path temp;
+<a name="l00059"></a>00059   <span class="keywordflow">if</span> (!temp.set(progName)) <span class="comment">// invalid name</span>
+<a name="l00060"></a>00060     <span class="keywordflow">return</span> Path();
+<a name="l00061"></a>00061   <span class="comment">// Return paths with slashes verbatim.</span>
+<a name="l00062"></a>00062   <span class="keywordflow">if</span> (progName.find(<span class="charliteral">'\\'</span>) != std::string::npos ||
+<a name="l00063"></a>00063       progName.find(<span class="charliteral">'/'</span>) != std::string::npos)
+<a name="l00064"></a>00064     <span class="keywordflow">return</span> temp;
+<a name="l00065"></a>00065 
+<a name="l00066"></a>00066   <span class="comment">// At this point, the file name is valid and does not contain slashes.</span>
+<a name="l00067"></a>00067   <span class="comment">// Let Windows search for it.</span>
+<a name="l00068"></a>00068   <span class="keywordtype">char</span> buffer[MAX_PATH];
+<a name="l00069"></a>00069   <span class="keywordtype">char</span> *dummy = NULL;
+<a name="l00070"></a>00070   DWORD len = SearchPath(NULL, progName.c_str(), <span class="stringliteral">".exe"</span>, MAX_PATH,
+<a name="l00071"></a>00071                          buffer, &dummy);
+<a name="l00072"></a>00072 
+<a name="l00073"></a>00073   <span class="comment">// See if it wasn't found.</span>
+<a name="l00074"></a>00074   <span class="keywordflow">if</span> (len == 0)
+<a name="l00075"></a>00075     <span class="keywordflow">return</span> Path();
+<a name="l00076"></a>00076 
+<a name="l00077"></a>00077   <span class="comment">// See if we got the entire path.</span>
+<a name="l00078"></a>00078   <span class="keywordflow">if</span> (len < MAX_PATH)
+<a name="l00079"></a>00079     <span class="keywordflow">return</span> Path(buffer);
+<a name="l00080"></a>00080 
+<a name="l00081"></a>00081   <span class="comment">// Buffer was too small; grow and retry.</span>
+<a name="l00082"></a>00082   <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00083"></a>00083     <span class="keywordtype">char</span> *b = <span class="keyword">reinterpret_cast<</span><span class="keywordtype">char</span> *<span class="keyword">></span>(_alloca(len+1));
+<a name="l00084"></a>00084     DWORD len2 = SearchPath(NULL, progName.c_str(), <span class="stringliteral">".exe"</span>, len+1, b, &dummy);
+<a name="l00085"></a>00085 
+<a name="l00086"></a>00086     <span class="comment">// It is unlikely the search failed, but it's always possible some file</span>
+<a name="l00087"></a>00087     <span class="comment">// was added or removed since the last search, so be paranoid...</span>
+<a name="l00088"></a>00088     <span class="keywordflow">if</span> (len2 == 0)
+<a name="l00089"></a>00089       <span class="keywordflow">return</span> Path();
+<a name="l00090"></a>00090     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (len2 <= len)
+<a name="l00091"></a>00091       <span class="keywordflow">return</span> Path(b);
+<a name="l00092"></a>00092 
+<a name="l00093"></a>00093     len = len2;
+<a name="l00094"></a>00094   }
+<a name="l00095"></a>00095 }
+<a name="l00096"></a>00096 
+<a name="l00097"></a>00097 <span class="keyword">static</span> HANDLE RedirectIO(<span class="keyword">const</span> Path *path, <span class="keywordtype">int</span> fd, std::string* ErrMsg) {
+<a name="l00098"></a>00098   HANDLE h;
+<a name="l00099"></a>00099   <span class="keywordflow">if</span> (path == 0) {
+<a name="l00100"></a>00100     DuplicateHandle(GetCurrentProcess(), (HANDLE)_get_osfhandle(fd),
+<a name="l00101"></a>00101                     GetCurrentProcess(), &h,
+<a name="l00102"></a>00102                     0, <a class="code" href="X86DisassemblerDecoder_8c.html#aa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, DUPLICATE_SAME_ACCESS);
+<a name="l00103"></a>00103     <span class="keywordflow">return</span> h;
+<a name="l00104"></a>00104   }
+<a name="l00105"></a>00105 
+<a name="l00106"></a>00106   <span class="keyword">const</span> <span class="keywordtype">char</span> *fname;
+<a name="l00107"></a>00107   <span class="keywordflow">if</span> (path->isEmpty())
+<a name="l00108"></a>00108     fname = <span class="stringliteral">"NUL"</span>;
+<a name="l00109"></a>00109   <span class="keywordflow">else</span>
+<a name="l00110"></a>00110     fname = path->c_str();
+<a name="l00111"></a>00111 
+<a name="l00112"></a>00112   SECURITY_ATTRIBUTES sa;
+<a name="l00113"></a>00113   sa.nLength = <span class="keyword">sizeof</span>(sa);
+<a name="l00114"></a>00114   sa.lpSecurityDescriptor = 0;
+<a name="l00115"></a>00115   sa.bInheritHandle = <a class="code" href="X86DisassemblerDecoder_8c.html#aa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>;
+<a name="l00116"></a>00116 
+<a name="l00117"></a>00117   h = CreateFile(fname, fd ? GENERIC_WRITE : GENERIC_READ, FILE_SHARE_READ,
+<a name="l00118"></a>00118                  &sa, fd == 0 ? OPEN_EXISTING : CREATE_ALWAYS,
+<a name="l00119"></a>00119                  FILE_ATTRIBUTE_NORMAL, NULL);
+<a name="l00120"></a>00120   <span class="keywordflow">if</span> (h == INVALID_HANDLE_VALUE) {
+<a name="l00121"></a>00121     <a class="code" href="Windows_8h.html#a981525300237361ea7940a9e4ece8d6a">MakeErrMsg</a>(ErrMsg, std::string(fname) + <span class="stringliteral">": Can't open file for "</span> +
+<a name="l00122"></a>00122         (fd ? <span class="stringliteral">"input: "</span> : <span class="stringliteral">"output: "</span>));
+<a name="l00123"></a>00123   }
+<a name="l00124"></a>00124 
+<a name="l00125"></a>00125   <span class="keywordflow">return</span> h;
+<a name="l00126"></a>00126 }
+<a name="l00127"></a>00127 <span class="comment"></span>
+<a name="l00128"></a>00128 <span class="comment">/// ArgNeedsQuotes - Check whether argument needs to be quoted when calling</span>
+<a name="l00129"></a>00129 <span class="comment">/// CreateProcess.</span>
+<a name="l00130"></a>00130 <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> ArgNeedsQuotes(<span class="keyword">const</span> <span class="keywordtype">char</span> *Str) {
+<a name="l00131"></a>00131   <span class="keywordflow">return</span> Str[0] == <span class="charliteral">'\0'</span> || <a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa7172501859424081873c331c7ca23189" title="char *strpbrk(const char *s1, const char *s2);">strpbrk</a>(Str, <span class="stringliteral">"\t \"&\'()*<>\\`^|"</span>) != 0;
+<a name="l00132"></a>00132 }
+<a name="l00133"></a>00133 
+<a name="l00134"></a>00134 <span class="comment"></span>
+<a name="l00135"></a>00135 <span class="comment">/// ArgLenWithQuotes - Check whether argument needs to be quoted when calling</span>
+<a name="l00136"></a>00136 <span class="comment">/// CreateProcess and returns length of quoted arg with escaped quotes</span>
+<a name="l00137"></a>00137 <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ArgLenWithQuotes(<span class="keyword">const</span> <span class="keywordtype">char</span> *Str) {
+<a name="l00138"></a>00138   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len = ArgNeedsQuotes(Str) ? 2 : 0;
+<a name="l00139"></a>00139 
+<a name="l00140"></a>00140   <span class="keywordflow">while</span> (*Str != <span class="charliteral">'\0'</span>) {
+<a name="l00141"></a>00141     <span class="keywordflow">if</span> (*Str == <span class="charliteral">'\"'</span>)
+<a name="l00142"></a>00142       ++len;
+<a name="l00143"></a>00143 
+<a name="l00144"></a>00144     ++len;
+<a name="l00145"></a>00145     ++Str;
+<a name="l00146"></a>00146   }
+<a name="l00147"></a>00147 
+<a name="l00148"></a>00148   <span class="keywordflow">return</span> len;
+<a name="l00149"></a>00149 }
+<a name="l00150"></a>00150 
+<a name="l00151"></a>00151 
+<a name="l00152"></a>00152 <span class="keywordtype">bool</span>
+<a name="l00153"></a>00153 <a class="code" href="classllvm_1_1sys_1_1Program.html#a68b9b686b502e78b1ba12a29c5bbe197" title="Executes the program with the given set of args.">Program::Execute</a>(<span class="keyword">const</span> Path& path,
+<a name="l00154"></a>00154                  <span class="keyword">const</span> <span class="keywordtype">char</span>** args,
+<a name="l00155"></a>00155                  <span class="keyword">const</span> <span class="keywordtype">char</span>** envp,
+<a name="l00156"></a>00156                  <span class="keyword">const</span> Path** redirects,
+<a name="l00157"></a>00157                  <span class="keywordtype">unsigned</span> memoryLimit,
+<a name="l00158"></a>00158                  std::string* ErrMsg) {
+<a name="l00159"></a>00159   <span class="keywordflow">if</span> (Data_) {
+<a name="l00160"></a>00160     Win32ProcessInfo* wpi = <span class="keyword">reinterpret_cast<</span>Win32ProcessInfo*<span class="keyword">></span>(Data_);
+<a name="l00161"></a>00161     CloseHandle(wpi->hProcess);
+<a name="l00162"></a>00162     <span class="keyword">delete</span> wpi;
+<a name="l00163"></a>00163     Data_ = 0;
+<a name="l00164"></a>00164   }
+<a name="l00165"></a>00165 
+<a name="l00166"></a>00166   <span class="keywordflow">if</span> (!path.canExecute()) {
+<a name="l00167"></a>00167     <span class="keywordflow">if</span> (ErrMsg)
+<a name="l00168"></a>00168       *ErrMsg = <span class="stringliteral">"program not executable"</span>;
+<a name="l00169"></a>00169     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00170"></a>00170   }
+<a name="l00171"></a>00171 
+<a name="l00172"></a>00172   <span class="comment">// Windows wants a command line, not an array of args, to pass to the new</span>
+<a name="l00173"></a>00173   <span class="comment">// process.  We have to concatenate them all, while quoting the args that</span>
+<a name="l00174"></a>00174   <span class="comment">// have embedded spaces (or are empty).</span>
+<a name="l00175"></a>00175 
+<a name="l00176"></a>00176   <span class="comment">// First, determine the length of the command line.</span>
+<a name="l00177"></a>00177   <span class="keywordtype">unsigned</span> len = 0;
+<a name="l00178"></a>00178   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; args[i]; i++) {
+<a name="l00179"></a>00179     len += ArgLenWithQuotes(args[i]) + 1;
+<a name="l00180"></a>00180   }
+<a name="l00181"></a>00181 
+<a name="l00182"></a>00182   <span class="comment">// Now build the command line.</span>
+<a name="l00183"></a>00183   <span class="keywordtype">char</span> *command = <span class="keyword">reinterpret_cast<</span><span class="keywordtype">char</span> *<span class="keyword">></span>(_alloca(len+1));
+<a name="l00184"></a>00184   <span class="keywordtype">char</span> *p = command;
+<a name="l00185"></a>00185 
+<a name="l00186"></a>00186   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; args[i]; i++) {
+<a name="l00187"></a>00187     <span class="keyword">const</span> <span class="keywordtype">char</span> *arg = args[i];
+<a name="l00188"></a>00188 
+<a name="l00189"></a>00189     <span class="keywordtype">bool</span> needsQuoting = ArgNeedsQuotes(arg);
+<a name="l00190"></a>00190     <span class="keywordflow">if</span> (needsQuoting)
+<a name="l00191"></a>00191       *p++ = <span class="charliteral">'"'</span>;
+<a name="l00192"></a>00192 
+<a name="l00193"></a>00193     <span class="keywordflow">while</span> (*arg != <span class="charliteral">'\0'</span>) {
+<a name="l00194"></a>00194       <span class="keywordflow">if</span> (*arg == <span class="charliteral">'\"'</span>)
+<a name="l00195"></a>00195         *p++ = <span class="charliteral">'\\'</span>;
+<a name="l00196"></a>00196 
+<a name="l00197"></a>00197       *p++ = *arg++;
+<a name="l00198"></a>00198     }
+<a name="l00199"></a>00199 
+<a name="l00200"></a>00200     <span class="keywordflow">if</span> (needsQuoting)
+<a name="l00201"></a>00201       *p++ = <span class="charliteral">'"'</span>;
+<a name="l00202"></a>00202     *p++ = <span class="charliteral">' '</span>;
+<a name="l00203"></a>00203   }
+<a name="l00204"></a>00204 
+<a name="l00205"></a>00205   *p = 0;
+<a name="l00206"></a>00206 
+<a name="l00207"></a>00207   <span class="comment">// The pointer to the environment block for the new process.</span>
+<a name="l00208"></a>00208   <span class="keywordtype">char</span> *envblock = 0;
+<a name="l00209"></a>00209 
+<a name="l00210"></a>00210   <span class="keywordflow">if</span> (envp) {
+<a name="l00211"></a>00211     <span class="comment">// An environment block consists of a null-terminated block of</span>
+<a name="l00212"></a>00212     <span class="comment">// null-terminated strings. Convert the array of environment variables to</span>
+<a name="l00213"></a>00213     <span class="comment">// an environment block by concatenating them.</span>
+<a name="l00214"></a>00214 
+<a name="l00215"></a>00215     <span class="comment">// First, determine the length of the environment block.</span>
+<a name="l00216"></a>00216     len = 0;
+<a name="l00217"></a>00217     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; envp[i]; i++)
+<a name="l00218"></a>00218       len += <a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa0b976adf6aef24ee68598686784f3d66" title="size_t strlen(const char *s);">strlen</a>(envp[i]) + 1;
+<a name="l00219"></a>00219 
+<a name="l00220"></a>00220     <span class="comment">// Now build the environment block.</span>
+<a name="l00221"></a>00221     envblock = <span class="keyword">reinterpret_cast<</span><span class="keywordtype">char</span> *<span class="keyword">></span>(_alloca(len+1));
+<a name="l00222"></a>00222     p = envblock;
+<a name="l00223"></a>00223 
+<a name="l00224"></a>00224     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; envp[i]; i++) {
+<a name="l00225"></a>00225       <span class="keyword">const</span> <span class="keywordtype">char</span> *ev = envp[i];
+<a name="l00226"></a>00226       <span class="keywordtype">size_t</span> len = <a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa0b976adf6aef24ee68598686784f3d66" title="size_t strlen(const char *s);">strlen</a>(ev) + 1;
+<a name="l00227"></a>00227       <a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fad5203242bc89eaa644dc7b7ba2371c1d" title="void *memcpy(void *s1, const void *s2, size_t n);">memcpy</a>(p, ev, len);
+<a name="l00228"></a>00228       p += len;
+<a name="l00229"></a>00229     }
+<a name="l00230"></a>00230 
+<a name="l00231"></a>00231     *p = 0;
+<a name="l00232"></a>00232   }
+<a name="l00233"></a>00233 
+<a name="l00234"></a>00234   <span class="comment">// Create a child process.</span>
+<a name="l00235"></a>00235   STARTUPINFO si;
+<a name="l00236"></a>00236   <a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa9f7f1b6be1144152902121f2463d0368" title="void *memset(void *b, int c, size_t len);">memset</a>(&si, 0, <span class="keyword">sizeof</span>(si));
+<a name="l00237"></a>00237   si.cb = <span class="keyword">sizeof</span>(si);
+<a name="l00238"></a>00238   si.hStdInput = INVALID_HANDLE_VALUE;
+<a name="l00239"></a>00239   si.hStdOutput = INVALID_HANDLE_VALUE;
+<a name="l00240"></a>00240   si.hStdError = INVALID_HANDLE_VALUE;
+<a name="l00241"></a>00241 
+<a name="l00242"></a>00242   <span class="keywordflow">if</span> (redirects) {
+<a name="l00243"></a>00243     si.dwFlags = STARTF_USESTDHANDLES;
+<a name="l00244"></a>00244 
+<a name="l00245"></a>00245     si.hStdInput = RedirectIO(redirects[0], 0, ErrMsg);
+<a name="l00246"></a>00246     <span class="keywordflow">if</span> (si.hStdInput == INVALID_HANDLE_VALUE) {
+<a name="l00247"></a>00247       <a class="code" href="Windows_8h.html#a981525300237361ea7940a9e4ece8d6a">MakeErrMsg</a>(ErrMsg, <span class="stringliteral">"can't redirect stdin"</span>);
+<a name="l00248"></a>00248       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00249"></a>00249     }
+<a name="l00250"></a>00250     si.hStdOutput = RedirectIO(redirects[1], 1, ErrMsg);
+<a name="l00251"></a>00251     <span class="keywordflow">if</span> (si.hStdOutput == INVALID_HANDLE_VALUE) {
+<a name="l00252"></a>00252       CloseHandle(si.hStdInput);
+<a name="l00253"></a>00253       <a class="code" href="Windows_8h.html#a981525300237361ea7940a9e4ece8d6a">MakeErrMsg</a>(ErrMsg, <span class="stringliteral">"can't redirect stdout"</span>);
+<a name="l00254"></a>00254       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00255"></a>00255     }
+<a name="l00256"></a>00256     <span class="keywordflow">if</span> (redirects[1] && redirects[2] && *(redirects[1]) == *(redirects[2])) {
+<a name="l00257"></a>00257       <span class="comment">// If stdout and stderr should go to the same place, redirect stderr</span>
+<a name="l00258"></a>00258       <span class="comment">// to the handle already open for stdout.</span>
+<a name="l00259"></a>00259       DuplicateHandle(GetCurrentProcess(), si.hStdOutput,
+<a name="l00260"></a>00260                       GetCurrentProcess(), &si.hStdError,
+<a name="l00261"></a>00261                       0, <a class="code" href="X86DisassemblerDecoder_8c.html#aa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, DUPLICATE_SAME_ACCESS);
+<a name="l00262"></a>00262     } <span class="keywordflow">else</span> {
+<a name="l00263"></a>00263       <span class="comment">// Just redirect stderr</span>
+<a name="l00264"></a>00264       si.hStdError = RedirectIO(redirects[2], 2, ErrMsg);
+<a name="l00265"></a>00265       <span class="keywordflow">if</span> (si.hStdError == INVALID_HANDLE_VALUE) {
+<a name="l00266"></a>00266         CloseHandle(si.hStdInput);
+<a name="l00267"></a>00267         CloseHandle(si.hStdOutput);
+<a name="l00268"></a>00268         <a class="code" href="Windows_8h.html#a981525300237361ea7940a9e4ece8d6a">MakeErrMsg</a>(ErrMsg, <span class="stringliteral">"can't redirect stderr"</span>);
+<a name="l00269"></a>00269         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00270"></a>00270       }
+<a name="l00271"></a>00271     }
+<a name="l00272"></a>00272   }
+<a name="l00273"></a>00273 
+<a name="l00274"></a>00274   PROCESS_INFORMATION pi;
+<a name="l00275"></a>00275   <a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa9f7f1b6be1144152902121f2463d0368" title="void *memset(void *b, int c, size_t len);">memset</a>(&pi, 0, <span class="keyword">sizeof</span>(pi));
+<a name="l00276"></a>00276 
+<a name="l00277"></a>00277   fflush(stdout);
+<a name="l00278"></a>00278   fflush(stderr);
+<a name="l00279"></a>00279   <a class="code" href="X86DisassemblerDecoder_8h.html#ad2f8ed01c1733d4eab0932d970abaa4c">BOOL</a> rc = CreateProcess(path.c_str(), command, NULL, NULL, <a class="code" href="X86DisassemblerDecoder_8c.html#aa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, 0,
+<a name="l00280"></a>00280                           envblock, NULL, &si, &pi);
+<a name="l00281"></a>00281   DWORD err = GetLastError();
+<a name="l00282"></a>00282 
+<a name="l00283"></a>00283   <span class="comment">// Regardless of whether the process got created or not, we are done with</span>
+<a name="l00284"></a>00284   <span class="comment">// the handles we created for it to inherit.</span>
+<a name="l00285"></a>00285   CloseHandle(si.hStdInput);
+<a name="l00286"></a>00286   CloseHandle(si.hStdOutput);
+<a name="l00287"></a>00287   CloseHandle(si.hStdError);
+<a name="l00288"></a>00288 
+<a name="l00289"></a>00289   <span class="comment">// Now return an error if the process didn't get created.</span>
+<a name="l00290"></a>00290   <span class="keywordflow">if</span> (!rc) {
+<a name="l00291"></a>00291     SetLastError(err);
+<a name="l00292"></a>00292     <a class="code" href="Windows_8h.html#a981525300237361ea7940a9e4ece8d6a">MakeErrMsg</a>(ErrMsg, std::string(<span class="stringliteral">"Couldn't execute program '"</span>) +
+<a name="l00293"></a>00293                path.str() + <span class="stringliteral">"'"</span>);
+<a name="l00294"></a>00294     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00295"></a>00295   }
+<a name="l00296"></a>00296   Win32ProcessInfo* wpi = <span class="keyword">new</span> Win32ProcessInfo;
+<a name="l00297"></a>00297   wpi->hProcess = pi.hProcess;
+<a name="l00298"></a>00298   wpi->dwProcessId = pi.dwProcessId;
+<a name="l00299"></a>00299   Data_ = wpi;
+<a name="l00300"></a>00300 
+<a name="l00301"></a>00301   <span class="comment">// Make sure these get closed no matter what.</span>
+<a name="l00302"></a>00302   <a class="code" href="classScopedHandle.html">ScopedCommonHandle</a> hThread(pi.hThread);
+<a name="l00303"></a>00303 
+<a name="l00304"></a>00304   <span class="comment">// Assign the process to a job if a memory limit is defined.</span>
+<a name="l00305"></a>00305   <a class="code" href="classScopedHandle.html">ScopedJobHandle</a> hJob;
+<a name="l00306"></a>00306   <span class="keywordflow">if</span> (memoryLimit != 0) {
+<a name="l00307"></a>00307     hJob = CreateJobObject(0, 0);
+<a name="l00308"></a>00308     <span class="keywordtype">bool</span> success = <span class="keyword">false</span>;
+<a name="l00309"></a>00309     <span class="keywordflow">if</span> (hJob) {
+<a name="l00310"></a>00310       JOBOBJECT_EXTENDED_LIMIT_INFORMATION jeli;
+<a name="l00311"></a>00311       <a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa9f7f1b6be1144152902121f2463d0368" title="void *memset(void *b, int c, size_t len);">memset</a>(&jeli, 0, <span class="keyword">sizeof</span>(jeli));
+<a name="l00312"></a>00312       jeli.BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_PROCESS_MEMORY;
+<a name="l00313"></a>00313       jeli.ProcessMemoryLimit = uintptr_t(memoryLimit) * 1048576;
+<a name="l00314"></a>00314       <span class="keywordflow">if</span> (SetInformationJobObject(hJob, JobObjectExtendedLimitInformation,
+<a name="l00315"></a>00315                                   &jeli, <span class="keyword">sizeof</span>(jeli))) {
+<a name="l00316"></a>00316         <span class="keywordflow">if</span> (AssignProcessToJobObject(hJob, pi.hProcess))
+<a name="l00317"></a>00317           success = <span class="keyword">true</span>;
+<a name="l00318"></a>00318       }
+<a name="l00319"></a>00319     }
+<a name="l00320"></a>00320     <span class="keywordflow">if</span> (!success) {
+<a name="l00321"></a>00321       SetLastError(GetLastError());
+<a name="l00322"></a>00322       <a class="code" href="Windows_8h.html#a981525300237361ea7940a9e4ece8d6a">MakeErrMsg</a>(ErrMsg, std::string(<span class="stringliteral">"Unable to set memory limit"</span>));
+<a name="l00323"></a>00323       TerminateProcess(pi.hProcess, 1);
+<a name="l00324"></a>00324       WaitForSingleObject(pi.hProcess, INFINITE);
+<a name="l00325"></a>00325       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00326"></a>00326     }
+<a name="l00327"></a>00327   }
+<a name="l00328"></a>00328 
+<a name="l00329"></a>00329   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00330"></a>00330 }
+<a name="l00331"></a>00331 
+<a name="l00332"></a>00332 <span class="keywordtype">int</span>
+<a name="l00333"></a>00333 <a class="code" href="classllvm_1_1sys_1_1Program.html#a125d23f550f468d27fc8acef9e10e195" title="Waits for the program to exit.">Program::Wait</a>(<span class="keyword">const</span> Path &path,
+<a name="l00334"></a>00334               <span class="keywordtype">unsigned</span> secondsToWait,
+<a name="l00335"></a>00335               std::string* ErrMsg) {
+<a name="l00336"></a>00336   <span class="keywordflow">if</span> (Data_ == 0) {
+<a name="l00337"></a>00337     <a class="code" href="Windows_8h.html#a981525300237361ea7940a9e4ece8d6a">MakeErrMsg</a>(ErrMsg, <span class="stringliteral">"Process not started!"</span>);
+<a name="l00338"></a>00338     <span class="keywordflow">return</span> -1;
+<a name="l00339"></a>00339   }
+<a name="l00340"></a>00340 
+<a name="l00341"></a>00341   Win32ProcessInfo* wpi = <span class="keyword">reinterpret_cast<</span>Win32ProcessInfo*<span class="keyword">></span>(Data_);
+<a name="l00342"></a>00342   HANDLE hProcess = wpi->hProcess;
+<a name="l00343"></a>00343 
+<a name="l00344"></a>00344   <span class="comment">// Wait for the process to terminate.</span>
+<a name="l00345"></a>00345   DWORD millisecondsToWait = INFINITE;
+<a name="l00346"></a>00346   <span class="keywordflow">if</span> (secondsToWait > 0)
+<a name="l00347"></a>00347     millisecondsToWait = secondsToWait * 1000;
+<a name="l00348"></a>00348 
+<a name="l00349"></a>00349   <span class="keywordflow">if</span> (WaitForSingleObject(hProcess, millisecondsToWait) == WAIT_TIMEOUT) {
+<a name="l00350"></a>00350     <span class="keywordflow">if</span> (!TerminateProcess(hProcess, 1)) {
+<a name="l00351"></a>00351       <a class="code" href="Windows_8h.html#a981525300237361ea7940a9e4ece8d6a">MakeErrMsg</a>(ErrMsg, <span class="stringliteral">"Failed to terminate timed-out program."</span>);
+<a name="l00352"></a>00352       <span class="comment">// -2 indicates a crash or timeout as opposed to failure to execute.</span>
+<a name="l00353"></a>00353       <span class="keywordflow">return</span> -2;
+<a name="l00354"></a>00354     }
+<a name="l00355"></a>00355     WaitForSingleObject(hProcess, INFINITE);
+<a name="l00356"></a>00356   }
+<a name="l00357"></a>00357 
+<a name="l00358"></a>00358   <span class="comment">// Get its exit status.</span>
+<a name="l00359"></a>00359   DWORD <a class="code" href="namespacellvm_1_1sys_1_1fs.html#a65c5fe2953375fe7c8c64bb7481c54a4" title="Get file status as if by POSIX stat().">status</a>;
+<a name="l00360"></a>00360   <a class="code" href="X86DisassemblerDecoder_8h.html#ad2f8ed01c1733d4eab0932d970abaa4c">BOOL</a> rc = GetExitCodeProcess(hProcess, &status);
+<a name="l00361"></a>00361   DWORD err = GetLastError();
+<a name="l00362"></a>00362 
+<a name="l00363"></a>00363   <span class="keywordflow">if</span> (!rc) {
+<a name="l00364"></a>00364     SetLastError(err);
+<a name="l00365"></a>00365     <a class="code" href="Windows_8h.html#a981525300237361ea7940a9e4ece8d6a">MakeErrMsg</a>(ErrMsg, <span class="stringliteral">"Failed getting status for program."</span>);
+<a name="l00366"></a>00366     <span class="comment">// -2 indicates a crash or timeout as opposed to failure to execute.</span>
+<a name="l00367"></a>00367     <span class="keywordflow">return</span> -2;
+<a name="l00368"></a>00368   }
+<a name="l00369"></a>00369 
+<a name="l00370"></a>00370   <span class="keywordflow">if</span> (!status)
+<a name="l00371"></a>00371     <span class="keywordflow">return</span> 0;
+<a name="l00372"></a>00372 
+<a name="l00373"></a>00373   <span class="comment">// Pass 10(Warning) and 11(Error) to the callee as negative value.</span>
+<a name="l00374"></a>00374   <span class="keywordflow">if</span> ((status & 0xBFFF0000U) == 0x80000000U)
+<a name="l00375"></a>00375     <span class="keywordflow">return</span> (<span class="keywordtype">int</span>)<a class="code" href="namespacellvm_1_1sys_1_1fs.html#a65c5fe2953375fe7c8c64bb7481c54a4" title="Get file status as if by POSIX stat().">status</a>;
+<a name="l00376"></a>00376 
+<a name="l00377"></a>00377   <span class="keywordflow">if</span> (status & 0xFF)
+<a name="l00378"></a>00378     <span class="keywordflow">return</span> status & 0x7FFFFFFF;
+<a name="l00379"></a>00379 
+<a name="l00380"></a>00380   <span class="keywordflow">return</span> 1;
+<a name="l00381"></a>00381 }
+<a name="l00382"></a>00382 
+<a name="l00383"></a>00383 <span class="keywordtype">bool</span>
+<a name="l00384"></a>00384 <a class="code" href="classllvm_1_1sys_1_1Program.html#ab64ecc1baf178f8feda9a710084a986c" title="Terminates the program.">Program::Kill</a>(std::string* ErrMsg) {
+<a name="l00385"></a>00385   <span class="keywordflow">if</span> (Data_ == 0) {
+<a name="l00386"></a>00386     <a class="code" href="Windows_8h.html#a981525300237361ea7940a9e4ece8d6a">MakeErrMsg</a>(ErrMsg, <span class="stringliteral">"Process not started!"</span>);
+<a name="l00387"></a>00387     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00388"></a>00388   }
+<a name="l00389"></a>00389 
+<a name="l00390"></a>00390   Win32ProcessInfo* wpi = <span class="keyword">reinterpret_cast<</span>Win32ProcessInfo*<span class="keyword">></span>(Data_);
+<a name="l00391"></a>00391   HANDLE hProcess = wpi->hProcess;
+<a name="l00392"></a>00392   <span class="keywordflow">if</span> (TerminateProcess(hProcess, 1) == 0) {
+<a name="l00393"></a>00393     <a class="code" href="Windows_8h.html#a981525300237361ea7940a9e4ece8d6a">MakeErrMsg</a>(ErrMsg, <span class="stringliteral">"The process couldn't be killed!"</span>);
+<a name="l00394"></a>00394     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00395"></a>00395   }
+<a name="l00396"></a>00396 
+<a name="l00397"></a>00397   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00398"></a>00398 }
+<a name="l00399"></a>00399 
+<a name="l00400"></a>00400 error_code <a class="code" href="classllvm_1_1sys_1_1Program.html#a142bef55169b90441995d413a6e7faa4">Program::ChangeStdinToBinary</a>(){
+<a name="l00401"></a>00401   <span class="keywordtype">int</span> result = _setmode( _fileno(stdin), _O_BINARY );
+<a name="l00402"></a>00402   <span class="keywordflow">if</span> (result == -1)
+<a name="l00403"></a>00403     <span class="keywordflow">return</span> error_code(errno, <a class="code" href="namespacellvm.html#a1d8dc6cc5af15804cc75a8b5736b8d3e">generic_category</a>());
+<a name="l00404"></a>00404   <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a205a949fd99dd4c03d2227e5bd21041c">make_error_code</a>(<a class="code" href="structllvm_1_1errc.html#adf6162b83abd715a78b475f5bdb7cfd4a8f5b9c6e30a457355a4689b666369622">errc::success</a>);
+<a name="l00405"></a>00405 }
+<a name="l00406"></a>00406 
+<a name="l00407"></a>00407 error_code <a class="code" href="classllvm_1_1sys_1_1Program.html#a07f54d9472323010a4a596d454a68633">Program::ChangeStdoutToBinary</a>(){
+<a name="l00408"></a>00408   <span class="keywordtype">int</span> result = _setmode( _fileno(stdout), _O_BINARY );
+<a name="l00409"></a>00409   <span class="keywordflow">if</span> (result == -1)
+<a name="l00410"></a>00410     <span class="keywordflow">return</span> error_code(errno, <a class="code" href="namespacellvm.html#a1d8dc6cc5af15804cc75a8b5736b8d3e">generic_category</a>());
+<a name="l00411"></a>00411   <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a205a949fd99dd4c03d2227e5bd21041c">make_error_code</a>(<a class="code" href="structllvm_1_1errc.html#adf6162b83abd715a78b475f5bdb7cfd4a8f5b9c6e30a457355a4689b666369622">errc::success</a>);
+<a name="l00412"></a>00412 }
+<a name="l00413"></a>00413 
+<a name="l00414"></a>00414 error_code <a class="code" href="classllvm_1_1sys_1_1Program.html#a5af39e4a1ef02fb6369b71fd7430051b">Program::ChangeStderrToBinary</a>(){
+<a name="l00415"></a>00415   <span class="keywordtype">int</span> result = _setmode( _fileno(stderr), _O_BINARY );
+<a name="l00416"></a>00416   <span class="keywordflow">if</span> (result == -1)
+<a name="l00417"></a>00417     <span class="keywordflow">return</span> error_code(errno, <a class="code" href="namespacellvm.html#a1d8dc6cc5af15804cc75a8b5736b8d3e">generic_category</a>());
+<a name="l00418"></a>00418   <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a205a949fd99dd4c03d2227e5bd21041c">make_error_code</a>(<a class="code" href="structllvm_1_1errc.html#adf6162b83abd715a78b475f5bdb7cfd4a8f5b9c6e30a457355a4689b666369622">errc::success</a>);
+<a name="l00419"></a>00419 }
+<a name="l00420"></a>00420 
+<a name="l00421"></a>00421 }
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:37:00 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/Windows_2Signals_8inc.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Windows_2Signals_8inc.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Windows_2Signals_8inc.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Windows_2Signals_8inc.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: Signals.inc File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_3927ff15cdce1d22d8dcb33a29894069.html">Support</a>      </li>
+      <li class="navelem"><a class="el" href="dir_b7eec3d26332824c78eb22ae4472bfeb.html">Windows</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Windows/Signals.inc File Reference</div>  </div>
+</div>
+<div class="contents">
+
+<p><a href="Windows_2Signals_8inc_source.html">Go to the source code of this file.</a></p>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:40 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/Windows_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Windows_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Windows_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Windows_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,264 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: Windows.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_3927ff15cdce1d22d8dcb33a29894069.html">Support</a>      </li>
+      <li class="navelem"><a class="el" href="dir_b7eec3d26332824c78eb22ae4472bfeb.html">Windows</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#namespaces">Namespaces</a> |
+<a href="#define-members">Defines</a> |
+<a href="#typedef-members">Typedefs</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">Windows.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="config_8h_source.html">llvm/Config/config.h</a>"</code><br/>
+<code>#include <windows.h></code><br/>
+<code>#include <wincrypt.h></code><br/>
+<code>#include <shlobj.h></code><br/>
+<code>#include <cassert></code><br/>
+<code>#include <string></code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for Windows.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="Windows_8h__incl.png" border="0" usemap="#Windows_8h" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="Windows_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classScopedHandle.html">ScopedHandle< HandleTraits ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structCommonHandleTraits.html">CommonHandleTraits</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structJobHandleTraits.html">JobHandleTraits</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structCryptContextTraits.html">CryptContextTraits</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structFindHandleTraits.html">FindHandleTraits</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structFileHandleTraits.html">FileHandleTraits</a></td></tr>
+<tr><td colspan="2"><h2><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html">llvm</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>List of target independent CodeGen pass IDs. </p>
+<br/></td></tr>
+<tr><td colspan="2"><h2><a name="define-members"></a>
+Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Windows_8h.html#ac50762666aa00bd3a4308158510f1748">_WIN32_WINNT</a>   0x0501</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Windows_8h.html#ad4562ce705fe4682e63dc8f1ea9dd344">_WIN32_IE</a>   0x0600</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Windows_8h.html#ac7bef5d85e3dcd73eef56ad39ffc84a9">WIN32_LEAN_AND_MEAN</a></td></tr>
+<tr><td colspan="2"><h2><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classScopedHandle.html">ScopedHandle</a><br class="typebreak"/>
+< <a class="el" href="structCommonHandleTraits.html">CommonHandleTraits</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="Windows_8h.html#a1a8022370d9c40d653ee55c729dd230e">ScopedCommonHandle</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classScopedHandle.html">ScopedHandle</a><br class="typebreak"/>
+< <a class="el" href="structFileHandleTraits.html">FileHandleTraits</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="Windows_8h.html#ac339e819066c4c1ef7b93af2ee15f913">ScopedFileHandle</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classScopedHandle.html">ScopedHandle</a><br class="typebreak"/>
+< <a class="el" href="structCryptContextTraits.html">CryptContextTraits</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="Windows_8h.html#a7432af76b288d5579f695360fd9c8223">ScopedCryptContext</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classScopedHandle.html">ScopedHandle</a><br class="typebreak"/>
+< <a class="el" href="structFindHandleTraits.html">FindHandleTraits</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="Windows_8h.html#a542ada4781cf7d4e02ebf9db01ea7814">ScopedFindHandle</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classScopedHandle.html">ScopedHandle</a><br class="typebreak"/>
+< <a class="el" href="structJobHandleTraits.html">JobHandleTraits</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="Windows_8h.html#aa1c316c7f60d3645c02dd1650725c1f2">ScopedJobHandle</a></td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="Windows_8h.html#a981525300237361ea7940a9e4ece8d6a">MakeErrMsg</a> (std::string *ErrMsg, const std::string &prefix)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<class T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">SmallVectorImpl< T >::const_pointer </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacellvm.html#af11d71816b6dc7c266e71fcff02be291">llvm::c_str</a> (SmallVectorImpl< T > &str)</td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ad4562ce705fe4682e63dc8f1ea9dd344"></a><!-- doxytag: member="Windows.h::_WIN32_IE" ref="ad4562ce705fe4682e63dc8f1ea9dd344" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _WIN32_IE   0x0600</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="Windows_8h_source.html#l00024">24</a> of file <a class="el" href="Windows_8h_source.html">Windows.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac50762666aa00bd3a4308158510f1748"></a><!-- doxytag: member="Windows.h::_WIN32_WINNT" ref="ac50762666aa00bd3a4308158510f1748" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define _WIN32_WINNT   0x0501</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="Windows_8h_source.html#l00023">23</a> of file <a class="el" href="Windows_8h_source.html">Windows.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac7bef5d85e3dcd73eef56ad39ffc84a9"></a><!-- doxytag: member="Windows.h::WIN32_LEAN_AND_MEAN" ref="ac7bef5d85e3dcd73eef56ad39ffc84a9" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define WIN32_LEAN_AND_MEAN</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="Windows_8h_source.html#l00025">25</a> of file <a class="el" href="Windows_8h_source.html">Windows.h</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Typedef Documentation</h2>
+<a class="anchor" id="a1a8022370d9c40d653ee55c729dd230e"></a><!-- doxytag: member="Windows.h::ScopedCommonHandle" ref="a1a8022370d9c40d653ee55c729dd230e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="classScopedHandle.html">ScopedHandle</a><<a class="el" href="structCommonHandleTraits.html">CommonHandleTraits</a>> <a class="el" href="Windows_8h.html#a1a8022370d9c40d653ee55c729dd230e">ScopedCommonHandle</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="Windows_8h_source.html#l00133">133</a> of file <a class="el" href="Windows_8h_source.html">Windows.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7432af76b288d5579f695360fd9c8223"></a><!-- doxytag: member="Windows.h::ScopedCryptContext" ref="a7432af76b288d5579f695360fd9c8223" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="classScopedHandle.html">ScopedHandle</a><<a class="el" href="structCryptContextTraits.html">CryptContextTraits</a>> <a class="el" href="Windows_8h.html#a7432af76b288d5579f695360fd9c8223">ScopedCryptContext</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="Windows_8h_source.html#l00135">135</a> of file <a class="el" href="Windows_8h_source.html">Windows.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac339e819066c4c1ef7b93af2ee15f913"></a><!-- doxytag: member="Windows.h::ScopedFileHandle" ref="ac339e819066c4c1ef7b93af2ee15f913" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="classScopedHandle.html">ScopedHandle</a><<a class="el" href="structFileHandleTraits.html">FileHandleTraits</a>> <a class="el" href="Windows_8h.html#ac339e819066c4c1ef7b93af2ee15f913">ScopedFileHandle</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="Windows_8h_source.html#l00134">134</a> of file <a class="el" href="Windows_8h_source.html">Windows.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a542ada4781cf7d4e02ebf9db01ea7814"></a><!-- doxytag: member="Windows.h::ScopedFindHandle" ref="a542ada4781cf7d4e02ebf9db01ea7814" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="classScopedHandle.html">ScopedHandle</a><<a class="el" href="structFindHandleTraits.html">FindHandleTraits</a>> <a class="el" href="Windows_8h.html#a542ada4781cf7d4e02ebf9db01ea7814">ScopedFindHandle</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="Windows_8h_source.html#l00136">136</a> of file <a class="el" href="Windows_8h_source.html">Windows.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa1c316c7f60d3645c02dd1650725c1f2"></a><!-- doxytag: member="Windows.h::ScopedJobHandle" ref="aa1c316c7f60d3645c02dd1650725c1f2" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef <a class="el" href="classScopedHandle.html">ScopedHandle</a><<a class="el" href="structJobHandleTraits.html">JobHandleTraits</a>> <a class="el" href="Windows_8h.html#aa1c316c7f60d3645c02dd1650725c1f2">ScopedJobHandle</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="Windows_8h_source.html#l00137">137</a> of file <a class="el" href="Windows_8h_source.html">Windows.h</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a981525300237361ea7940a9e4ece8d6a"></a><!-- doxytag: member="Windows.h::MakeErrMsg" ref="a981525300237361ea7940a9e4ece8d6a" args="(std::string *ErrMsg, const std::string &prefix)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> MakeErrMsg </td>
+          <td>(</td>
+          <td class="paramtype">std::string * </td>
+          <td class="paramname"><em>ErrMsg</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const std::string & </td>
+          <td class="paramname"><em>prefix</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [inline]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="Windows_8h_source.html#l00034">34</a> of file <a class="el" href="Windows_8h_source.html">Windows.h</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:57 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/Writer_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Writer_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Writer_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Writer_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,76 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: Writer.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_25acc6571c4e3a053ee4203146b47a61.html">include</a>      </li>
+      <li class="navelem"><a class="el" href="dir_fd2d7b5ce83b1c1657cd6600d8cb39fa.html">llvm</a>      </li>
+      <li class="navelem"><a class="el" href="dir_c811caf98c2e04bafa07f21217373ed4.html">Assembly</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#namespaces">Namespaces</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">Writer.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="Writer_8h__dep__incl.png" border="0" usemap="#Writer_8hdep" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="Writer_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html">llvm</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>List of target independent CodeGen pass IDs. </p>
+<br/></td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#ae712552495c21ee77ad82ced255ad6df">llvm::WriteAsOperand</a> (<a class="el" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &, const <a class="el" href="classllvm_1_1Value.html">Value</a> *, <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> PrintTy=<a class="el" href="LoopSimplify_8cpp.html#a13f020c6a40eb04f1b4f9ddfbb004ce0">true</a>, const <a class="el" href="classllvm_1_1Module.html">Module</a> *Context=0)</td></tr>
+</table>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:57 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/X86ATTInstPrinter_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86ATTInstPrinter_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86ATTInstPrinter_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86ATTInstPrinter_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,117 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: X86ATTInstPrinter.cpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_ae72ec760f5f4d3869211e663a0eb354.html">X86</a>      </li>
+      <li class="navelem"><a class="el" href="dir_d31e09e4a950a07f76ddbad611322029.html">InstPrinter</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#define-members">Defines</a>  </div>
+  <div class="headertitle">
+<div class="title">X86ATTInstPrinter.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="X86ATTInstPrinter_8h_source.html">X86ATTInstPrinter.h</a>"</code><br/>
+<code>#include "<a class="el" href="X86InstComments_8h_source.html">X86InstComments.h</a>"</code><br/>
+<code>#include "<a class="el" href="X86BaseInfo_8h_source.html">MCTargetDesc/X86BaseInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="X86MCTargetDesc_8h_source.html">MCTargetDesc/X86MCTargetDesc.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCInst_8h_source.html">llvm/MC/MCInst.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCAsmInfo_8h_source.html">llvm/MC/MCAsmInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCExpr_8h_source.html">llvm/MC/MCExpr.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCInstrInfo_8h_source.html">llvm/MC/MCInstrInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCRegisterInfo_8h_source.html">llvm/MC/MCRegisterInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="ErrorHandling_8h_source.html">llvm/Support/ErrorHandling.h</a>"</code><br/>
+<code>#include "<a class="el" href="Format_8h_source.html">llvm/Support/Format.h</a>"</code><br/>
+<code>#include "<a class="el" href="FormattedStream_8h_source.html">llvm/Support/FormattedStream.h</a>"</code><br/>
+<code>#include <map></code><br/>
+<code>#include "X86GenAsmWriter.inc"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for X86ATTInstPrinter.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="X86ATTInstPrinter_8cpp__incl.png" border="0" usemap="#X86ATTInstPrinter_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="X86ATTInstPrinter_8cpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="define-members"></a>
+Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86ATTInstPrinter_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">DEBUG_TYPE</a>   "asm-printer"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86ATTInstPrinter_8cpp.html#aab949b6eb4a1dc9d5105b99bc1553088">PRINT_ALIAS_INSTR</a></td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ad78e062f62e0d6e453941fb4ca843e4d"></a><!-- doxytag: member="X86ATTInstPrinter.cpp::DEBUG_TYPE" ref="ad78e062f62e0d6e453941fb4ca843e4d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define DEBUG_TYPE   "asm-printer"</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86ATTInstPrinter_8cpp_source.html#l00015">15</a> of file <a class="el" href="X86ATTInstPrinter_8cpp_source.html">X86ATTInstPrinter.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aab949b6eb4a1dc9d5105b99bc1553088"></a><!-- doxytag: member="X86ATTInstPrinter.cpp::PRINT_ALIAS_INSTR" ref="aab949b6eb4a1dc9d5105b99bc1553088" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define PRINT_ALIAS_INSTR</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86ATTInstPrinter_8cpp_source.html#l00032">32</a> of file <a class="el" href="X86ATTInstPrinter_8cpp_source.html">X86ATTInstPrinter.cpp</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:58 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/X86ATTInstPrinter_8h__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86ATTInstPrinter_8h__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86ATTInstPrinter_8h__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86ATTInstPrinter_8h__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,9 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="X86ATTInstPrinter.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="llvm/MC/MCInstPrinter.h",height=0.2,width=0.4,color="black",URL="$MCInstPrinter_8h.html"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/X86AsmParser_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86AsmParser_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86AsmParser_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86AsmParser_8cpp__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,181 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="X86AsmParser.cpp",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="MCTargetDesc/X86BaseInfo.h",height=0.2,width=0.4,color="black",URL="$X86BaseInfo_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="X86MCTargetDesc.h",height=0.2,width=0.4,color="red",URL="$X86MCTargetDesc_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="red",URL="$DataTypes_8h.html"];
+  Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="X86GenRegisterInfo.inc",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="llvm/Support/ErrorHandling.h",height=0.2,width=0.4,color="black",URL="$ErrorHandling_8h.html"];
+  Node7 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node7 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="llvm/ADT/StringRef.h",height=0.2,width=0.4,color="red",URL="$StringRef_8h.html"];
+  Node9 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="red",URL="$type__traits_8h.html"];
+  Node10 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="cstddef",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="cstring",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="llvm/MC/MCTargetAsmParser.h",height=0.2,width=0.4,color="black",URL="$MCTargetAsmParser_8h.html"];
+  Node15 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="llvm/MC/MCParser/MCAsmParserExtension.h",height=0.2,width=0.4,color="black",URL="$MCAsmParserExtension_8h.html"];
+  Node16 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="llvm/MC/MCParser/MCAsmParser.h",height=0.2,width=0.4,color="black",URL="$MCAsmParser_8h.html"];
+  Node17 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="llvm/ADT/ArrayRef.h",height=0.2,width=0.4,color="red",URL="$ArrayRef_8h.html"];
+  Node18 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="black",URL="$SmallVector_8h.html"];
+  Node19 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="llvm/Support/AlignOf.h",height=0.2,width=0.4,color="black",URL="$AlignOf_8h.html"];
+  Node20 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="cstdlib",height=0.2,width=0.4,color="grey75"];
+  Node19 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node19 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="memory",height=0.2,width=0.4,color="grey75"];
+  Node16 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="llvm/Support/SMLoc.h",height=0.2,width=0.4,color="black",URL="$SMLoc_8h.html"];
+  Node24 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/MC/MCStreamer.h",height=0.2,width=0.4,color="black",URL="$MCStreamer_8h.html"];
+  Node25 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/MC/MCDirectives.h",height=0.2,width=0.4,color="black",URL="$MCDirectives_8h.html"];
+  Node25 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/MC/MCDwarf.h",height=0.2,width=0.4,color="red",URL="$MCDwarf_8h.html"];
+  Node27 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/Support/raw_ostream.h",height=0.2,width=0.4,color="black",URL="$raw__ostream_8h.html"];
+  Node28 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/MC/MCWin64EH.h",height=0.2,width=0.4,color="red",URL="$MCWin64EH_8h.html"];
+  Node29 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/MC/MCExpr.h",height=0.2,width=0.4,color="black",URL="$MCExpr_8h.html"];
+  Node30 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/ADT/DenseMap.h",height=0.2,width=0.4,color="red",URL="$DenseMap_8h.html"];
+  Node31 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/Support/Casting.h",height=0.2,width=0.4,color="black",URL="$Casting_8h.html"];
+  Node32 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/MC/MCSymbol.h",height=0.2,width=0.4,color="black",URL="$MCSymbol_8h.html"];
+  Node33 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/MC/MCInst.h",height=0.2,width=0.4,color="black",URL="$MCInst_8h.html"];
+  Node34 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="llvm/MC/MCRegisterInfo.h",height=0.2,width=0.4,color="black",URL="$MCRegisterInfo_8h.html"];
+  Node35 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="llvm/MC/MCSubtargetInfo.h",height=0.2,width=0.4,color="black",URL="$MCSubtargetInfo_8h.html"];
+  Node36 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/MC/SubtargetFeature.h",height=0.2,width=0.4,color="red",URL="$SubtargetFeature_8h.html"];
+  Node37 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/ADT/Triple.h",height=0.2,width=0.4,color="black",URL="$Triple_8h.html"];
+  Node38 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/ADT/Twine.h",height=0.2,width=0.4,color="black",URL="$Twine_8h.html"];
+  Node39 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="llvm/MC/MCInstrItineraries.h",height=0.2,width=0.4,color="red",URL="$MCInstrItineraries_8h.html"];
+  Node40 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="llvm/MC/MCParser/MCAsmLexer.h",height=0.2,width=0.4,color="black",URL="$MCAsmLexer_8h.html"];
+  Node41 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="llvm/MC/MCParser/MCParsedAsmOperand.h",height=0.2,width=0.4,color="black",URL="$MCParsedAsmOperand_8h.html"];
+  Node1 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="llvm/ADT/APFloat.h",height=0.2,width=0.4,color="black",URL="$APFloat_8h.html"];
+  Node43 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="llvm/ADT/APInt.h",height=0.2,width=0.4,color="red",URL="$APInt_8h.html"];
+  Node44 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/ADT/SmallString.h",height=0.2,width=0.4,color="black",URL="$SmallString_8h.html"];
+  Node45 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/ADT/StringSwitch.h",height=0.2,width=0.4,color="black",URL="$StringSwitch_8h.html"];
+  Node46 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="llvm/Support/SourceMgr.h",height=0.2,width=0.4,color="black",URL="$SourceMgr_8h.html"];
+  Node47 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="llvm/Support/TargetRegistry.h",height=0.2,width=0.4,color="black",URL="$TargetRegistry_8h.html"];
+  Node48 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="llvm/Support/CodeGen.h",height=0.2,width=0.4,color="black",URL="$CodeGen_8h.html"];
+  Node48 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="X86GenAsmMatcher.inc",height=0.2,width=0.4,color="grey75"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/X86AsmPrinter_8cpp__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86AsmPrinter_8cpp__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86AsmPrinter_8cpp__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86AsmPrinter_8cpp__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+c0421ba99a79ecafdb87df680db3c03a
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/X86AsmPrinter_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86AsmPrinter_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86AsmPrinter_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86AsmPrinter_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,89 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: X86AsmPrinter.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_ae72ec760f5f4d3869211e663a0eb354.html">X86</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#namespaces">Namespaces</a>  </div>
+  <div class="headertitle">
+<div class="title">X86AsmPrinter.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="X86_8h_source.html">X86.h</a>"</code><br/>
+<code>#include "<a class="el" href="X86MachineFunctionInfo_8h_source.html">X86MachineFunctionInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="X86TargetMachine_8h_source.html">X86TargetMachine.h</a>"</code><br/>
+<code>#include "<a class="el" href="AsmPrinter_8h_source.html">llvm/CodeGen/AsmPrinter.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineModuleInfo_8h_source.html">llvm/CodeGen/MachineModuleInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="ValueTypes_8h_source.html">llvm/CodeGen/ValueTypes.h</a>"</code><br/>
+<code>#include "<a class="el" href="Compiler_8h_source.html">llvm/Support/Compiler.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for X86AsmPrinter.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="X86AsmPrinter_8h__incl.png" border="0" usemap="#X86AsmPrinter_8h" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="X86AsmPrinter_8h__dep__incl.png" border="0" usemap="#X86AsmPrinter_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="X86AsmPrinter_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1X86AsmPrinter.html">llvm::X86AsmPrinter</a></td></tr>
+<tr><td colspan="2"><h2><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html">llvm</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>List of target independent CodeGen pass IDs. </p>
+<br/></td></tr>
+</table>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:58 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/X86AsmPrinter_8h__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86AsmPrinter_8h__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86AsmPrinter_8h__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86AsmPrinter_8h__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+8f3af202aedd652c9e7ff68ff497633e
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/X86COFFMachineModuleInfo_8h__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86COFFMachineModuleInfo_8h__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86COFFMachineModuleInfo_8h__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86COFFMachineModuleInfo_8h__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+f94124e004c92c1deaecf003e26ebd1f
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/X86DisassemblerDecoderCommon_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86DisassemblerDecoderCommon_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86DisassemblerDecoderCommon_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86DisassemblerDecoderCommon_8h__dep__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,16 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="X86DisassemblerDecoderCommon.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="X86Disassembler.h",height=0.2,width=0.4,color="black",URL="$X86Disassembler_8h.html"];
+  Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="X86Disassembler.cpp",height=0.2,width=0.4,color="black",URL="$X86Disassembler_8cpp.html"];
+  Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="X86DisassemblerDecoder.h",height=0.2,width=0.4,color="black",URL="$X86DisassemblerDecoder_8h.html"];
+  Node4 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="X86DisassemblerDecoder.c",height=0.2,width=0.4,color="black",URL="$X86DisassemblerDecoder_8c.html"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/X86DisassemblerDecoderCommon_8h__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86DisassemblerDecoderCommon_8h__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86DisassemblerDecoderCommon_8h__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86DisassemblerDecoderCommon_8h__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+232236a9fba82f55b6a78a3b55103bc4
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/X86DisassemblerDecoderCommon_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86DisassemblerDecoderCommon_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86DisassemblerDecoderCommon_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86DisassemblerDecoderCommon_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,455 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: X86DisassemblerDecoderCommon.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_ae72ec760f5f4d3869211e663a0eb354.html">X86</a>      </li>
+      <li class="navelem"><a class="el" href="dir_f8d2defef88098d0bc5331515603729f.html">Disassembler</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">X86DisassemblerDecoderCommon.h</div>  </div>
+</div>
+<div class="contents">
+<a href="X86DisassemblerDecoderCommon_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*===-- X86DisassemblerDecoderCommon.h - Disassembler decoder -----*- C -*-===*</span>
+<a name="l00002"></a>00002 <span class="comment"> *</span>
+<a name="l00003"></a>00003 <span class="comment"> *                     The LLVM Compiler Infrastructure</span>
+<a name="l00004"></a>00004 <span class="comment"> *</span>
+<a name="l00005"></a>00005 <span class="comment"> * This file is distributed under the University of Illinois Open Source</span>
+<a name="l00006"></a>00006 <span class="comment"> * License. See LICENSE.TXT for details.</span>
+<a name="l00007"></a>00007 <span class="comment"> *</span>
+<a name="l00008"></a>00008 <span class="comment"> *===----------------------------------------------------------------------===*</span>
+<a name="l00009"></a>00009 <span class="comment"> *</span>
+<a name="l00010"></a>00010 <span class="comment"> * This file is part of the X86 Disassembler.</span>
+<a name="l00011"></a>00011 <span class="comment"> * It contains common definitions used by both the disassembler and the table</span>
+<a name="l00012"></a>00012 <span class="comment"> *  generator.</span>
+<a name="l00013"></a>00013 <span class="comment"> * Documentation for the disassembler can be found in X86Disassembler.h.</span>
+<a name="l00014"></a>00014 <span class="comment"> *</span>
+<a name="l00015"></a>00015 <span class="comment"> *===----------------------------------------------------------------------===*/</span>
+<a name="l00016"></a>00016 
+<a name="l00017"></a>00017 <span class="comment">/*</span>
+<a name="l00018"></a>00018 <span class="comment"> * This header file provides those definitions that need to be shared between</span>
+<a name="l00019"></a>00019 <span class="comment"> * the decoder and the table generator in a C-friendly manner.</span>
+<a name="l00020"></a>00020 <span class="comment"> */</span>
+<a name="l00021"></a>00021 
+<a name="l00022"></a>00022 <span class="preprocessor">#ifndef X86DISASSEMBLERDECODERCOMMON_H</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#define X86DISASSEMBLERDECODERCOMMON_H</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="DataTypes_8h.html">llvm/Support/DataTypes.h</a>"</span>
+<a name="l00026"></a>00026 
+<a name="l00027"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a62a3fc430e98f080dc7e39325d2b9e54">00027</a> <span class="preprocessor">#define INSTRUCTIONS_SYM  x86DisassemblerInstrSpecifiers</span>
+<a name="l00028"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a5289563c2fd129668b3dfc2bcb36f1a9">00028</a> <span class="preprocessor"></span><span class="preprocessor">#define CONTEXTS_SYM      x86DisassemblerContexts</span>
+<a name="l00029"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#ae053f9e80d644f47a6ee19185739162b">00029</a> <span class="preprocessor"></span><span class="preprocessor">#define ONEBYTE_SYM       x86DisassemblerOneByteOpcodes</span>
+<a name="l00030"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a0bfb472dc63adf5ea8919f054d4450e2">00030</a> <span class="preprocessor"></span><span class="preprocessor">#define TWOBYTE_SYM       x86DisassemblerTwoByteOpcodes</span>
+<a name="l00031"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a892daf9647ea098765cb833eb8596234">00031</a> <span class="preprocessor"></span><span class="preprocessor">#define THREEBYTE38_SYM   x86DisassemblerThreeByte38Opcodes</span>
+<a name="l00032"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a6a9bb5a76c1dd6a02bb96ef407a6cb7d">00032</a> <span class="preprocessor"></span><span class="preprocessor">#define THREEBYTE3A_SYM   x86DisassemblerThreeByte3AOpcodes</span>
+<a name="l00033"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#ab447e6c9b537c8221e0bd18f6d980b29">00033</a> <span class="preprocessor"></span><span class="preprocessor">#define THREEBYTEA6_SYM   x86DisassemblerThreeByteA6Opcodes</span>
+<a name="l00034"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a248490f08a4ffb48599b9d03dcbe50c1">00034</a> <span class="preprocessor"></span><span class="preprocessor">#define THREEBYTEA7_SYM   x86DisassemblerThreeByteA7Opcodes</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span>
+<a name="l00036"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a911147fbec5d6dbd706b84d032e428c4">00036</a> <span class="preprocessor">#define INSTRUCTIONS_STR  "x86DisassemblerInstrSpecifiers"</span>
+<a name="l00037"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a9980d2d5b8167d598e8895c03f269849">00037</a> <span class="preprocessor"></span><span class="preprocessor">#define CONTEXTS_STR      "x86DisassemblerContexts"</span>
+<a name="l00038"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a30409ed7db75f981d4c6e201698c4835">00038</a> <span class="preprocessor"></span><span class="preprocessor">#define ONEBYTE_STR       "x86DisassemblerOneByteOpcodes"</span>
+<a name="l00039"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a47e160d69881ebf684f92a2ae79dbfb8">00039</a> <span class="preprocessor"></span><span class="preprocessor">#define TWOBYTE_STR       "x86DisassemblerTwoByteOpcodes"</span>
+<a name="l00040"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a0e5c7f622af95a2ab79356cb210306e0">00040</a> <span class="preprocessor"></span><span class="preprocessor">#define THREEBYTE38_STR   "x86DisassemblerThreeByte38Opcodes"</span>
+<a name="l00041"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#aa64cb507c60ff05e2a5413b86927b69d">00041</a> <span class="preprocessor"></span><span class="preprocessor">#define THREEBYTE3A_STR   "x86DisassemblerThreeByte3AOpcodes"</span>
+<a name="l00042"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#af943d1ad5bf3d5e1d0e8188c264d36cf">00042</a> <span class="preprocessor"></span><span class="preprocessor">#define THREEBYTEA6_STR   "x86DisassemblerThreeByteA6Opcodes"</span>
+<a name="l00043"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#aa5cf889e43d146fa36a94ed1bec16284">00043</a> <span class="preprocessor"></span><span class="preprocessor">#define THREEBYTEA7_STR   "x86DisassemblerThreeByteA7Opcodes"</span>
+<a name="l00044"></a>00044 <span class="preprocessor"></span>
+<a name="l00045"></a>00045 <span class="comment">/*</span>
+<a name="l00046"></a>00046 <span class="comment"> * Attributes of an instruction that must be known before the opcode can be</span>
+<a name="l00047"></a>00047 <span class="comment"> * processed correctly.  Most of these indicate the presence of particular</span>
+<a name="l00048"></a>00048 <span class="comment"> * prefixes, but ATTR_64BIT is simply an attribute of the decoding context.</span>
+<a name="l00049"></a>00049 <span class="comment"> */</span>
+<a name="l00050"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a0579212a722c0d62dbd066d6df3e57d6">00050</a> <span class="preprocessor">#define ATTRIBUTE_BITS          \</span>
+<a name="l00051"></a>00051 <span class="preprocessor">  ENUM_ENTRY(ATTR_NONE,   0x00) \</span>
+<a name="l00052"></a>00052 <span class="preprocessor">  ENUM_ENTRY(ATTR_64BIT,  0x01) \</span>
+<a name="l00053"></a>00053 <span class="preprocessor">  ENUM_ENTRY(ATTR_XS,     0x02) \</span>
+<a name="l00054"></a>00054 <span class="preprocessor">  ENUM_ENTRY(ATTR_XD,     0x04) \</span>
+<a name="l00055"></a>00055 <span class="preprocessor">  ENUM_ENTRY(ATTR_REXW,   0x08) \</span>
+<a name="l00056"></a>00056 <span class="preprocessor">  ENUM_ENTRY(ATTR_OPSIZE, 0x10) \</span>
+<a name="l00057"></a>00057 <span class="preprocessor">  ENUM_ENTRY(ATTR_ADSIZE, 0x20) \</span>
+<a name="l00058"></a>00058 <span class="preprocessor">  ENUM_ENTRY(ATTR_VEX,    0x40) \</span>
+<a name="l00059"></a>00059 <span class="preprocessor">  ENUM_ENTRY(ATTR_VEXL,   0x80)</span>
+<a name="l00060"></a>00060 <span class="preprocessor"></span>
+<a name="l00061"></a>00061 <span class="preprocessor">#define ENUM_ENTRY(n, v) n = v,</span>
+<a name="l00062"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a4c0537c8eb66017d7f7ec3620dd3cfb5">00062</a> <span class="preprocessor"></span><span class="keyword">enum</span> <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a4c0537c8eb66017d7f7ec3620dd3cfb5">attributeBits</a> {
+<a name="l00063"></a>00063   <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a0579212a722c0d62dbd066d6df3e57d6">ATTRIBUTE_BITS</a>
+<a name="l00064"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a4c0537c8eb66017d7f7ec3620dd3cfb5a1cdbf973b9d133c1140f313660582e27">00064</a>   <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a4c0537c8eb66017d7f7ec3620dd3cfb5a1cdbf973b9d133c1140f313660582e27">ATTR_max</a>
+<a name="l00065"></a>00065 };
+<a name="l00066"></a>00066 <span class="preprocessor">#undef ENUM_ENTRY</span>
+<a name="l00067"></a>00067 <span class="preprocessor"></span>
+<a name="l00068"></a>00068 <span class="comment">/*</span>
+<a name="l00069"></a>00069 <span class="comment"> * Combinations of the above attributes that are relevant to instruction</span>
+<a name="l00070"></a>00070 <span class="comment"> * decode.  Although other combinations are possible, they can be reduced to</span>
+<a name="l00071"></a>00071 <span class="comment"> * these without affecting the ultimately decoded instruction.</span>
+<a name="l00072"></a>00072 <span class="comment"> */</span>
+<a name="l00073"></a>00073 
+<a name="l00074"></a>00074 <span class="comment">/*           Class name           Rank  Rationale for rank assignment         */</span>
+<a name="l00075"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a254172912b86aaedc5718b18fa05d6cf">00075</a> <span class="preprocessor">#define INSTRUCTION_CONTEXTS                                                   \</span>
+<a name="l00076"></a>00076 <span class="preprocessor">  ENUM_ENTRY(IC,                    0,  "says nothing about the instruction")  \</span>
+<a name="l00077"></a>00077 <span class="preprocessor">  ENUM_ENTRY(IC_64BIT,              1,  "says the instruction applies in "     \</span>
+<a name="l00078"></a>00078 <span class="preprocessor">                                        "64-bit mode but no more")             \</span>
+<a name="l00079"></a>00079 <span class="preprocessor">  ENUM_ENTRY(IC_OPSIZE,             3,  "requires an OPSIZE prefix, so "       \</span>
+<a name="l00080"></a>00080 <span class="preprocessor">                                        "operands change width")               \</span>
+<a name="l00081"></a>00081 <span class="preprocessor">  ENUM_ENTRY(IC_ADSIZE,             3,  "requires an ADSIZE prefix, so "       \</span>
+<a name="l00082"></a>00082 <span class="preprocessor">                                        "operands change width")               \</span>
+<a name="l00083"></a>00083 <span class="preprocessor">  ENUM_ENTRY(IC_XD,                 2,  "may say something about the opcode "  \</span>
+<a name="l00084"></a>00084 <span class="preprocessor">                                        "but not the operands")                \</span>
+<a name="l00085"></a>00085 <span class="preprocessor">  ENUM_ENTRY(IC_XS,                 2,  "may say something about the opcode "  \</span>
+<a name="l00086"></a>00086 <span class="preprocessor">                                        "but not the operands")                \</span>
+<a name="l00087"></a>00087 <span class="preprocessor">  ENUM_ENTRY(IC_XD_OPSIZE,          3,  "requires an OPSIZE prefix, so "       \</span>
+<a name="l00088"></a>00088 <span class="preprocessor">                                        "operands change width")               \</span>
+<a name="l00089"></a>00089 <span class="preprocessor">  ENUM_ENTRY(IC_XS_OPSIZE,          3,  "requires an OPSIZE prefix, so "       \</span>
+<a name="l00090"></a>00090 <span class="preprocessor">                                        "operands change width")               \</span>
+<a name="l00091"></a>00091 <span class="preprocessor">  ENUM_ENTRY(IC_64BIT_REXW,         4,  "requires a REX.W prefix, so operands "\</span>
+<a name="l00092"></a>00092 <span class="preprocessor">                                        "change width; overrides IC_OPSIZE")   \</span>
+<a name="l00093"></a>00093 <span class="preprocessor">  ENUM_ENTRY(IC_64BIT_OPSIZE,       3,  "Just as meaningful as IC_OPSIZE")     \</span>
+<a name="l00094"></a>00094 <span class="preprocessor">  ENUM_ENTRY(IC_64BIT_ADSIZE,       3,  "Just as meaningful as IC_ADSIZE")     \</span>
+<a name="l00095"></a>00095 <span class="preprocessor">  ENUM_ENTRY(IC_64BIT_XD,           5,  "XD instructions are SSE; REX.W is "   \</span>
+<a name="l00096"></a>00096 <span class="preprocessor">                                        "secondary")                           \</span>
+<a name="l00097"></a>00097 <span class="preprocessor">  ENUM_ENTRY(IC_64BIT_XS,           5,  "Just as meaningful as IC_64BIT_XD")   \</span>
+<a name="l00098"></a>00098 <span class="preprocessor">  ENUM_ENTRY(IC_64BIT_XD_OPSIZE,    3,  "Just as meaningful as IC_XD_OPSIZE")  \</span>
+<a name="l00099"></a>00099 <span class="preprocessor">  ENUM_ENTRY(IC_64BIT_XS_OPSIZE,    3,  "Just as meaningful as IC_XS_OPSIZE")  \</span>
+<a name="l00100"></a>00100 <span class="preprocessor">  ENUM_ENTRY(IC_64BIT_REXW_XS,      6,  "OPSIZE could mean a different "       \</span>
+<a name="l00101"></a>00101 <span class="preprocessor">                                        "opcode")                              \</span>
+<a name="l00102"></a>00102 <span class="preprocessor">  ENUM_ENTRY(IC_64BIT_REXW_XD,      6,  "Just as meaningful as "               \</span>
+<a name="l00103"></a>00103 <span class="preprocessor">                                        "IC_64BIT_REXW_XS")                    \</span>
+<a name="l00104"></a>00104 <span class="preprocessor">  ENUM_ENTRY(IC_64BIT_REXW_OPSIZE,  7,  "The Dynamic Duo!  Prefer over all "   \</span>
+<a name="l00105"></a>00105 <span class="preprocessor">                                        "else because this changes most "      \</span>
+<a name="l00106"></a>00106 <span class="preprocessor">                                        "operands' meaning")                   \</span>
+<a name="l00107"></a>00107 <span class="preprocessor">  ENUM_ENTRY(IC_VEX,                1,  "requires a VEX prefix")               \</span>
+<a name="l00108"></a>00108 <span class="preprocessor">  ENUM_ENTRY(IC_VEX_XS,             2,  "requires VEX and the XS prefix")      \</span>
+<a name="l00109"></a>00109 <span class="preprocessor">  ENUM_ENTRY(IC_VEX_XD,             2,  "requires VEX and the XD prefix")      \</span>
+<a name="l00110"></a>00110 <span class="preprocessor">  ENUM_ENTRY(IC_VEX_OPSIZE,         2,  "requires VEX and the OpSize prefix")  \</span>
+<a name="l00111"></a>00111 <span class="preprocessor">  ENUM_ENTRY(IC_VEX_W,              3,  "requires VEX and the W prefix")       \</span>
+<a name="l00112"></a>00112 <span class="preprocessor">  ENUM_ENTRY(IC_VEX_W_XS,           4,  "requires VEX, W, and XS prefix")      \</span>
+<a name="l00113"></a>00113 <span class="preprocessor">  ENUM_ENTRY(IC_VEX_W_XD,           4,  "requires VEX, W, and XD prefix")      \</span>
+<a name="l00114"></a>00114 <span class="preprocessor">  ENUM_ENTRY(IC_VEX_W_OPSIZE,       4,  "requires VEX, W, and OpSize")         \</span>
+<a name="l00115"></a>00115 <span class="preprocessor">  ENUM_ENTRY(IC_VEX_L,              3,  "requires VEX and the L prefix")       \</span>
+<a name="l00116"></a>00116 <span class="preprocessor">  ENUM_ENTRY(IC_VEX_L_XS,           4,  "requires VEX and the L and XS prefix")\</span>
+<a name="l00117"></a>00117 <span class="preprocessor">  ENUM_ENTRY(IC_VEX_L_XD,           4,  "requires VEX and the L and XD prefix")\</span>
+<a name="l00118"></a>00118 <span class="preprocessor">  ENUM_ENTRY(IC_VEX_L_OPSIZE,       4,  "requires VEX, L, and OpSize")         \</span>
+<a name="l00119"></a>00119 <span class="preprocessor">  ENUM_ENTRY(IC_VEX_L_W_OPSIZE,     5,  "requires VEX, L, W and OpSize")</span>
+<a name="l00120"></a>00120 <span class="preprocessor"></span>
+<a name="l00121"></a>00121 
+<a name="l00122"></a>00122 <span class="preprocessor">#define ENUM_ENTRY(n, r, d) n,</span>
+<a name="l00123"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a8ee4ef62ace14145044f3ab99fa2a8fa">00123</a> <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00124"></a>00124   <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a254172912b86aaedc5718b18fa05d6cf">INSTRUCTION_CONTEXTS</a>
+<a name="l00125"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a8ee4ef62ace14145044f3ab99fa2a8faab854aefdc9e60826e13972347e88ec15">00125</a>   <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a8ee4ef62ace14145044f3ab99fa2a8faab854aefdc9e60826e13972347e88ec15">IC_max</a>
+<a name="l00126"></a>00126 } <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a8ee4ef62ace14145044f3ab99fa2a8fa">InstructionContext</a>;
+<a name="l00127"></a>00127 <span class="preprocessor">#undef ENUM_ENTRY</span>
+<a name="l00128"></a>00128 <span class="preprocessor"></span>
+<a name="l00129"></a>00129 <span class="comment">/*</span>
+<a name="l00130"></a>00130 <span class="comment"> * Opcode types, which determine which decode table to use, both in the Intel</span>
+<a name="l00131"></a>00131 <span class="comment"> * manual and also for the decoder.</span>
+<a name="l00132"></a>00132 <span class="comment"> */</span>
+<a name="l00133"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a5cc171c21d0532e0f6353e972f1ff621">00133</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00134"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a5cc171c21d0532e0f6353e972f1ff621a703a4841d8c5722f1f7b0c887beca64e">00134</a>   <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a5cc171c21d0532e0f6353e972f1ff621a703a4841d8c5722f1f7b0c887beca64e">ONEBYTE</a>       = 0,
+<a name="l00135"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a5cc171c21d0532e0f6353e972f1ff621a339165d45a0200fd88efae325ac01b10">00135</a>   <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a5cc171c21d0532e0f6353e972f1ff621a339165d45a0200fd88efae325ac01b10">TWOBYTE</a>       = 1,
+<a name="l00136"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a5cc171c21d0532e0f6353e972f1ff621a6666ce07b725a97b298534bba4549531">00136</a>   <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a5cc171c21d0532e0f6353e972f1ff621a6666ce07b725a97b298534bba4549531">THREEBYTE_38</a>  = 2,
+<a name="l00137"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a5cc171c21d0532e0f6353e972f1ff621ac673abd123c1e32fa09f13b8d89af428">00137</a>   <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a5cc171c21d0532e0f6353e972f1ff621ac673abd123c1e32fa09f13b8d89af428">THREEBYTE_3A</a>  = 3,
+<a name="l00138"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a5cc171c21d0532e0f6353e972f1ff621a26952e7ac04ca61b0c1029cb7a656518">00138</a>   <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a5cc171c21d0532e0f6353e972f1ff621a26952e7ac04ca61b0c1029cb7a656518">THREEBYTE_A6</a>  = 4,
+<a name="l00139"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a5cc171c21d0532e0f6353e972f1ff621a47fe68a9ef1b2de8d7f18109579354c3">00139</a>   <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a5cc171c21d0532e0f6353e972f1ff621a47fe68a9ef1b2de8d7f18109579354c3">THREEBYTE_A7</a>  = 5
+<a name="l00140"></a>00140 } <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a5cc171c21d0532e0f6353e972f1ff621">OpcodeType</a>;
+<a name="l00141"></a>00141 
+<a name="l00142"></a>00142 <span class="comment">/*</span>
+<a name="l00143"></a>00143 <span class="comment"> * The following structs are used for the hierarchical decode table.  After</span>
+<a name="l00144"></a>00144 <span class="comment"> * determining the instruction's class (i.e., which IC_* constant applies to</span>
+<a name="l00145"></a>00145 <span class="comment"> * it), the decoder reads the opcode.  Some instructions require specific</span>
+<a name="l00146"></a>00146 <span class="comment"> * values of the ModR/M byte, so the ModR/M byte indexes into the final table.</span>
+<a name="l00147"></a>00147 <span class="comment"> *</span>
+<a name="l00148"></a>00148 <span class="comment"> * If a ModR/M byte is not required, "required" is left unset, and the values</span>
+<a name="l00149"></a>00149 <span class="comment"> * for each instructionID are identical.</span>
+<a name="l00150"></a>00150 <span class="comment"> */</span>
+<a name="l00151"></a>00151 
+<a name="l00152"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a9f0bb90ee924a8b71c6514c8eb6064a1">00152</a> <span class="keyword">typedef</span> uint16_t <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a9f0bb90ee924a8b71c6514c8eb6064a1">InstrUID</a>;
+<a name="l00153"></a>00153 
+<a name="l00154"></a>00154 <span class="comment">/*</span>
+<a name="l00155"></a>00155 <span class="comment"> * ModRMDecisionType - describes the type of ModR/M decision, allowing the</span>
+<a name="l00156"></a>00156 <span class="comment"> * consumer to determine the number of entries in it.</span>
+<a name="l00157"></a>00157 <span class="comment"> *</span>
+<a name="l00158"></a>00158 <span class="comment"> * MODRM_ONEENTRY - No matter what the value of the ModR/M byte is, the decoded</span>
+<a name="l00159"></a>00159 <span class="comment"> *                  instruction is the same.</span>
+<a name="l00160"></a>00160 <span class="comment"> * MODRM_SPLITRM  - If the ModR/M byte is between 0x00 and 0xbf, the opcode</span>
+<a name="l00161"></a>00161 <span class="comment"> *                  corresponds to one instruction; otherwise, it corresponds to</span>
+<a name="l00162"></a>00162 <span class="comment"> *                  a different instruction.</span>
+<a name="l00163"></a>00163 <span class="comment"> * MODRM_SPLITMISC- If the ModR/M byte is between 0x00 and 0xbf, ModR/M byte</span>
+<a name="l00164"></a>00164 <span class="comment"> *                  divided by 8 is used to select instruction; otherwise, each</span>
+<a name="l00165"></a>00165 <span class="comment"> *                  value of the ModR/M byte could correspond to a different</span>
+<a name="l00166"></a>00166 <span class="comment"> *                  instruction.</span>
+<a name="l00167"></a>00167 <span class="comment"> * MODRM_SPLITREG - ModR/M byte divided by 8 is used to select instruction. This</span>
+<a name="l00168"></a>00168 <span class="comment">                    corresponds to instructions that use reg field as opcode</span>
+<a name="l00169"></a>00169 <span class="comment"> * MODRM_FULL     - Potentially, each value of the ModR/M byte could correspond</span>
+<a name="l00170"></a>00170 <span class="comment"> *                  to a different instruction.</span>
+<a name="l00171"></a>00171 <span class="comment"> */</span>
+<a name="l00172"></a>00172 
+<a name="l00173"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a5406c5ad64936fc7e044d3dbbeeea377">00173</a> <span class="preprocessor">#define MODRMTYPES            \</span>
+<a name="l00174"></a>00174 <span class="preprocessor">  ENUM_ENTRY(MODRM_ONEENTRY)  \</span>
+<a name="l00175"></a>00175 <span class="preprocessor">  ENUM_ENTRY(MODRM_SPLITRM)   \</span>
+<a name="l00176"></a>00176 <span class="preprocessor">  ENUM_ENTRY(MODRM_SPLITMISC)  \</span>
+<a name="l00177"></a>00177 <span class="preprocessor">  ENUM_ENTRY(MODRM_SPLITREG)  \</span>
+<a name="l00178"></a>00178 <span class="preprocessor">  ENUM_ENTRY(MODRM_FULL)</span>
+<a name="l00179"></a>00179 <span class="preprocessor"></span>
+<a name="l00180"></a>00180 <span class="preprocessor">#define ENUM_ENTRY(n) n,</span>
+<a name="l00181"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a76cbf9a900546c4bd1e2039ab8f5ec88">00181</a> <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00182"></a>00182   <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a5406c5ad64936fc7e044d3dbbeeea377">MODRMTYPES</a>
+<a name="l00183"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a76cbf9a900546c4bd1e2039ab8f5ec88acb7ea667ba953120961b75c19d284e76">00183</a>   <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a76cbf9a900546c4bd1e2039ab8f5ec88acb7ea667ba953120961b75c19d284e76">MODRM_max</a>
+<a name="l00184"></a>00184 } <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a76cbf9a900546c4bd1e2039ab8f5ec88">ModRMDecisionType</a>;
+<a name="l00185"></a>00185 <span class="preprocessor">#undef ENUM_ENTRY</span>
+<a name="l00186"></a>00186 <span class="preprocessor"></span>
+<a name="l00187"></a>00187 <span class="comment">/*</span>
+<a name="l00188"></a>00188 <span class="comment"> * ModRMDecision - Specifies whether a ModR/M byte is needed and (if so) which</span>
+<a name="l00189"></a>00189 <span class="comment"> *  instruction each possible value of the ModR/M byte corresponds to.  Once</span>
+<a name="l00190"></a>00190 <span class="comment"> *  this information is known, we have narrowed down to a single instruction.</span>
+<a name="l00191"></a>00191 <span class="comment"> */</span>
+<a name="l00192"></a><a class="code" href="structModRMDecision.html">00192</a> <span class="keyword">struct </span><a class="code" href="structModRMDecision.html">ModRMDecision</a> {
+<a name="l00193"></a><a class="code" href="structModRMDecision.html#a6c4ec8014e5927c67c5a0c9f0b9315aa">00193</a>   uint8_t     <a class="code" href="structModRMDecision.html#a6c4ec8014e5927c67c5a0c9f0b9315aa">modrm_type</a>;
+<a name="l00194"></a>00194 
+<a name="l00195"></a>00195   <span class="comment">/* The macro below must be defined wherever this file is included. */</span>
+<a name="l00196"></a>00196   <a class="code" href="X86Disassembler_8h.html#a8b4dd6c5456bcfcdc40f74720afa8b73">INSTRUCTION_IDS</a>
+<a name="l00197"></a>00197 };
+<a name="l00198"></a>00198 
+<a name="l00199"></a>00199 <span class="comment">/*</span>
+<a name="l00200"></a>00200 <span class="comment"> * OpcodeDecision - Specifies which set of ModR/M->instruction tables to look at</span>
+<a name="l00201"></a>00201 <span class="comment"> *   given a particular opcode.</span>
+<a name="l00202"></a>00202 <span class="comment"> */</span>
+<a name="l00203"></a><a class="code" href="structOpcodeDecision.html">00203</a> <span class="keyword">struct </span><a class="code" href="structOpcodeDecision.html">OpcodeDecision</a> {
+<a name="l00204"></a><a class="code" href="structOpcodeDecision.html#a0cb23951ba8df6cb979bbbb35d4a83f1">00204</a>   <span class="keyword">struct </span><a class="code" href="structModRMDecision.html">ModRMDecision</a> <a class="code" href="structOpcodeDecision.html#a0cb23951ba8df6cb979bbbb35d4a83f1">modRMDecisions</a>[256];
+<a name="l00205"></a>00205 };
+<a name="l00206"></a>00206 
+<a name="l00207"></a>00207 <span class="comment">/*</span>
+<a name="l00208"></a>00208 <span class="comment"> * ContextDecision - Specifies which opcode->instruction tables to look at given</span>
+<a name="l00209"></a>00209 <span class="comment"> *   a particular context (set of attributes).  Since there are many possible</span>
+<a name="l00210"></a>00210 <span class="comment"> *   contexts, the decoder first uses CONTEXTS_SYM to determine which context</span>
+<a name="l00211"></a>00211 <span class="comment"> *   applies given a specific set of attributes.  Hence there are only IC_max</span>
+<a name="l00212"></a>00212 <span class="comment"> *   entries in this table, rather than 2^(ATTR_max).</span>
+<a name="l00213"></a>00213 <span class="comment"> */</span>
+<a name="l00214"></a><a class="code" href="structContextDecision.html">00214</a> <span class="keyword">struct </span><a class="code" href="structContextDecision.html">ContextDecision</a> {
+<a name="l00215"></a><a class="code" href="structContextDecision.html#a00eb4e91ed308eebd1667b5dce7c4b8b">00215</a>   <span class="keyword">struct </span><a class="code" href="structOpcodeDecision.html">OpcodeDecision</a> <a class="code" href="structContextDecision.html#a00eb4e91ed308eebd1667b5dce7c4b8b">opcodeDecisions</a>[<a class="code" href="X86DisassemblerDecoderCommon_8h.html#a8ee4ef62ace14145044f3ab99fa2a8faab854aefdc9e60826e13972347e88ec15">IC_max</a>];
+<a name="l00216"></a>00216 };
+<a name="l00217"></a>00217 
+<a name="l00218"></a>00218 <span class="comment">/*</span>
+<a name="l00219"></a>00219 <span class="comment"> * Physical encodings of instruction operands.</span>
+<a name="l00220"></a>00220 <span class="comment"> */</span>
+<a name="l00221"></a>00221 
+<a name="l00222"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a017007d191a0978aa8cb866f4b89cae3">00222</a> <span class="preprocessor">#define ENCODINGS                                                              \</span>
+<a name="l00223"></a>00223 <span class="preprocessor">  ENUM_ENTRY(ENCODING_NONE,   "")                                              \</span>
+<a name="l00224"></a>00224 <span class="preprocessor">  ENUM_ENTRY(ENCODING_REG,    "Register operand in ModR/M byte.")              \</span>
+<a name="l00225"></a>00225 <span class="preprocessor">  ENUM_ENTRY(ENCODING_RM,     "R/M operand in ModR/M byte.")                   \</span>
+<a name="l00226"></a>00226 <span class="preprocessor">  ENUM_ENTRY(ENCODING_VVVV,   "Register operand in VEX.vvvv byte.")            \</span>
+<a name="l00227"></a>00227 <span class="preprocessor">  ENUM_ENTRY(ENCODING_CB,     "1-byte code offset (possible new CS value)")    \</span>
+<a name="l00228"></a>00228 <span class="preprocessor">  ENUM_ENTRY(ENCODING_CW,     "2-byte")                                        \</span>
+<a name="l00229"></a>00229 <span class="preprocessor">  ENUM_ENTRY(ENCODING_CD,     "4-byte")                                        \</span>
+<a name="l00230"></a>00230 <span class="preprocessor">  ENUM_ENTRY(ENCODING_CP,     "6-byte")                                        \</span>
+<a name="l00231"></a>00231 <span class="preprocessor">  ENUM_ENTRY(ENCODING_CO,     "8-byte")                                        \</span>
+<a name="l00232"></a>00232 <span class="preprocessor">  ENUM_ENTRY(ENCODING_CT,     "10-byte")                                       \</span>
+<a name="l00233"></a>00233 <span class="preprocessor">  ENUM_ENTRY(ENCODING_IB,     "1-byte immediate")                              \</span>
+<a name="l00234"></a>00234 <span class="preprocessor">  ENUM_ENTRY(ENCODING_IW,     "2-byte")                                        \</span>
+<a name="l00235"></a>00235 <span class="preprocessor">  ENUM_ENTRY(ENCODING_ID,     "4-byte")                                        \</span>
+<a name="l00236"></a>00236 <span class="preprocessor">  ENUM_ENTRY(ENCODING_IO,     "8-byte")                                        \</span>
+<a name="l00237"></a>00237 <span class="preprocessor">  ENUM_ENTRY(ENCODING_RB,     "(AL..DIL, R8L..R15L) Register code added to "   \</span>
+<a name="l00238"></a>00238 <span class="preprocessor">                              "the opcode byte")                               \</span>
+<a name="l00239"></a>00239 <span class="preprocessor">  ENUM_ENTRY(ENCODING_RW,     "(AX..DI, R8W..R15W)")                           \</span>
+<a name="l00240"></a>00240 <span class="preprocessor">  ENUM_ENTRY(ENCODING_RD,     "(EAX..EDI, R8D..R15D)")                         \</span>
+<a name="l00241"></a>00241 <span class="preprocessor">  ENUM_ENTRY(ENCODING_RO,     "(RAX..RDI, R8..R15)")                           \</span>
+<a name="l00242"></a>00242 <span class="preprocessor">  ENUM_ENTRY(ENCODING_I,      "Position on floating-point stack added to the " \</span>
+<a name="l00243"></a>00243 <span class="preprocessor">                              "opcode byte")                                   \</span>
+<a name="l00244"></a>00244 <span class="preprocessor">                                                                               \</span>
+<a name="l00245"></a>00245 <span class="preprocessor">  ENUM_ENTRY(ENCODING_Iv,     "Immediate of operand size")                     \</span>
+<a name="l00246"></a>00246 <span class="preprocessor">  ENUM_ENTRY(ENCODING_Ia,     "Immediate of address size")                     \</span>
+<a name="l00247"></a>00247 <span class="preprocessor">  ENUM_ENTRY(ENCODING_Rv,     "Register code of operand size added to the "    \</span>
+<a name="l00248"></a>00248 <span class="preprocessor">                              "opcode byte")                                   \</span>
+<a name="l00249"></a>00249 <span class="preprocessor">  ENUM_ENTRY(ENCODING_DUP,    "Duplicate of another operand; ID is encoded "   \</span>
+<a name="l00250"></a>00250 <span class="preprocessor">                              "in type")</span>
+<a name="l00251"></a>00251 <span class="preprocessor"></span>
+<a name="l00252"></a>00252 <span class="preprocessor">#define ENUM_ENTRY(n, d) n,</span>
+<a name="l00253"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a7c612b4ed63c0ad7096e01f593879d58">00253</a> <span class="preprocessor"></span>  <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00254"></a>00254     <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a017007d191a0978aa8cb866f4b89cae3">ENCODINGS</a>
+<a name="l00255"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a7c612b4ed63c0ad7096e01f593879d58a7de63ed5c5cb91dd70752a91fd19a688">00255</a>     <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a7c612b4ed63c0ad7096e01f593879d58a7de63ed5c5cb91dd70752a91fd19a688">ENCODING_max</a>
+<a name="l00256"></a>00256   } <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a7c612b4ed63c0ad7096e01f593879d58">OperandEncoding</a>;
+<a name="l00257"></a>00257 <span class="preprocessor">#undef ENUM_ENTRY</span>
+<a name="l00258"></a>00258 <span class="preprocessor"></span>
+<a name="l00259"></a>00259 <span class="comment">/*</span>
+<a name="l00260"></a>00260 <span class="comment"> * Semantic interpretations of instruction operands.</span>
+<a name="l00261"></a>00261 <span class="comment"> */</span>
+<a name="l00262"></a>00262 
+<a name="l00263"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a85d942a7aa8b718de83d06343f12aa8a">00263</a> <span class="preprocessor">#define TYPES                                                                  \</span>
+<a name="l00264"></a>00264 <span class="preprocessor">  ENUM_ENTRY(TYPE_NONE,       "")                                              \</span>
+<a name="l00265"></a>00265 <span class="preprocessor">  ENUM_ENTRY(TYPE_REL8,       "1-byte immediate address")                      \</span>
+<a name="l00266"></a>00266 <span class="preprocessor">  ENUM_ENTRY(TYPE_REL16,      "2-byte")                                        \</span>
+<a name="l00267"></a>00267 <span class="preprocessor">  ENUM_ENTRY(TYPE_REL32,      "4-byte")                                        \</span>
+<a name="l00268"></a>00268 <span class="preprocessor">  ENUM_ENTRY(TYPE_REL64,      "8-byte")                                        \</span>
+<a name="l00269"></a>00269 <span class="preprocessor">  ENUM_ENTRY(TYPE_PTR1616,    "2+2-byte segment+offset address")               \</span>
+<a name="l00270"></a>00270 <span class="preprocessor">  ENUM_ENTRY(TYPE_PTR1632,    "2+4-byte")                                      \</span>
+<a name="l00271"></a>00271 <span class="preprocessor">  ENUM_ENTRY(TYPE_PTR1664,    "2+8-byte")                                      \</span>
+<a name="l00272"></a>00272 <span class="preprocessor">  ENUM_ENTRY(TYPE_R8,         "1-byte register operand")                       \</span>
+<a name="l00273"></a>00273 <span class="preprocessor">  ENUM_ENTRY(TYPE_R16,        "2-byte")                                        \</span>
+<a name="l00274"></a>00274 <span class="preprocessor">  ENUM_ENTRY(TYPE_R32,        "4-byte")                                        \</span>
+<a name="l00275"></a>00275 <span class="preprocessor">  ENUM_ENTRY(TYPE_R64,        "8-byte")                                        \</span>
+<a name="l00276"></a>00276 <span class="preprocessor">  ENUM_ENTRY(TYPE_IMM8,       "1-byte immediate operand")                      \</span>
+<a name="l00277"></a>00277 <span class="preprocessor">  ENUM_ENTRY(TYPE_IMM16,      "2-byte")                                        \</span>
+<a name="l00278"></a>00278 <span class="preprocessor">  ENUM_ENTRY(TYPE_IMM32,      "4-byte")                                        \</span>
+<a name="l00279"></a>00279 <span class="preprocessor">  ENUM_ENTRY(TYPE_IMM64,      "8-byte")                                        \</span>
+<a name="l00280"></a>00280 <span class="preprocessor">  ENUM_ENTRY(TYPE_IMM3,       "1-byte immediate operand between 0 and 7")      \</span>
+<a name="l00281"></a>00281 <span class="preprocessor">  ENUM_ENTRY(TYPE_IMM5,       "1-byte immediate operand between 0 and 31")     \</span>
+<a name="l00282"></a>00282 <span class="preprocessor">  ENUM_ENTRY(TYPE_RM8,        "1-byte register or memory operand")             \</span>
+<a name="l00283"></a>00283 <span class="preprocessor">  ENUM_ENTRY(TYPE_RM16,       "2-byte")                                        \</span>
+<a name="l00284"></a>00284 <span class="preprocessor">  ENUM_ENTRY(TYPE_RM32,       "4-byte")                                        \</span>
+<a name="l00285"></a>00285 <span class="preprocessor">  ENUM_ENTRY(TYPE_RM64,       "8-byte")                                        \</span>
+<a name="l00286"></a>00286 <span class="preprocessor">  ENUM_ENTRY(TYPE_M,          "Memory operand")                                \</span>
+<a name="l00287"></a>00287 <span class="preprocessor">  ENUM_ENTRY(TYPE_M8,         "1-byte")                                        \</span>
+<a name="l00288"></a>00288 <span class="preprocessor">  ENUM_ENTRY(TYPE_M16,        "2-byte")                                        \</span>
+<a name="l00289"></a>00289 <span class="preprocessor">  ENUM_ENTRY(TYPE_M32,        "4-byte")                                        \</span>
+<a name="l00290"></a>00290 <span class="preprocessor">  ENUM_ENTRY(TYPE_M64,        "8-byte")                                        \</span>
+<a name="l00291"></a>00291 <span class="preprocessor">  ENUM_ENTRY(TYPE_LEA,        "Effective address")                             \</span>
+<a name="l00292"></a>00292 <span class="preprocessor">  ENUM_ENTRY(TYPE_M128,       "16-byte (SSE/SSE2)")                            \</span>
+<a name="l00293"></a>00293 <span class="preprocessor">  ENUM_ENTRY(TYPE_M256,       "256-byte (AVX)")                                \</span>
+<a name="l00294"></a>00294 <span class="preprocessor">  ENUM_ENTRY(TYPE_M1616,      "2+2-byte segment+offset address")               \</span>
+<a name="l00295"></a>00295 <span class="preprocessor">  ENUM_ENTRY(TYPE_M1632,      "2+4-byte")                                      \</span>
+<a name="l00296"></a>00296 <span class="preprocessor">  ENUM_ENTRY(TYPE_M1664,      "2+8-byte")                                      \</span>
+<a name="l00297"></a>00297 <span class="preprocessor">  ENUM_ENTRY(TYPE_M16_32,     "2+4-byte two-part memory operand (LIDT, LGDT)") \</span>
+<a name="l00298"></a>00298 <span class="preprocessor">  ENUM_ENTRY(TYPE_M16_16,     "2+2-byte (BOUND)")                              \</span>
+<a name="l00299"></a>00299 <span class="preprocessor">  ENUM_ENTRY(TYPE_M32_32,     "4+4-byte (BOUND)")                              \</span>
+<a name="l00300"></a>00300 <span class="preprocessor">  ENUM_ENTRY(TYPE_M16_64,     "2+8-byte (LIDT, LGDT)")                         \</span>
+<a name="l00301"></a>00301 <span class="preprocessor">  ENUM_ENTRY(TYPE_MOFFS8,     "1-byte memory offset (relative to segment "     \</span>
+<a name="l00302"></a>00302 <span class="preprocessor">                              "base)")                                         \</span>
+<a name="l00303"></a>00303 <span class="preprocessor">  ENUM_ENTRY(TYPE_MOFFS16,    "2-byte")                                        \</span>
+<a name="l00304"></a>00304 <span class="preprocessor">  ENUM_ENTRY(TYPE_MOFFS32,    "4-byte")                                        \</span>
+<a name="l00305"></a>00305 <span class="preprocessor">  ENUM_ENTRY(TYPE_MOFFS64,    "8-byte")                                        \</span>
+<a name="l00306"></a>00306 <span class="preprocessor">  ENUM_ENTRY(TYPE_SREG,       "Byte with single bit set: 0 = ES, 1 = CS, "     \</span>
+<a name="l00307"></a>00307 <span class="preprocessor">                              "2 = SS, 3 = DS, 4 = FS, 5 = GS")                \</span>
+<a name="l00308"></a>00308 <span class="preprocessor">  ENUM_ENTRY(TYPE_M32FP,      "32-bit IEE754 memory floating-point operand")   \</span>
+<a name="l00309"></a>00309 <span class="preprocessor">  ENUM_ENTRY(TYPE_M64FP,      "64-bit")                                        \</span>
+<a name="l00310"></a>00310 <span class="preprocessor">  ENUM_ENTRY(TYPE_M80FP,      "80-bit extended")                               \</span>
+<a name="l00311"></a>00311 <span class="preprocessor">  ENUM_ENTRY(TYPE_M16INT,     "2-byte memory integer operand for use in "      \</span>
+<a name="l00312"></a>00312 <span class="preprocessor">                              "floating-point instructions")                   \</span>
+<a name="l00313"></a>00313 <span class="preprocessor">  ENUM_ENTRY(TYPE_M32INT,     "4-byte")                                        \</span>
+<a name="l00314"></a>00314 <span class="preprocessor">  ENUM_ENTRY(TYPE_M64INT,     "8-byte")                                        \</span>
+<a name="l00315"></a>00315 <span class="preprocessor">  ENUM_ENTRY(TYPE_ST,         "Position on the floating-point stack")          \</span>
+<a name="l00316"></a>00316 <span class="preprocessor">  ENUM_ENTRY(TYPE_MM,         "MMX register operand")                          \</span>
+<a name="l00317"></a>00317 <span class="preprocessor">  ENUM_ENTRY(TYPE_MM32,       "4-byte MMX register or memory operand")         \</span>
+<a name="l00318"></a>00318 <span class="preprocessor">  ENUM_ENTRY(TYPE_MM64,       "8-byte")                                        \</span>
+<a name="l00319"></a>00319 <span class="preprocessor">  ENUM_ENTRY(TYPE_XMM,        "XMM register operand")                          \</span>
+<a name="l00320"></a>00320 <span class="preprocessor">  ENUM_ENTRY(TYPE_XMM32,      "4-byte XMM register or memory operand")         \</span>
+<a name="l00321"></a>00321 <span class="preprocessor">  ENUM_ENTRY(TYPE_XMM64,      "8-byte")                                        \</span>
+<a name="l00322"></a>00322 <span class="preprocessor">  ENUM_ENTRY(TYPE_XMM128,     "16-byte")                                       \</span>
+<a name="l00323"></a>00323 <span class="preprocessor">  ENUM_ENTRY(TYPE_XMM256,     "32-byte")                                       \</span>
+<a name="l00324"></a>00324 <span class="preprocessor">  ENUM_ENTRY(TYPE_XMM0,       "Implicit use of XMM0")                          \</span>
+<a name="l00325"></a>00325 <span class="preprocessor">  ENUM_ENTRY(TYPE_SEGMENTREG, "Segment register operand")                      \</span>
+<a name="l00326"></a>00326 <span class="preprocessor">  ENUM_ENTRY(TYPE_DEBUGREG,   "Debug register operand")                        \</span>
+<a name="l00327"></a>00327 <span class="preprocessor">  ENUM_ENTRY(TYPE_CONTROLREG, "Control register operand")                      \</span>
+<a name="l00328"></a>00328 <span class="preprocessor">                                                                               \</span>
+<a name="l00329"></a>00329 <span class="preprocessor">  ENUM_ENTRY(TYPE_Mv,         "Memory operand of operand size")                \</span>
+<a name="l00330"></a>00330 <span class="preprocessor">  ENUM_ENTRY(TYPE_Rv,         "Register operand of operand size")              \</span>
+<a name="l00331"></a>00331 <span class="preprocessor">  ENUM_ENTRY(TYPE_IMMv,       "Immediate operand of operand size")             \</span>
+<a name="l00332"></a>00332 <span class="preprocessor">  ENUM_ENTRY(TYPE_RELv,       "Immediate address of operand size")             \</span>
+<a name="l00333"></a>00333 <span class="preprocessor">  ENUM_ENTRY(TYPE_DUP0,       "Duplicate of operand 0")                        \</span>
+<a name="l00334"></a>00334 <span class="preprocessor">  ENUM_ENTRY(TYPE_DUP1,       "operand 1")                                     \</span>
+<a name="l00335"></a>00335 <span class="preprocessor">  ENUM_ENTRY(TYPE_DUP2,       "operand 2")                                     \</span>
+<a name="l00336"></a>00336 <span class="preprocessor">  ENUM_ENTRY(TYPE_DUP3,       "operand 3")                                     \</span>
+<a name="l00337"></a>00337 <span class="preprocessor">  ENUM_ENTRY(TYPE_DUP4,       "operand 4")                                     \</span>
+<a name="l00338"></a>00338 <span class="preprocessor">  ENUM_ENTRY(TYPE_M512,       "512-bit FPU/MMX/XMM/MXCSR state")</span>
+<a name="l00339"></a>00339 <span class="preprocessor"></span>
+<a name="l00340"></a>00340 <span class="preprocessor">#define ENUM_ENTRY(n, d) n,</span>
+<a name="l00341"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#aa4b9b8291a90b1a586c468110fb346a4">00341</a> <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00342"></a>00342   <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a85d942a7aa8b718de83d06343f12aa8a">TYPES</a>
+<a name="l00343"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#aa4b9b8291a90b1a586c468110fb346a4aed1193d84f089585c22ed0d923a37c89">00343</a>   <a class="code" href="X86DisassemblerDecoderCommon_8h.html#aa4b9b8291a90b1a586c468110fb346a4aed1193d84f089585c22ed0d923a37c89">TYPE_max</a>
+<a name="l00344"></a>00344 } <a class="code" href="X86DisassemblerDecoderCommon_8h.html#aa4b9b8291a90b1a586c468110fb346a4">OperandType</a>;
+<a name="l00345"></a>00345 <span class="preprocessor">#undef ENUM_ENTRY</span>
+<a name="l00346"></a>00346 <span class="preprocessor"></span>
+<a name="l00347"></a>00347 <span class="comment">/*</span>
+<a name="l00348"></a>00348 <span class="comment"> * OperandSpecifier - The specification for how to extract and interpret one</span>
+<a name="l00349"></a>00349 <span class="comment"> *   operand.</span>
+<a name="l00350"></a>00350 <span class="comment"> */</span>
+<a name="l00351"></a><a class="code" href="structOperandSpecifier.html">00351</a> <span class="keyword">struct </span><a class="code" href="structOperandSpecifier.html">OperandSpecifier</a> {
+<a name="l00352"></a><a class="code" href="structOperandSpecifier.html#af8374a1a0bbfe5c8e5508f8482aae67b">00352</a>   uint8_t <a class="code" href="structOperandSpecifier.html#af8374a1a0bbfe5c8e5508f8482aae67b">encoding</a>;
+<a name="l00353"></a><a class="code" href="structOperandSpecifier.html#aea1718df991133d6972a0bfadc66cfbf">00353</a>   uint8_t <a class="code" href="structOperandSpecifier.html#aea1718df991133d6972a0bfadc66cfbf">type</a>;
+<a name="l00354"></a>00354 };
+<a name="l00355"></a>00355 
+<a name="l00356"></a>00356 <span class="comment">/*</span>
+<a name="l00357"></a>00357 <span class="comment"> * Indicates where the opcode modifier (if any) is to be found.  Extended</span>
+<a name="l00358"></a>00358 <span class="comment"> * opcodes with AddRegFrm have the opcode modifier in the ModR/M byte.</span>
+<a name="l00359"></a>00359 <span class="comment"> */</span>
+<a name="l00360"></a>00360 
+<a name="l00361"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a964b7839d998c1a29b40ae836bf09488">00361</a> <span class="preprocessor">#define MODIFIER_TYPES        \</span>
+<a name="l00362"></a>00362 <span class="preprocessor">  ENUM_ENTRY(MODIFIER_NONE)   \</span>
+<a name="l00363"></a>00363 <span class="preprocessor">  ENUM_ENTRY(MODIFIER_OPCODE) \</span>
+<a name="l00364"></a>00364 <span class="preprocessor">  ENUM_ENTRY(MODIFIER_MODRM)</span>
+<a name="l00365"></a>00365 <span class="preprocessor"></span>
+<a name="l00366"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#ad2207c7f28ca203e34ffc9b73aba8a93">00366</a> <span class="preprocessor">#define ENUM_ENTRY(n) n,</span>
+<a name="l00367"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a96ba018ea46fb28e626c3b573aca5435">00367</a> <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00368"></a>00368   <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a964b7839d998c1a29b40ae836bf09488">MODIFIER_TYPES</a>
+<a name="l00369"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a96ba018ea46fb28e626c3b573aca5435ac82bb0277015d58dd4783dc441b48956">00369</a>   <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a96ba018ea46fb28e626c3b573aca5435ac82bb0277015d58dd4783dc441b48956">MODIFIER_max</a>
+<a name="l00370"></a>00370 } <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a96ba018ea46fb28e626c3b573aca5435">ModifierType</a>;
+<a name="l00371"></a>00371 <span class="preprocessor">#undef ENUM_ENTRY</span>
+<a name="l00372"></a>00372 <span class="preprocessor"></span>
+<a name="l00373"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a5f403e1e45149893b0ea54d8796cc921">00373</a> <span class="preprocessor">#define X86_MAX_OPERANDS 5</span>
+<a name="l00374"></a>00374 <span class="preprocessor"></span>
+<a name="l00375"></a>00375 <span class="comment">/*</span>
+<a name="l00376"></a>00376 <span class="comment"> * The specification for how to extract and interpret a full instruction and</span>
+<a name="l00377"></a>00377 <span class="comment"> * its operands.</span>
+<a name="l00378"></a>00378 <span class="comment"> */</span>
+<a name="l00379"></a><a class="code" href="structInstructionSpecifier.html">00379</a> <span class="keyword">struct </span><a class="code" href="structInstructionSpecifier.html">InstructionSpecifier</a> {
+<a name="l00380"></a><a class="code" href="structInstructionSpecifier.html#a57b4276f710b106cc8b5bc27d0096fac">00380</a>   uint8_t <a class="code" href="structInstructionSpecifier.html#a57b4276f710b106cc8b5bc27d0096fac">modifierType</a>;
+<a name="l00381"></a><a class="code" href="structInstructionSpecifier.html#a118cd668b413e8d794ff37f7539e8303">00381</a>   uint8_t <a class="code" href="structInstructionSpecifier.html#a118cd668b413e8d794ff37f7539e8303">modifierBase</a>;
+<a name="l00382"></a>00382 
+<a name="l00383"></a>00383   <span class="comment">/* The macro below must be defined wherever this file is included. */</span>
+<a name="l00384"></a>00384   <a class="code" href="X86Disassembler_8h.html#aa761f2ad48a0e6921c32c7ccf3d6f406">INSTRUCTION_SPECIFIER_FIELDS</a>
+<a name="l00385"></a>00385 };
+<a name="l00386"></a>00386 
+<a name="l00387"></a>00387 <span class="comment">/*</span>
+<a name="l00388"></a>00388 <span class="comment"> * Decoding mode for the Intel disassembler.  16-bit, 32-bit, and 64-bit mode</span>
+<a name="l00389"></a>00389 <span class="comment"> * are supported, and represent real mode, IA-32e, and IA-32e in 64-bit mode,</span>
+<a name="l00390"></a>00390 <span class="comment"> * respectively.</span>
+<a name="l00391"></a>00391 <span class="comment"> */</span>
+<a name="l00392"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a549ce06ad85d0726a93b2768ae7c7da7">00392</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
+<a name="l00393"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a549ce06ad85d0726a93b2768ae7c7da7a53fbe3659b7806422318b014a19e66c3">00393</a>   <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a549ce06ad85d0726a93b2768ae7c7da7a53fbe3659b7806422318b014a19e66c3">MODE_16BIT</a>,
+<a name="l00394"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a549ce06ad85d0726a93b2768ae7c7da7a43026c766e3f6ed1988064019cf4aa39">00394</a>   <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a549ce06ad85d0726a93b2768ae7c7da7a43026c766e3f6ed1988064019cf4aa39">MODE_32BIT</a>,
+<a name="l00395"></a><a class="code" href="X86DisassemblerDecoderCommon_8h.html#a549ce06ad85d0726a93b2768ae7c7da7aeaebd8c1fe2b71a386838da0280c211c">00395</a>   <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a549ce06ad85d0726a93b2768ae7c7da7aeaebd8c1fe2b71a386838da0280c211c">MODE_64BIT</a>
+<a name="l00396"></a>00396 } <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a549ce06ad85d0726a93b2768ae7c7da7">DisassemblerMode</a>;
+<a name="l00397"></a>00397 
+<a name="l00398"></a>00398 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:16 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/X86DisassemblerDecoder_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86DisassemblerDecoder_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86DisassemblerDecoder_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86DisassemblerDecoder_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,1590 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: X86DisassemblerDecoder.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_ae72ec760f5f4d3869211e663a0eb354.html">X86</a>      </li>
+      <li class="navelem"><a class="el" href="dir_f8d2defef88098d0bc5331515603729f.html">Disassembler</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#define-members">Defines</a> |
+<a href="#typedef-members">Typedefs</a> |
+<a href="#enum-members">Enumerations</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">X86DisassemblerDecoder.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="X86DisassemblerDecoderCommon_8h_source.html">X86DisassemblerDecoderCommon.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for X86DisassemblerDecoder.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="X86DisassemblerDecoder_8h__incl.png" border="0" usemap="#X86DisassemblerDecoder_8h" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="X86DisassemblerDecoder_8h__dep__incl.png" border="0" usemap="#X86DisassemblerDecoder_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="X86DisassemblerDecoder_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structInternalInstruction.html">InternalInstruction</a></td></tr>
+<tr><td colspan="2"><h2><a name="define-members"></a>
+Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#aa761f2ad48a0e6921c32c7ccf3d6f406">INSTRUCTION_SPECIFIER_FIELDS</a>   uint16_t operands;</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a8b4dd6c5456bcfcdc40f74720afa8b73">INSTRUCTION_IDS</a>   uint16_t instructionIDs;</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a4bce531c2ed18d569a316029616e82f0">modFromModRM</a>(modRM)   (((modRM) & 0xc0) >> 6)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a8386ddf05ce05f470ca10679a78973bd">regFromModRM</a>(modRM)   (((modRM) & 0x38) >> 3)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a384089e78b51b1b5773e879ed1d4e672">rmFromModRM</a>(modRM)   ((modRM) & 0x7)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a7b5f49eafdca9d6be0464fccb94a4f33">scaleFromSIB</a>(sib)   (((sib) & 0xc0) >> 6)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#adc11bcb515676078c7c25441c03bddbc">indexFromSIB</a>(sib)   (((sib) & 0x38) >> 3)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a439f21b8d5ea58ea5fe17d11d1547986">baseFromSIB</a>(sib)   ((sib) & 0x7)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a567f29a688d316f9d1e149753d4d77da">wFromREX</a>(rex)   (((rex) & 0x8) >> 3)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a1c2e931225f964b581ab025f86a39872">rFromREX</a>(rex)   (((rex) & 0x4) >> 2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#af00d764f04a2d7143d9de59ea213f148">xFromREX</a>(rex)   (((rex) & 0x2) >> 1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#af112ae874f4cca98ba15a30f5743e5e1">bFromREX</a>(rex)   ((rex) & 0x1)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a0eb17652126644a237528e0153ee96b1">rFromVEX2of3</a>(vex)   (((~(vex)) & 0x80) >> 7)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a2702d55c4b2a40989bd2b9cc8a71596e">xFromVEX2of3</a>(vex)   (((~(vex)) & 0x40) >> 6)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#aabfc6f7a66e0c44fd2145dddeaa88497">bFromVEX2of3</a>(vex)   (((~(vex)) & 0x20) >> 5)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a30e003e4461758b6dba2c70f339ed6c3">mmmmmFromVEX2of3</a>(vex)   ((vex) & 0x1f)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#ab11339ee1e5b8aaa4a706693c51041ae">wFromVEX3of3</a>(vex)   (((vex) & 0x80) >> 7)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a9b5608175fb4bc57fd5e6bcd7f5efed2">vvvvFromVEX3of3</a>(vex)   (((~(vex)) & 0x78) >> 3)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#abf2fe87228fa8c1419f2a5f86baaa597">lFromVEX3of3</a>(vex)   (((vex) & 0x4) >> 2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#ac85472ee64d389babbd2c32deef16d89">ppFromVEX3of3</a>(vex)   ((vex) & 0x3)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a4543a64655e2abfbf25bc206c9219150">rFromVEX2of2</a>(vex)   (((~(vex)) & 0x80) >> 7)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a8dc9745657ce1382ca803e1e3e62a049">vvvvFromVEX2of2</a>(vex)   (((~(vex)) & 0x78) >> 3)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a6886436df5f38bbed7d036a5d8cb44bf">lFromVEX2of2</a>(vex)   (((vex) & 0x4) >> 2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#adba38d038bb20114ef792961068aebd9">ppFromVEX2of2</a>(vex)   ((vex) & 0x3)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a258c72e73a946a158cc399bf90d94ce0">REGS_8BIT</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a94a57a6eee386883e5e59e016eace859">EA_BASES_16BIT</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a9007c428c7b7ffd0ca765cb41c2e002d">REGS_16BIT</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#aa49626340dd008810da4c2f48358f4e5">EA_BASES_32BIT</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a4ad23de5ab07419bd9fadd58ca615585">REGS_32BIT</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a67e6e1688bcff4c9ea17a36f5cd8b8b0">EA_BASES_64BIT</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a98b6730ebd5ca012ee84ca5ba1582608">REGS_64BIT</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a71fa6e4885a38387a87080b979e926d8">REGS_MMX</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a7c194da583ffb0dd2fab50331e4cbc41">REGS_XMM</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a6fc6928518e9a8c348d985bec97d382e">REGS_YMM</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#ac4d47716cec167134dff7b8a6e91ed17">REGS_SEGMENT</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#ab06e6891e879fdbd81834d827cecde67">REGS_DEBUG</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a4a1acdd8e2cba2404a5dc403a385c58c">REGS_CONTROL</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#ae1c2d19d6110a95f79a5e8cbe1f6e007">ALL_EA_BASES</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a967004f254ec4b0e36dca9b2db27f139">ALL_SIB_BASES</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a8f4c518929a964ae54a9d42780670cd2">ALL_REGS</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a168a41dfc8e956c6180862aeca885db1">ENTRY</a>(x)   EA_BASE_##x,</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a168a41dfc8e956c6180862aeca885db1">ENTRY</a>(x)   EA_REG_##x,</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a168a41dfc8e956c6180862aeca885db1">ENTRY</a>(x)   SIB_INDEX_##x,</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a168a41dfc8e956c6180862aeca885db1">ENTRY</a>(x)   SIB_BASE_##x,</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a168a41dfc8e956c6180862aeca885db1">ENTRY</a>(x)   MODRM_REG_##x,</td></tr>
+<tr><td colspan="2"><h2><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#ad2f8ed01c1733d4eab0932d970abaa4c">BOOL</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef int(* </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a86138fe6180e8b01ffba8011e948fca9">byteReader_t</a> )(const void *arg, uint8_t *byte, uint64_t address)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#aeacf2f01401e8f724683d399ff8eb43f">dlog_t</a> )(void *arg, const <a class="el" href="classchar.html">char</a> *log)</td></tr>
+<tr><td colspan="2"><h2><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#afc689603f1848ec33ddbac69b8aa1e95">EABase</a> { <a class="el" href="X86DisassemblerDecoder_8h.html#afc689603f1848ec33ddbac69b8aa1e95a546e3bf7a78bafabd50fbf842b0e87c5">EA_BASE_NONE</a>
+ }</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a2af8cf971611d096b00b34eece806adb">SIBIndex</a> { <a class="el" href="X86DisassemblerDecoder_8h.html#a2af8cf971611d096b00b34eece806adba3d035927a65ed81a8869a3f64f669bd0">SIB_INDEX_NONE</a>
+ }</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a7cb9f08e12fcda158bbe0cee76ef61f7">SIBBase</a> { <a class="el" href="X86DisassemblerDecoder_8h.html#a7cb9f08e12fcda158bbe0cee76ef61f7a28642d84aadee3992f08c36ca08b16a5">SIB_BASE_NONE</a>
+ }</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a86b3ea534df3a598db89d7d5ff581112">EADisplacement</a> { <a class="el" href="X86DisassemblerDecoder_8h.html#a86b3ea534df3a598db89d7d5ff581112a377f7990be2aed8d7547befd58ba4bfc">EA_DISP_NONE</a>, 
+<a class="el" href="X86DisassemblerDecoder_8h.html#a86b3ea534df3a598db89d7d5ff581112a8c6d89c83a80d627b41123cb4efd3959">EA_DISP_8</a>, 
+<a class="el" href="X86DisassemblerDecoder_8h.html#a86b3ea534df3a598db89d7d5ff581112a35eccd80af0540628e1fc528312392ac">EA_DISP_16</a>, 
+<a class="el" href="X86DisassemblerDecoder_8h.html#a86b3ea534df3a598db89d7d5ff581112a40fd53a41ecdbdf2d79b963fc45aacf8">EA_DISP_32</a>
+ }</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a> </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a678cc792a7ece4943c203fd18e57ad46">SegmentOverride</a> { <br/>
+  <a class="el" href="X86DisassemblerDecoder_8h.html#a678cc792a7ece4943c203fd18e57ad46a240f31f7025bec995d4d07079d214dd2">SEG_OVERRIDE_NONE</a>, 
+<a class="el" href="X86DisassemblerDecoder_8h.html#a678cc792a7ece4943c203fd18e57ad46a7ae1d102e8d3480f4ea83cc393fa2c76">SEG_OVERRIDE_CS</a>, 
+<a class="el" href="X86DisassemblerDecoder_8h.html#a678cc792a7ece4943c203fd18e57ad46aa625e0d1316f604a7d38d4ca46a54ceb">SEG_OVERRIDE_SS</a>, 
+<a class="el" href="X86DisassemblerDecoder_8h.html#a678cc792a7ece4943c203fd18e57ad46ad4367053bdbbe0a470b5459337ce77b2">SEG_OVERRIDE_DS</a>, 
+<br/>
+  <a class="el" href="X86DisassemblerDecoder_8h.html#a678cc792a7ece4943c203fd18e57ad46a72c5f3c25f3f4d5e1f9fb70f122103b2">SEG_OVERRIDE_ES</a>, 
+<a class="el" href="X86DisassemblerDecoder_8h.html#a678cc792a7ece4943c203fd18e57ad46ac748043f7a0a000924982b9d1864e4fe">SEG_OVERRIDE_FS</a>, 
+<a class="el" href="X86DisassemblerDecoder_8h.html#a678cc792a7ece4943c203fd18e57ad46a975c840f7f5d04685ac87840b9f66429">SEG_OVERRIDE_GS</a>, 
+<a class="el" href="X86DisassemblerDecoder_8h.html#a678cc792a7ece4943c203fd18e57ad46a2455fce77c2692279ca526d892cbba94">SEG_OVERRIDE_max</a>
+<br/>
+ }</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#ad686b7233351c632a5403bb8880b2879">VEXLeadingOpcodeByte</a> { <a class="el" href="X86DisassemblerDecoder_8h.html#ad686b7233351c632a5403bb8880b2879a9a40a4486721b709051aa03918e50241">VEX_LOB_0F</a> =  0x1, 
+<a class="el" href="X86DisassemblerDecoder_8h.html#ad686b7233351c632a5403bb8880b2879af71a9e484b7632521ba492c4027978b4">VEX_LOB_0F38</a> =  0x2, 
+<a class="el" href="X86DisassemblerDecoder_8h.html#ad686b7233351c632a5403bb8880b2879a18e6eac10bc946b39abd1f7baa070f70">VEX_LOB_0F3A</a> =  0x3
+ }</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a27161ac001e2359fe24d92fc981e35a8">VEXPrefixCode</a> { <a class="el" href="X86DisassemblerDecoder_8h.html#a27161ac001e2359fe24d92fc981e35a8a482ce8f028fb750cbc2b072f613685b2">VEX_PREFIX_NONE</a> =  0x0, 
+<a class="el" href="X86DisassemblerDecoder_8h.html#a27161ac001e2359fe24d92fc981e35a8a5f3db606eb177e16ca6cfcb1f5ae0e65">VEX_PREFIX_66</a> =  0x1, 
+<a class="el" href="X86DisassemblerDecoder_8h.html#a27161ac001e2359fe24d92fc981e35a8a8a536cd1595533eb4dba530aa5571f29">VEX_PREFIX_F3</a> =  0x2, 
+<a class="el" href="X86DisassemblerDecoder_8h.html#a27161ac001e2359fe24d92fc981e35a8a901c8f1034e86a24a18818ebb74d7733">VEX_PREFIX_F2</a> =  0x3
+ }</td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a6c71d4e276f8fe7ce11b7a8456821d7c">decodeInstruction</a> (struct <a class="el" href="structInternalInstruction.html">InternalInstruction</a> *insn, <a class="el" href="X86DisassemblerDecoder_8h.html#a86138fe6180e8b01ffba8011e948fca9">byteReader_t</a> reader, const void *readerArg, <a class="el" href="X86DisassemblerDecoder_8h.html#aeacf2f01401e8f724683d399ff8eb43f">dlog_t</a> logger, void *loggerArg, const void *miiArg, uint64_t startLoc, <a class="el" href="X86DisassemblerDecoderCommon_8h.html#a549ce06ad85d0726a93b2768ae7c7da7">DisassemblerMode</a> mode)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#a1982ca18fc4821e63790ae1fa8e4cabe">x86DisassemblerDebug</a> (const <a class="el" href="classchar.html">char</a> *<a class="el" href="PathProfileInfo_8cpp.html#add64b5c8b8c45c8dabeaf9d771cc1534">file</a>, <a class="el" href="classunsigned.html">unsigned</a> line, const <a class="el" href="classchar.html">char</a> *s)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classchar.html">char</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="X86DisassemblerDecoder_8h.html#ab989dba004fc91ca37606095e0a98b54">x86DisassemblerGetInstrName</a> (<a class="el" href="classunsigned.html">unsigned</a> Opcode, const void *mii)</td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ae1c2d19d6110a95f79a5e8cbe1f6e007"></a><!-- doxytag: member="X86DisassemblerDecoder.h::ALL_EA_BASES" ref="ae1c2d19d6110a95f79a5e8cbe1f6e007" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define ALL_EA_BASES</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment">EA_BASES_16BIT      \
+  EA_BASES_32BIT      \
+  EA_BASES_64BIT
+</pre></div>
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00271">271</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00467">translateRMMemory()</a>, and <a class="el" href="X86Disassembler_8cpp_source.html#l00429">translateRMRegister()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8f4c518929a964ae54a9d42780670cd2"></a><!-- doxytag: member="X86DisassemblerDecoder.h::ALL_REGS" ref="a8f4c518929a964ae54a9d42780670cd2" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define ALL_REGS</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment">REGS_8BIT           \
+  REGS_16BIT          \
+  REGS_32BIT          \
+  REGS_64BIT          \
+  REGS_MMX            \
+  REGS_XMM            \
+  REGS_YMM            \
+  REGS_SEGMENT        \
+  REGS_DEBUG          \
+  REGS_CONTROL        \
+  ENTRY(RIP)
+</pre></div>
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00280">280</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00165">translateRegister()</a>, <a class="el" href="X86Disassembler_8cpp_source.html#l00467">translateRMMemory()</a>, and <a class="el" href="X86Disassembler_8cpp_source.html#l00429">translateRMRegister()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a967004f254ec4b0e36dca9b2db27f139"></a><!-- doxytag: member="X86DisassemblerDecoder.h::ALL_SIB_BASES" ref="a967004f254ec4b0e36dca9b2db27f139" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define ALL_SIB_BASES</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment">REGS_32BIT          \
+  REGS_64BIT
+</pre></div>
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00276">276</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00467">translateRMMemory()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a439f21b8d5ea58ea5fe17d11d1547986"></a><!-- doxytag: member="X86DisassemblerDecoder.h::baseFromSIB" ref="a439f21b8d5ea58ea5fe17d11d1547986" args="(sib)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define baseFromSIB</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">sib</td><td>)</td>
+          <td>   ((sib) & 0x7)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00042">42</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00923">readSIB()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af112ae874f4cca98ba15a30f5743e5e1"></a><!-- doxytag: member="X86DisassemblerDecoder.h::bFromREX" ref="af112ae874f4cca98ba15a30f5743e5e1" args="(rex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define bFromREX</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">rex</td><td>)</td>
+          <td>   ((rex) & 0x1)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00046">46</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l01066">readModRM()</a>, <a class="el" href="X86DisassemblerDecoder_8c_source.html#l01362">readOpcodeRegister()</a>, and <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00923">readSIB()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aabfc6f7a66e0c44fd2145dddeaa88497"></a><!-- doxytag: member="X86DisassemblerDecoder.h::bFromVEX2of3" ref="aabfc6f7a66e0c44fd2145dddeaa88497" args="(vex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define bFromVEX2of3</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">vex</td><td>)</td>
+          <td>   (((~(vex)) & 0x20) >> 5)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00050">50</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00303">readPrefixes()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a94a57a6eee386883e5e59e016eace859"></a><!-- doxytag: member="X86DisassemblerDecoder.h::EA_BASES_16BIT" ref="a94a57a6eee386883e5e59e016eace859" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define EA_BASES_16BIT</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="MCSectionMachO_8cpp.html#ac87f60246b2a01df58ca032da8463a14">ENTRY</a>(<a class="code" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7a054eabdfa18b90440948ed7de90566f6">BX_SI</a>)          \
+  ENTRY(<a class="code" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7a479de3ea37ad5b24dd2965b879747f6b">BX_DI</a>)          \
+  ENTRY(<a class="code" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7a9ab738e845db4698317ac000ef40e1fa">BP_SI</a>)          \
+  ENTRY(<a class="code" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7a08bf612dd15d4704289288f0e2467158">BP_DI</a>)          \
+  ENTRY(SI)             \
+  ENTRY(DI)             \
+  ENTRY(BP)             \
+  ENTRY(BX)             \
+  ENTRY(R8W)            \
+  ENTRY(R9W)            \
+  ENTRY(R10W)           \
+  ENTRY(R11W)           \
+  ENTRY(R12W)           \
+  ENTRY(R13W)           \
+  ENTRY(R14W)           \
+  ENTRY(R15W)
+</pre></div>
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00088">88</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa49626340dd008810da4c2f48358f4e5"></a><!-- doxytag: member="X86DisassemblerDecoder.h::EA_BASES_32BIT" ref="aa49626340dd008810da4c2f48358f4e5" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define EA_BASES_32BIT</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="MCSectionMachO_8cpp.html#ac87f60246b2a01df58ca032da8463a14">ENTRY</a>(<a class="code" href="namespacellvm_1_1N86.html#a7b1b2d8d6957fd1423bd39b8ccfd60b1a488c3a2a57ed8f23f0c48d8b40348af0">EAX</a>)            \
+  ENTRY(<a class="code" href="namespacellvm_1_1N86.html#a7b1b2d8d6957fd1423bd39b8ccfd60b1a667b758702693d9dfb46e55025fc559d">ECX</a>)            \
+  ENTRY(<a class="code" href="namespacellvm_1_1N86.html#a7b1b2d8d6957fd1423bd39b8ccfd60b1af870f9ec8a932e6d114847c22e7e9121">EDX</a>)            \
+  ENTRY(<a class="code" href="namespacellvm_1_1N86.html#a7b1b2d8d6957fd1423bd39b8ccfd60b1a3037fe2787fbbc55d78cbf8ba4768dc8">EBX</a>)            \
+  ENTRY(<a class="code" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7ac3848eebb47273fc0d103aa6e8f2b792">sib</a>)            \
+  ENTRY(<a class="code" href="namespacellvm_1_1N86.html#a7b1b2d8d6957fd1423bd39b8ccfd60b1a85b6ab9236a61c8ddb3dd0928a8795c6">EBP</a>)            \
+  ENTRY(<a class="code" href="namespacellvm_1_1N86.html#a7b1b2d8d6957fd1423bd39b8ccfd60b1a284bf8e8d0ea2e707e824d67dc5c398f">ESI</a>)            \
+  ENTRY(<a class="code" href="namespacellvm_1_1N86.html#a7b1b2d8d6957fd1423bd39b8ccfd60b1a90cd412049931c87618e68595357afb8">EDI</a>)            \
+  ENTRY(R8D)            \
+  ENTRY(R9D)            \
+  ENTRY(R10D)           \
+  ENTRY(R11D)           \
+  ENTRY(R12D)           \
+  ENTRY(R13D)           \
+  ENTRY(R14D)           \
+  ENTRY(R15D)
+</pre></div>
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00124">124</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00467">translateRMMemory()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a67e6e1688bcff4c9ea17a36f5cd8b8b0"></a><!-- doxytag: member="X86DisassemblerDecoder.h::EA_BASES_64BIT" ref="a67e6e1688bcff4c9ea17a36f5cd8b8b0" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define EA_BASES_64BIT</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="MCSectionMachO_8cpp.html#ac87f60246b2a01df58ca032da8463a14">ENTRY</a>(RAX)            \
+  ENTRY(RCX)            \
+  ENTRY(RDX)            \
+  ENTRY(RBX)            \
+  ENTRY(<a class="code" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7a3988fbb34b7d4089448cf3bf2c2e21d2">sib64</a>)          \
+  ENTRY(RBP)            \
+  ENTRY(RSI)            \
+  ENTRY(RDI)            \
+  ENTRY(R8)             \
+  ENTRY(R9)             \
+  ENTRY(R10)            \
+  ENTRY(R11)            \
+  ENTRY(R12)            \
+  ENTRY(R13)            \
+  ENTRY(R14)            \
+  ENTRY(R15)
+</pre></div>
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00160">160</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00467">translateRMMemory()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a168a41dfc8e956c6180862aeca885db1"></a><!-- doxytag: member="X86DisassemblerDecoder.h::ENTRY" ref="a168a41dfc8e956c6180862aeca885db1" args="(x)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define ENTRY</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">x</td><td>)</td>
+          <td>   EA_BASE_##x,</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00352">352</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a168a41dfc8e956c6180862aeca885db1"></a><!-- doxytag: member="X86DisassemblerDecoder.h::ENTRY" ref="a168a41dfc8e956c6180862aeca885db1" args="(x)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define ENTRY</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">x</td><td>)</td>
+          <td>   EA_REG_##x,</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00352">352</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a168a41dfc8e956c6180862aeca885db1"></a><!-- doxytag: member="X86DisassemblerDecoder.h::ENTRY" ref="a168a41dfc8e956c6180862aeca885db1" args="(x)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define ENTRY</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">x</td><td>)</td>
+          <td>   SIB_INDEX_##x,</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00352">352</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a168a41dfc8e956c6180862aeca885db1"></a><!-- doxytag: member="X86DisassemblerDecoder.h::ENTRY" ref="a168a41dfc8e956c6180862aeca885db1" args="(x)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define ENTRY</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">x</td><td>)</td>
+          <td>   SIB_BASE_##x,</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00352">352</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a168a41dfc8e956c6180862aeca885db1"></a><!-- doxytag: member="X86DisassemblerDecoder.h::ENTRY" ref="a168a41dfc8e956c6180862aeca885db1" args="(x)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define ENTRY</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">x</td><td>)</td>
+          <td>   MODRM_REG_##x,</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00352">352</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adc11bcb515676078c7c25441c03bddbc"></a><!-- doxytag: member="X86DisassemblerDecoder.h::indexFromSIB" ref="adc11bcb515676078c7c25441c03bddbc" args="(sib)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define indexFromSIB</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">sib</td><td>)</td>
+          <td>   (((sib) & 0x38) >> 3)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00041">41</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00923">readSIB()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8b4dd6c5456bcfcdc40f74720afa8b73"></a><!-- doxytag: member="X86DisassemblerDecoder.h::INSTRUCTION_IDS" ref="a8b4dd6c5456bcfcdc40f74720afa8b73" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define INSTRUCTION_IDS   uint16_t instructionIDs;</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00026">26</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa761f2ad48a0e6921c32c7ccf3d6f406"></a><!-- doxytag: member="X86DisassemblerDecoder.h::INSTRUCTION_SPECIFIER_FIELDS" ref="aa761f2ad48a0e6921c32c7ccf3d6f406" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define INSTRUCTION_SPECIFIER_FIELDS   uint16_t operands;</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00023">23</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6886436df5f38bbed7d036a5d8cb44bf"></a><!-- doxytag: member="X86DisassemblerDecoder.h::lFromVEX2of2" ref="a6886436df5f38bbed7d036a5d8cb44bf" args="(vex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define lFromVEX2of2</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">vex</td><td>)</td>
+          <td>   (((vex) & 0x4) >> 2)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00059">59</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00726">getID()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abf2fe87228fa8c1419f2a5f86baaa597"></a><!-- doxytag: member="X86DisassemblerDecoder.h::lFromVEX3of3" ref="abf2fe87228fa8c1419f2a5f86baaa597" args="(vex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define lFromVEX3of3</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">vex</td><td>)</td>
+          <td>   (((vex) & 0x4) >> 2)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00054">54</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00726">getID()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a30e003e4461758b6dba2c70f339ed6c3"></a><!-- doxytag: member="X86DisassemblerDecoder.h::mmmmmFromVEX2of3" ref="a30e003e4461758b6dba2c70f339ed6c3" args="(vex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define mmmmmFromVEX2of3</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">vex</td><td>)</td>
+          <td>   ((vex) & 0x1f)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00051">51</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00540">readOpcode()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4bce531c2ed18d569a316029616e82f0"></a><!-- doxytag: member="X86DisassemblerDecoder.h::modFromModRM" ref="a4bce531c2ed18d569a316029616e82f0" args="(modRM)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define modFromModRM</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">modRM</td><td>)</td>
+          <td>   (((modRM) & 0xc0) >> 6)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00037">37</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00100">decode()</a>, <a class="el" href="X86DisassemblerDecoder_8c_source.html#l01066">readModRM()</a>, and <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00923">readSIB()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adba38d038bb20114ef792961068aebd9"></a><!-- doxytag: member="X86DisassemblerDecoder.h::ppFromVEX2of2" ref="adba38d038bb20114ef792961068aebd9" args="(vex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define ppFromVEX2of2</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">vex</td><td>)</td>
+          <td>   ((vex) & 0x3)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00060">60</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00726">getID()</a>, and <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00303">readPrefixes()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac85472ee64d389babbd2c32deef16d89"></a><!-- doxytag: member="X86DisassemblerDecoder.h::ppFromVEX3of3" ref="ac85472ee64d389babbd2c32deef16d89" args="(vex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define ppFromVEX3of3</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">vex</td><td>)</td>
+          <td>   ((vex) & 0x3)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00055">55</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00726">getID()</a>, and <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00303">readPrefixes()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8386ddf05ce05f470ca10679a78973bd"></a><!-- doxytag: member="X86DisassemblerDecoder.h::regFromModRM" ref="a8386ddf05ce05f470ca10679a78973bd" args="(modRM)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define regFromModRM</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">modRM</td><td>)</td>
+          <td>   (((modRM) & 0x38) >> 3)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00038">38</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l01066">readModRM()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9007c428c7b7ffd0ca765cb41c2e002d"></a><!-- doxytag: member="X86DisassemblerDecoder.h::REGS_16BIT" ref="a9007c428c7b7ffd0ca765cb41c2e002d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REGS_16BIT</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="MCSectionMachO_8cpp.html#ac87f60246b2a01df58ca032da8463a14">ENTRY</a>(AX)           \
+  ENTRY(CX)           \
+  ENTRY(DX)           \
+  ENTRY(BX)           \
+  ENTRY(SP)           \
+  ENTRY(BP)           \
+  ENTRY(SI)           \
+  ENTRY(DI)           \
+  ENTRY(R8W)          \
+  ENTRY(R9W)          \
+  ENTRY(R10W)         \
+  ENTRY(R11W)         \
+  ENTRY(R12W)         \
+  ENTRY(R13W)         \
+  ENTRY(R14W)         \
+  ENTRY(R15W)
+</pre></div>
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00106">106</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4ad23de5ab07419bd9fadd58ca615585"></a><!-- doxytag: member="X86DisassemblerDecoder.h::REGS_32BIT" ref="a4ad23de5ab07419bd9fadd58ca615585" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REGS_32BIT</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="MCSectionMachO_8cpp.html#ac87f60246b2a01df58ca032da8463a14">ENTRY</a>(<a class="code" href="namespacellvm_1_1N86.html#a7b1b2d8d6957fd1423bd39b8ccfd60b1a488c3a2a57ed8f23f0c48d8b40348af0">EAX</a>)        \
+  ENTRY(<a class="code" href="namespacellvm_1_1N86.html#a7b1b2d8d6957fd1423bd39b8ccfd60b1a667b758702693d9dfb46e55025fc559d">ECX</a>)        \
+  ENTRY(<a class="code" href="namespacellvm_1_1N86.html#a7b1b2d8d6957fd1423bd39b8ccfd60b1af870f9ec8a932e6d114847c22e7e9121">EDX</a>)        \
+  ENTRY(<a class="code" href="namespacellvm_1_1N86.html#a7b1b2d8d6957fd1423bd39b8ccfd60b1a3037fe2787fbbc55d78cbf8ba4768dc8">EBX</a>)        \
+  ENTRY(<a class="code" href="namespacellvm_1_1N86.html#a7b1b2d8d6957fd1423bd39b8ccfd60b1a303dfe7256beaf60eaaa93d1c418965b">ESP</a>)        \
+  ENTRY(<a class="code" href="namespacellvm_1_1N86.html#a7b1b2d8d6957fd1423bd39b8ccfd60b1a85b6ab9236a61c8ddb3dd0928a8795c6">EBP</a>)        \
+  ENTRY(<a class="code" href="namespacellvm_1_1N86.html#a7b1b2d8d6957fd1423bd39b8ccfd60b1a284bf8e8d0ea2e707e824d67dc5c398f">ESI</a>)        \
+  ENTRY(<a class="code" href="namespacellvm_1_1N86.html#a7b1b2d8d6957fd1423bd39b8ccfd60b1a90cd412049931c87618e68595357afb8">EDI</a>)        \
+  ENTRY(R8D)        \
+  ENTRY(R9D)        \
+  ENTRY(R10D)       \
+  ENTRY(R11D)       \
+  ENTRY(R12D)       \
+  ENTRY(R13D)       \
+  ENTRY(R14D)       \
+  ENTRY(R15D)
+</pre></div>
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00142">142</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a98b6730ebd5ca012ee84ca5ba1582608"></a><!-- doxytag: member="X86DisassemblerDecoder.h::REGS_64BIT" ref="a98b6730ebd5ca012ee84ca5ba1582608" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REGS_64BIT</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="MCSectionMachO_8cpp.html#ac87f60246b2a01df58ca032da8463a14">ENTRY</a>(RAX)        \
+  ENTRY(RCX)        \
+  ENTRY(RDX)        \
+  ENTRY(RBX)        \
+  ENTRY(RSP)        \
+  ENTRY(RBP)        \
+  ENTRY(RSI)        \
+  ENTRY(RDI)        \
+  ENTRY(R8)         \
+  ENTRY(R9)         \
+  ENTRY(R10)        \
+  ENTRY(R11)        \
+  ENTRY(R12)        \
+  ENTRY(R13)        \
+  ENTRY(R14)        \
+  ENTRY(R15)
+</pre></div>
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00178">178</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a258c72e73a946a158cc399bf90d94ce0"></a><!-- doxytag: member="X86DisassemblerDecoder.h::REGS_8BIT" ref="a258c72e73a946a158cc399bf90d94ce0" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REGS_8BIT</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="MCSectionMachO_8cpp.html#ac87f60246b2a01df58ca032da8463a14">ENTRY</a>(<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6a8b2ef77967dee1220cc6ee5aee595e11">AL</a>)           \
+  ENTRY(CL)           \
+  ENTRY(DL)           \
+  ENTRY(<a class="code" href="namespacellvm_1_1XCoreISD.html#aef28e79e1ebefed9020708b2350b1f10adba71479b3d85460f040da54d76bd319">BL</a>)           \
+  ENTRY(AH)           \
+  ENTRY(CH)           \
+  ENTRY(DH)           \
+  ENTRY(BH)           \
+  ENTRY(R8B)          \
+  ENTRY(R9B)          \
+  ENTRY(R10B)         \
+  ENTRY(R11B)         \
+  ENTRY(R12B)         \
+  ENTRY(R13B)         \
+  ENTRY(R14B)         \
+  ENTRY(R15B)         \
+  ENTRY(SPL)          \
+  ENTRY(BPL)          \
+  ENTRY(SIL)          \
+  ENTRY(DIL)
+</pre></div>
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00066">66</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4a1acdd8e2cba2404a5dc403a385c58c"></a><!-- doxytag: member="X86DisassemblerDecoder.h::REGS_CONTROL" ref="a4a1acdd8e2cba2404a5dc403a385c58c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REGS_CONTROL</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="MCSectionMachO_8cpp.html#ac87f60246b2a01df58ca032da8463a14">ENTRY</a>(CR0)          \
+  ENTRY(CR1)          \
+  ENTRY(CR2)          \
+  ENTRY(CR3)          \
+  ENTRY(CR4)          \
+  ENTRY(CR5)          \
+  ENTRY(CR6)          \
+  ENTRY(CR7)          \
+  ENTRY(CR8)
+</pre></div>
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00260">260</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab06e6891e879fdbd81834d827cecde67"></a><!-- doxytag: member="X86DisassemblerDecoder.h::REGS_DEBUG" ref="ab06e6891e879fdbd81834d827cecde67" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REGS_DEBUG</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="MCSectionMachO_8cpp.html#ac87f60246b2a01df58ca032da8463a14">ENTRY</a>(DR0)        \
+  ENTRY(DR1)        \
+  ENTRY(DR2)        \
+  ENTRY(DR3)        \
+  ENTRY(DR4)        \
+  ENTRY(DR5)        \
+  ENTRY(DR6)        \
+  ENTRY(DR7)
+</pre></div>
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00250">250</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a71fa6e4885a38387a87080b979e926d8"></a><!-- doxytag: member="X86DisassemblerDecoder.h::REGS_MMX" ref="a71fa6e4885a38387a87080b979e926d8" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REGS_MMX</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="MCSectionMachO_8cpp.html#ac87f60246b2a01df58ca032da8463a14">ENTRY</a>(MM0)      \
+  ENTRY(MM1)      \
+  ENTRY(MM2)      \
+  ENTRY(MM3)      \
+  ENTRY(MM4)      \
+  ENTRY(MM5)      \
+  ENTRY(MM6)      \
+  ENTRY(MM7)
+</pre></div>
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00196">196</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac4d47716cec167134dff7b8a6e91ed17"></a><!-- doxytag: member="X86DisassemblerDecoder.h::REGS_SEGMENT" ref="ac4d47716cec167134dff7b8a6e91ed17" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REGS_SEGMENT</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="MCSectionMachO_8cpp.html#ac87f60246b2a01df58ca032da8463a14">ENTRY</a>(ES)          \
+  ENTRY(CS)          \
+  ENTRY(SS)          \
+  ENTRY(DS)          \
+  ENTRY(<a class="code" href="namespacellvm_1_1X86II.html#acd283bc8136a594505ec483f4a1cc933a50aa2061845b3ff4e6e2242d762c6a80">FS</a>)          \
+  ENTRY(<a class="code" href="namespacellvm_1_1X86II.html#acd283bc8136a594505ec483f4a1cc933acdc4d0fa74813b50797e25bab4febe70">GS</a>)
+</pre></div>
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00242">242</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7c194da583ffb0dd2fab50331e4cbc41"></a><!-- doxytag: member="X86DisassemblerDecoder.h::REGS_XMM" ref="a7c194da583ffb0dd2fab50331e4cbc41" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REGS_XMM</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="MCSectionMachO_8cpp.html#ac87f60246b2a01df58ca032da8463a14">ENTRY</a>(XMM0)     \
+  ENTRY(XMM1)     \
+  ENTRY(XMM2)     \
+  ENTRY(XMM3)     \
+  ENTRY(XMM4)     \
+  ENTRY(XMM5)     \
+  ENTRY(XMM6)     \
+  ENTRY(XMM7)     \
+  ENTRY(XMM8)     \
+  ENTRY(XMM9)     \
+  ENTRY(XMM10)    \
+  ENTRY(XMM11)    \
+  ENTRY(XMM12)    \
+  ENTRY(XMM13)    \
+  ENTRY(XMM14)    \
+  ENTRY(XMM15)
+</pre></div>
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00206">206</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00467">translateRMMemory()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6fc6928518e9a8c348d985bec97d382e"></a><!-- doxytag: member="X86DisassemblerDecoder.h::REGS_YMM" ref="a6fc6928518e9a8c348d985bec97d382e" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define REGS_YMM</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="MCSectionMachO_8cpp.html#ac87f60246b2a01df58ca032da8463a14">ENTRY</a>(YMM0)     \
+  ENTRY(YMM1)     \
+  ENTRY(YMM2)     \
+  ENTRY(YMM3)     \
+  ENTRY(YMM4)     \
+  ENTRY(YMM5)     \
+  ENTRY(YMM6)     \
+  ENTRY(YMM7)     \
+  ENTRY(YMM8)     \
+  ENTRY(YMM9)     \
+  ENTRY(YMM10)    \
+  ENTRY(YMM11)    \
+  ENTRY(YMM12)    \
+  ENTRY(YMM13)    \
+  ENTRY(YMM14)    \
+  ENTRY(YMM15)
+</pre></div>
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00224">224</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00467">translateRMMemory()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1c2e931225f964b581ab025f86a39872"></a><!-- doxytag: member="X86DisassemblerDecoder.h::rFromREX" ref="a1c2e931225f964b581ab025f86a39872" args="(rex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define rFromREX</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">rex</td><td>)</td>
+          <td>   (((rex) & 0x4) >> 2)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00044">44</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l01066">readModRM()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4543a64655e2abfbf25bc206c9219150"></a><!-- doxytag: member="X86DisassemblerDecoder.h::rFromVEX2of2" ref="a4543a64655e2abfbf25bc206c9219150" args="(vex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define rFromVEX2of2</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">vex</td><td>)</td>
+          <td>   (((~(vex)) & 0x80) >> 7)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00057">57</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00303">readPrefixes()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0eb17652126644a237528e0153ee96b1"></a><!-- doxytag: member="X86DisassemblerDecoder.h::rFromVEX2of3" ref="a0eb17652126644a237528e0153ee96b1" args="(vex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define rFromVEX2of3</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">vex</td><td>)</td>
+          <td>   (((~(vex)) & 0x80) >> 7)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00048">48</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00303">readPrefixes()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a384089e78b51b1b5773e879ed1d4e672"></a><!-- doxytag: member="X86DisassemblerDecoder.h::rmFromModRM" ref="a384089e78b51b1b5773e879ed1d4e672" args="(modRM)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define rmFromModRM</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">modRM</td><td>)</td>
+          <td>   ((modRM) & 0x7)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00039">39</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l01066">readModRM()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7b5f49eafdca9d6be0464fccb94a4f33"></a><!-- doxytag: member="X86DisassemblerDecoder.h::scaleFromSIB" ref="a7b5f49eafdca9d6be0464fccb94a4f33" args="(sib)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define scaleFromSIB</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">sib</td><td>)</td>
+          <td>   (((sib) & 0xc0) >> 6)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00040">40</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00923">readSIB()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8dc9745657ce1382ca803e1e3e62a049"></a><!-- doxytag: member="X86DisassemblerDecoder.h::vvvvFromVEX2of2" ref="a8dc9745657ce1382ca803e1e3e62a049" args="(vex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define vvvvFromVEX2of2</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">vex</td><td>)</td>
+          <td>   (((~(vex)) & 0x78) >> 3)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00058">58</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l01466">readVVVV()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9b5608175fb4bc57fd5e6bcd7f5efed2"></a><!-- doxytag: member="X86DisassemblerDecoder.h::vvvvFromVEX3of3" ref="a9b5608175fb4bc57fd5e6bcd7f5efed2" args="(vex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define vvvvFromVEX3of3</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">vex</td><td>)</td>
+          <td>   (((~(vex)) & 0x78) >> 3)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00053">53</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l01466">readVVVV()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a567f29a688d316f9d1e149753d4d77da"></a><!-- doxytag: member="X86DisassemblerDecoder.h::wFromREX" ref="a567f29a688d316f9d1e149753d4d77da" args="(rex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define wFromREX</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">rex</td><td>)</td>
+          <td>   (((rex) & 0x8) >> 3)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00043">43</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00303">readPrefixes()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab11339ee1e5b8aaa4a706693c51041ae"></a><!-- doxytag: member="X86DisassemblerDecoder.h::wFromVEX3of3" ref="ab11339ee1e5b8aaa4a706693c51041ae" args="(vex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define wFromVEX3of3</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">vex</td><td>)</td>
+          <td>   (((vex) & 0x80) >> 7)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00052">52</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00303">readPrefixes()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af00d764f04a2d7143d9de59ea213f148"></a><!-- doxytag: member="X86DisassemblerDecoder.h::xFromREX" ref="af00d764f04a2d7143d9de59ea213f148" args="(rex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define xFromREX</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">rex</td><td>)</td>
+          <td>   (((rex) & 0x2) >> 1)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00045">45</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00923">readSIB()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2702d55c4b2a40989bd2b9cc8a71596e"></a><!-- doxytag: member="X86DisassemblerDecoder.h::xFromVEX2of3" ref="a2702d55c4b2a40989bd2b9cc8a71596e" args="(vex)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define xFromVEX2of3</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">vex</td><td>)</td>
+          <td>   (((~(vex)) & 0x40) >> 6)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00049">49</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00303">readPrefixes()</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Typedef Documentation</h2>
+<a class="anchor" id="ad2f8ed01c1733d4eab0932d970abaa4c"></a><!-- doxytag: member="X86DisassemblerDecoder.h::BOOL" ref="ad2f8ed01c1733d4eab0932d970abaa4c" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef uint8_t <a class="el" href="X86DisassemblerDecoder_8h.html#ad2f8ed01c1733d4eab0932d970abaa4c">BOOL</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00393">393</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a86138fe6180e8b01ffba8011e948fca9"></a><!-- doxytag: member="X86DisassemblerDecoder.h::byteReader_t" ref="a86138fe6180e8b01ffba8011e948fca9" args=")(const void *arg, uint8_t *byte, uint64_t address)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef int(* <a class="el" href="X86DisassemblerDecoder_8h.html#a86138fe6180e8b01ffba8011e948fca9">byteReader_t</a>)(const void *arg, uint8_t *byte, uint64_t address)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00406">406</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aeacf2f01401e8f724683d399ff8eb43f"></a><!-- doxytag: member="X86DisassemblerDecoder.h::dlog_t" ref="aeacf2f01401e8f724683d399ff8eb43f" args=")(void *arg, const char *log)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef void(* <a class="el" href="X86DisassemblerDecoder_8h.html#aeacf2f01401e8f724683d399ff8eb43f">dlog_t</a>)(void *arg, const <a class="el" href="classchar.html">char</a> *log)</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00416">416</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Enumeration Type Documentation</h2>
+<a class="anchor" id="afc689603f1848ec33ddbac69b8aa1e95"></a><!-- doxytag: member="X86DisassemblerDecoder.h::EABase" ref="afc689603f1848ec33ddbac69b8aa1e95" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="X86DisassemblerDecoder_8h.html#afc689603f1848ec33ddbac69b8aa1e95">EABase</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="afc689603f1848ec33ddbac69b8aa1e95a546e3bf7a78bafabd50fbf842b0e87c5"></a><!-- doxytag: member="EA_BASE_NONE" ref="afc689603f1848ec33ddbac69b8aa1e95a546e3bf7a78bafabd50fbf842b0e87c5" args="" -->EA_BASE_NONE</em> </td><td>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00299">299</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a86b3ea534df3a598db89d7d5ff581112"></a><!-- doxytag: member="X86DisassemblerDecoder.h::EADisplacement" ref="a86b3ea534df3a598db89d7d5ff581112" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="X86DisassemblerDecoder_8h.html#a86b3ea534df3a598db89d7d5ff581112">EADisplacement</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="a86b3ea534df3a598db89d7d5ff581112a377f7990be2aed8d7547befd58ba4bfc"></a><!-- doxytag: member="EA_DISP_NONE" ref="a86b3ea534df3a598db89d7d5ff581112a377f7990be2aed8d7547befd58ba4bfc" args="" -->EA_DISP_NONE</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a86b3ea534df3a598db89d7d5ff581112a8c6d89c83a80d627b41123cb4efd3959"></a><!-- doxytag: member="EA_DISP_8" ref="a86b3ea534df3a598db89d7d5ff581112a8c6d89c83a80d627b41123cb4efd3959" args="" -->EA_DISP_8</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a86b3ea534df3a598db89d7d5ff581112a35eccd80af0540628e1fc528312392ac"></a><!-- doxytag: member="EA_DISP_16" ref="a86b3ea534df3a598db89d7d5ff581112a35eccd80af0540628e1fc528312392ac" args="" -->EA_DISP_16</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a86b3ea534df3a598db89d7d5ff581112a40fd53a41ecdbdf2d79b963fc45aacf8"></a><!-- doxytag: member="EA_DISP_32" ref="a86b3ea534df3a598db89d7d5ff581112a40fd53a41ecdbdf2d79b963fc45aacf8" args="" -->EA_DISP_32</em> </td><td>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00341">341</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a546839a5c4bcf9f9450967155f48de41"></a><!-- doxytag: member="X86DisassemblerDecoder.h::Reg" ref="a546839a5c4bcf9f9450967155f48de41" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00351">351</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a678cc792a7ece4943c203fd18e57ad46"></a><!-- doxytag: member="X86DisassemblerDecoder.h::SegmentOverride" ref="a678cc792a7ece4943c203fd18e57ad46" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="X86DisassemblerDecoder_8h.html#a678cc792a7ece4943c203fd18e57ad46">SegmentOverride</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="a678cc792a7ece4943c203fd18e57ad46a240f31f7025bec995d4d07079d214dd2"></a><!-- doxytag: member="SEG_OVERRIDE_NONE" ref="a678cc792a7ece4943c203fd18e57ad46a240f31f7025bec995d4d07079d214dd2" args="" -->SEG_OVERRIDE_NONE</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a678cc792a7ece4943c203fd18e57ad46a7ae1d102e8d3480f4ea83cc393fa2c76"></a><!-- doxytag: member="SEG_OVERRIDE_CS" ref="a678cc792a7ece4943c203fd18e57ad46a7ae1d102e8d3480f4ea83cc393fa2c76" args="" -->SEG_OVERRIDE_CS</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a678cc792a7ece4943c203fd18e57ad46aa625e0d1316f604a7d38d4ca46a54ceb"></a><!-- doxytag: member="SEG_OVERRIDE_SS" ref="a678cc792a7ece4943c203fd18e57ad46aa625e0d1316f604a7d38d4ca46a54ceb" args="" -->SEG_OVERRIDE_SS</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a678cc792a7ece4943c203fd18e57ad46ad4367053bdbbe0a470b5459337ce77b2"></a><!-- doxytag: member="SEG_OVERRIDE_DS" ref="a678cc792a7ece4943c203fd18e57ad46ad4367053bdbbe0a470b5459337ce77b2" args="" -->SEG_OVERRIDE_DS</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a678cc792a7ece4943c203fd18e57ad46a72c5f3c25f3f4d5e1f9fb70f122103b2"></a><!-- doxytag: member="SEG_OVERRIDE_ES" ref="a678cc792a7ece4943c203fd18e57ad46a72c5f3c25f3f4d5e1f9fb70f122103b2" args="" -->SEG_OVERRIDE_ES</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a678cc792a7ece4943c203fd18e57ad46ac748043f7a0a000924982b9d1864e4fe"></a><!-- doxytag: member="SEG_OVERRIDE_FS" ref="a678cc792a7ece4943c203fd18e57ad46ac748043f7a0a000924982b9d1864e4fe" args="" -->SEG_OVERRIDE_FS</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a678cc792a7ece4943c203fd18e57ad46a975c840f7f5d04685ac87840b9f66429"></a><!-- doxytag: member="SEG_OVERRIDE_GS" ref="a678cc792a7ece4943c203fd18e57ad46a975c840f7f5d04685ac87840b9f66429" args="" -->SEG_OVERRIDE_GS</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a678cc792a7ece4943c203fd18e57ad46a2455fce77c2692279ca526d892cbba94"></a><!-- doxytag: member="SEG_OVERRIDE_max" ref="a678cc792a7ece4943c203fd18e57ad46a2455fce77c2692279ca526d892cbba94" args="" -->SEG_OVERRIDE_max</em> </td><td>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00361">361</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7cb9f08e12fcda158bbe0cee76ef61f7"></a><!-- doxytag: member="X86DisassemblerDecoder.h::SIBBase" ref="a7cb9f08e12fcda158bbe0cee76ef61f7" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="X86DisassemblerDecoder_8h.html#a7cb9f08e12fcda158bbe0cee76ef61f7">SIBBase</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="a7cb9f08e12fcda158bbe0cee76ef61f7a28642d84aadee3992f08c36ca08b16a5"></a><!-- doxytag: member="SIB_BASE_NONE" ref="a7cb9f08e12fcda158bbe0cee76ef61f7a28642d84aadee3992f08c36ca08b16a5" args="" -->SIB_BASE_NONE</em> </td><td>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00329">329</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2af8cf971611d096b00b34eece806adb"></a><!-- doxytag: member="X86DisassemblerDecoder.h::SIBIndex" ref="a2af8cf971611d096b00b34eece806adb" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="X86DisassemblerDecoder_8h.html#a2af8cf971611d096b00b34eece806adb">SIBIndex</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="a2af8cf971611d096b00b34eece806adba3d035927a65ed81a8869a3f64f669bd0"></a><!-- doxytag: member="SIB_INDEX_NONE" ref="a2af8cf971611d096b00b34eece806adba3d035927a65ed81a8869a3f64f669bd0" args="" -->SIB_INDEX_NONE</em> </td><td>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00316">316</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad686b7233351c632a5403bb8880b2879"></a><!-- doxytag: member="X86DisassemblerDecoder.h::VEXLeadingOpcodeByte" ref="ad686b7233351c632a5403bb8880b2879" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="X86DisassemblerDecoder_8h.html#ad686b7233351c632a5403bb8880b2879">VEXLeadingOpcodeByte</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="ad686b7233351c632a5403bb8880b2879a9a40a4486721b709051aa03918e50241"></a><!-- doxytag: member="VEX_LOB_0F" ref="ad686b7233351c632a5403bb8880b2879a9a40a4486721b709051aa03918e50241" args="" -->VEX_LOB_0F</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="ad686b7233351c632a5403bb8880b2879af71a9e484b7632521ba492c4027978b4"></a><!-- doxytag: member="VEX_LOB_0F38" ref="ad686b7233351c632a5403bb8880b2879af71a9e484b7632521ba492c4027978b4" args="" -->VEX_LOB_0F38</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="ad686b7233351c632a5403bb8880b2879a18e6eac10bc946b39abd1f7baa070f70"></a><!-- doxytag: member="VEX_LOB_0F3A" ref="ad686b7233351c632a5403bb8880b2879a18e6eac10bc946b39abd1f7baa070f70" args="" -->VEX_LOB_0F3A</em> </td><td>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00376">376</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a27161ac001e2359fe24d92fc981e35a8"></a><!-- doxytag: member="X86DisassemblerDecoder.h::VEXPrefixCode" ref="a27161ac001e2359fe24d92fc981e35a8" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="X86DisassemblerDecoder_8h.html#a27161ac001e2359fe24d92fc981e35a8">VEXPrefixCode</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="a27161ac001e2359fe24d92fc981e35a8a482ce8f028fb750cbc2b072f613685b2"></a><!-- doxytag: member="VEX_PREFIX_NONE" ref="a27161ac001e2359fe24d92fc981e35a8a482ce8f028fb750cbc2b072f613685b2" args="" -->VEX_PREFIX_NONE</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a27161ac001e2359fe24d92fc981e35a8a5f3db606eb177e16ca6cfcb1f5ae0e65"></a><!-- doxytag: member="VEX_PREFIX_66" ref="a27161ac001e2359fe24d92fc981e35a8a5f3db606eb177e16ca6cfcb1f5ae0e65" args="" -->VEX_PREFIX_66</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a27161ac001e2359fe24d92fc981e35a8a8a536cd1595533eb4dba530aa5571f29"></a><!-- doxytag: member="VEX_PREFIX_F3" ref="a27161ac001e2359fe24d92fc981e35a8a8a536cd1595533eb4dba530aa5571f29" args="" -->VEX_PREFIX_F3</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a27161ac001e2359fe24d92fc981e35a8a901c8f1034e86a24a18818ebb74d7733"></a><!-- doxytag: member="VEX_PREFIX_F2" ref="a27161ac001e2359fe24d92fc981e35a8a901c8f1034e86a24a18818ebb74d7733" args="" -->VEX_PREFIX_F2</em> </td><td>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00386">386</a> of file <a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a6c71d4e276f8fe7ce11b7a8456821d7c"></a><!-- doxytag: member="X86DisassemblerDecoder.h::decodeInstruction" ref="a6c71d4e276f8fe7ce11b7a8456821d7c" args="(struct InternalInstruction *insn, byteReader_t reader, const void *readerArg, dlog_t logger, void *loggerArg, const void *miiArg, uint64_t startLoc, DisassemblerMode mode)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int decodeInstruction </td>
+          <td>(</td>
+          <td class="paramtype">struct <a class="el" href="structInternalInstruction.html">InternalInstruction</a> * </td>
+          <td class="paramname"><em>insn</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="X86DisassemblerDecoder_8h.html#a86138fe6180e8b01ffba8011e948fca9">byteReader_t</a> </td>
+          <td class="paramname"><em>reader</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void * </td>
+          <td class="paramname"><em>readerArg</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="X86DisassemblerDecoder_8h.html#aeacf2f01401e8f724683d399ff8eb43f">dlog_t</a> </td>
+          <td class="paramname"><em>logger</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"><em>loggerArg</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void * </td>
+          <td class="paramname"><em>miiArg</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint64_t </td>
+          <td class="paramname"><em>startLoc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="X86DisassemblerDecoderCommon_8h.html#a549ce06ad85d0726a93b2768ae7c7da7">DisassemblerMode</a> </td>
+          <td class="paramname"><em>mode</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86DisassemblerDecoder_8c_source.html#l01626">1626</a> of file <a class="el" href="X86DisassemblerDecoder_8c_source.html">X86DisassemblerDecoder.c</a>.</p>
+
+<p>References <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00239">dbgprintf()</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00430">InternalInstruction::dlog</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00432">InternalInstruction::dlogArg</a>, <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00726">getID()</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00488">InternalInstruction::instructionID</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00441">InternalInstruction::length</a>, <a class="el" href="X86Disassembler_8cpp_source.html#l00109">logger()</a>, <a class="el" href="TargetLibraryInfo_8h_source.html#l00222">llvm::LibFunc::memset</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00437">InternalInstruction::mode</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00514">InternalInstruction::numImmediatesConsumed</a>, <a class="el" href="X86DisassemblerDe
 coder_8h_source.html#l00543">InternalInstruction::operands</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00423">InternalInstruction::reader</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00425">InternalInstruction::readerArg</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00427">InternalInstruction::readerCursor</a>, <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00540">readOpcode()</a>, <a class="el" href="X86DisassemblerDecoder_8c_source.html#l01489">readOperands()</a>, <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00303">readPrefixes()</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00490">InternalInstruction::spec</a>, and <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00439">InternalInstruction::startLocation</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00122">llvm::X86Disassembler::X86GenericDisassembler::getInstruction()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1982ca18fc4821e63790ae1fa8e4cabe"></a><!-- doxytag: member="X86DisassemblerDecoder.h::x86DisassemblerDebug" ref="a1982ca18fc4821e63790ae1fa8e4cabe" args="(const char *file, unsigned line, const char *s)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void x86DisassemblerDebug </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classchar.html">char</a> * </td>
+          <td class="paramname"><em>file</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> </td>
+          <td class="paramname"><em>line</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classchar.html">char</a> * </td>
+          <td class="paramname"><em>s</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00041">41</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+<p>References <a class="el" href="Debug_8cpp_source.html#l00101">llvm::dbgs()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab989dba004fc91ca37606095e0a98b54"></a><!-- doxytag: member="X86DisassemblerDecoder.h::x86DisassemblerGetInstrName" ref="ab989dba004fc91ca37606095e0a98b54" args="(unsigned Opcode, const void *mii)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" href="classchar.html">char</a>* x86DisassemblerGetInstrName </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> </td>
+          <td class="paramname"><em>Opcode</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void * </td>
+          <td class="paramname"><em>mii</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00047">47</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+<p>References <a class="el" href="MCInstrInfo_8h_source.html#l00054">llvm::MCInstrInfo::getName()</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00726">getID()</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:58 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/X86Disassembler_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86Disassembler_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86Disassembler_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86Disassembler_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,1073 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: X86Disassembler.cpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_ae72ec760f5f4d3869211e663a0eb354.html">X86</a>      </li>
+      <li class="navelem"><a class="el" href="dir_f8d2defef88098d0bc5331515603729f.html">Disassembler</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#namespaces">Namespaces</a> |
+<a href="#define-members">Defines</a> |
+<a href="#enum-members">Enumerations</a> |
+<a href="#func-members">Functions</a> |
+<a href="#var-members">Variables</a>  </div>
+  <div class="headertitle">
+<div class="title">X86Disassembler.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="X86Disassembler_8h_source.html">X86Disassembler.h</a>"</code><br/>
+<code>#include "<a class="el" href="X86DisassemblerDecoder_8h_source.html">X86DisassemblerDecoder.h</a>"</code><br/>
+<code>#include "<a class="el" href="EDInstInfo_8h_source.html">llvm/MC/EDInstInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCExpr_8h_source.html">llvm/MC/MCExpr.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCContext_8h_source.html">llvm/MC/MCContext.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCDisassembler_8h_source.html">llvm/MC/MCDisassembler.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCInst_8h_source.html">llvm/MC/MCInst.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCInstrInfo_8h_source.html">llvm/MC/MCInstrInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCSubtargetInfo_8h_source.html">llvm/MC/MCSubtargetInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="Debug_8h_source.html">llvm/Support/Debug.h</a>"</code><br/>
+<code>#include "<a class="el" href="MemoryObject_8h_source.html">llvm/Support/MemoryObject.h</a>"</code><br/>
+<code>#include "<a class="el" href="TargetRegistry_8h_source.html">llvm/Support/TargetRegistry.h</a>"</code><br/>
+<code>#include "<a class="el" href="raw__ostream_8h_source.html">llvm/Support/raw_ostream.h</a>"</code><br/>
+<code>#include "X86GenRegisterInfo.inc"</code><br/>
+<code>#include "X86GenInstrInfo.inc"</code><br/>
+<code>#include "X86GenEDInfo.inc"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for X86Disassembler.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="X86Disassembler_8cpp__incl.png" border="0" usemap="#X86Disassembler_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="X86Disassembler_8cpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html">llvm</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>List of target independent CodeGen pass IDs. </p>
+<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1X86.html">llvm::X86</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Define some predicates that are used for node matching. </p>
+<br/></td></tr>
+<tr><td colspan="2"><h2><a name="define-members"></a>
+Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#a08a185753458ada847ed2d41b47ac1d1">GET_REGINFO_ENUM</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#a2433e9e503264e8ca019761dad9d06d1">GET_INSTRINFO_ENUM</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#ae0228f36529f75f692753ef96d725012">debug</a>(s)   DEBUG(x86DisassemblerDebug(__FILE__, __LINE__, s));</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#a168a41dfc8e956c6180862aeca885db1">ENTRY</a>(x)   X86::x,</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#a168a41dfc8e956c6180862aeca885db1">ENTRY</a>(x)   case EA_BASE_##x:</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#a168a41dfc8e956c6180862aeca885db1">ENTRY</a>(x)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#a168a41dfc8e956c6180862aeca885db1">ENTRY</a>(x)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#a168a41dfc8e956c6180862aeca885db1">ENTRY</a>(x)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#a168a41dfc8e956c6180862aeca885db1">ENTRY</a>(x)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#a168a41dfc8e956c6180862aeca885db1">ENTRY</a>(x)   case EA_REG_##x:</td></tr>
+<tr><td colspan="2"><h2><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <br/>
+  <a class="el" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7a054eabdfa18b90440948ed7de90566f6">llvm::X86::BX_SI</a> =  500, 
+<a class="el" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7a479de3ea37ad5b24dd2965b879747f6b">llvm::X86::BX_DI</a> =  501, 
+<a class="el" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7a9ab738e845db4698317ac000ef40e1fa">llvm::X86::BP_SI</a> =  502, 
+<a class="el" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7a08bf612dd15d4704289288f0e2467158">llvm::X86::BP_DI</a> =  503, 
+<br/>
+  <a class="el" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7ac3848eebb47273fc0d103aa6e8f2b792">llvm::X86::sib</a> =  504, 
+<a class="el" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7a3988fbb34b7d4089448cf3bf2c2e21d2">llvm::X86::sib64</a> =  505
+<br/>
+ }</td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#a1982ca18fc4821e63790ae1fa8e4cabe">x86DisassemblerDebug</a> (const <a class="el" href="classchar.html">char</a> *<a class="el" href="PathProfileInfo_8cpp.html#add64b5c8b8c45c8dabeaf9d771cc1534">file</a>, <a class="el" href="classunsigned.html">unsigned</a> line, const <a class="el" href="classchar.html">char</a> *s)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classchar.html">char</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#ab989dba004fc91ca37606095e0a98b54">x86DisassemblerGetInstrName</a> (<a class="el" href="classunsigned.html">unsigned</a> Opcode, const void *mii)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#aa7c2d86a8c8ecfb0cd3627aceac7afb6">translateInstruction</a> (<a class="el" href="classllvm_1_1MCInst.html">MCInst</a> &target, <a class="el" href="structInternalInstruction.html">InternalInstruction</a> &source, const <a class="el" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> *Dis)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#ab22d1a1edb10d251c1e06618f5b7344b">regionReader</a> (const void *arg, uint8_t *byte, uint64_t address)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#a8b039b49b0328a216cb2e7704d330873">logger</a> (void *arg, const <a class="el" href="classchar.html">char</a> *log)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#a06e3b1499180a2b92acc66f9203ac920">translateRegister</a> (<a class="el" href="classllvm_1_1MCInst.html">MCInst</a> &mcInst, <a class="el" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a> reg)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#ac63f5f7f7ea93a855351d62632358d66">tryAddingSymbolicOperand</a> (<a class="el" href="classint64__t.html">int64_t</a> <a class="el" href="classllvm_1_1Value.html">Value</a>, <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> isBranch, uint64_t Address, uint64_t Offset, uint64_t Width, <a class="el" href="classllvm_1_1MCInst.html">MCInst</a> &MI, const <a class="el" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> *Dis)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#aeac70eb217b5b7b122e05d1ed5518d9c">tryAddingPcLoadReferenceComment</a> (uint64_t Address, uint64_t <a class="el" href="classllvm_1_1Value.html">Value</a>, const void *Decoder)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#a409baefdf6be89e38deebefb129c1978">translateImmediate</a> (<a class="el" href="classllvm_1_1MCInst.html">MCInst</a> &mcInst, uint64_t immediate, const <a class="el" href="structOperandSpecifier.html">OperandSpecifier</a> &operand, <a class="el" href="structInternalInstruction.html">InternalInstruction</a> &insn, const <a class="el" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> *Dis)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#aea1e232218bf327acf353b1f07db2f86">translateRMRegister</a> (<a class="el" href="classllvm_1_1MCInst.html">MCInst</a> &mcInst, <a class="el" href="structInternalInstruction.html">InternalInstruction</a> &insn)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#ad1c30e097c62d7d189050daf0e6cbe7b">translateRMMemory</a> (<a class="el" href="classllvm_1_1MCInst.html">MCInst</a> &mcInst, <a class="el" href="structInternalInstruction.html">InternalInstruction</a> &insn, const <a class="el" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> *Dis)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#aace6b74b8ffb4a67a94c8720813f18c2">translateRM</a> (<a class="el" href="classllvm_1_1MCInst.html">MCInst</a> &mcInst, const <a class="el" href="structOperandSpecifier.html">OperandSpecifier</a> &operand, <a class="el" href="structInternalInstruction.html">InternalInstruction</a> &insn, const <a class="el" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> *Dis)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#ab39836b0e9db7069ddbd0f422dbf2a51">translateFPRegister</a> (<a class="el" href="classllvm_1_1MCInst.html">MCInst</a> &mcInst, uint8_t stackPos)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#aeb806eaaca65c1a593f5af3078798819">translateOperand</a> (<a class="el" href="classllvm_1_1MCInst.html">MCInst</a> &mcInst, const <a class="el" href="structOperandSpecifier.html">OperandSpecifier</a> &operand, <a class="el" href="structInternalInstruction.html">InternalInstruction</a> &insn, const <a class="el" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> *Dis)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#a8ee31c3aef0fbecf9e80aaeb7abbf961">createX86_32Disassembler</a> (const <a class="el" href="classllvm_1_1Target.html">Target</a> &T, const <a class="el" href="classllvm_1_1MCSubtargetInfo.html">MCSubtargetInfo</a> &STI)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#afd818f51ad50d0d4d8252b849f446a24">createX86_64Disassembler</a> (const <a class="el" href="classllvm_1_1Target.html">Target</a> &T, const <a class="el" href="classllvm_1_1MCSubtargetInfo.html">MCSubtargetInfo</a> &STI)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8cpp.html#a646881a4b5b28cd1d0a52a42642c8f49">LLVMInitializeX86Disassembler</a> ()</td></tr>
+<tr><td colspan="2"><h2><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">Target </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#af353014bfa72c4b1b8db88e18d64fa5f">llvm::TheX86_32Target</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">Target </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#ac132a29b643b352088cd55b4730afea3">llvm::TheX86_64Target</a></td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ae0228f36529f75f692753ef96d725012"></a><!-- doxytag: member="X86Disassembler.cpp::debug" ref="ae0228f36529f75f692753ef96d725012" args="(s)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define debug</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">s</td><td>)</td>
+          <td>   DEBUG(x86DisassemblerDebug(__FILE__, __LINE__, s));</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00052">52</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00701">translateFPRegister()</a>, <a class="el" href="X86Disassembler_8cpp_source.html#l00778">translateInstruction()</a>, <a class="el" href="X86Disassembler_8cpp_source.html#l00720">translateOperand()</a>, <a class="el" href="X86Disassembler_8cpp_source.html#l00650">translateRM()</a>, <a class="el" href="X86Disassembler_8cpp_source.html#l00467">translateRMMemory()</a>, and <a class="el" href="X86Disassembler_8cpp_source.html#l00429">translateRMRegister()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a168a41dfc8e956c6180862aeca885db1"></a><!-- doxytag: member="X86Disassembler.cpp::ENTRY" ref="a168a41dfc8e956c6180862aeca885db1" args="(x)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define ENTRY</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">x</td><td>)</td>
+          <td>   X86::x,</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a168a41dfc8e956c6180862aeca885db1"></a><!-- doxytag: member="X86Disassembler.cpp::ENTRY" ref="a168a41dfc8e956c6180862aeca885db1" args="(x)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define ENTRY</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">x</td><td>)</td>
+          <td>   case EA_BASE_##x:</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a168a41dfc8e956c6180862aeca885db1"></a><!-- doxytag: member="X86Disassembler.cpp::ENTRY" ref="a168a41dfc8e956c6180862aeca885db1" args="(x)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define ENTRY</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">x</td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">case</span> EA_REG_##x:                                                    \
+    mcInst.addOperand(MCOperand::CreateReg(X86::x)); <span class="keywordflow">break</span>;
+</pre></div>
+</div>
+</div>
+<a class="anchor" id="a168a41dfc8e956c6180862aeca885db1"></a><!-- doxytag: member="X86Disassembler.cpp::ENTRY" ref="a168a41dfc8e956c6180862aeca885db1" args="(x)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define ENTRY</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">x</td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">case</span> SIB_BASE_##x:                                  \
+        baseReg = MCOperand::CreateReg(X86::x); <span class="keywordflow">break</span>;
+</pre></div>
+</div>
+</div>
+<a class="anchor" id="a168a41dfc8e956c6180862aeca885db1"></a><!-- doxytag: member="X86Disassembler.cpp::ENTRY" ref="a168a41dfc8e956c6180862aeca885db1" args="(x)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define ENTRY</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">x</td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">case</span> SIB_INDEX_##x:                                 \
+        indexReg = MCOperand::CreateReg(X86::x); <span class="keywordflow">break</span>;
+</pre></div>
+</div>
+</div>
+<a class="anchor" id="a168a41dfc8e956c6180862aeca885db1"></a><!-- doxytag: member="X86Disassembler.cpp::ENTRY" ref="a168a41dfc8e956c6180862aeca885db1" args="(x)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define ENTRY</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">x</td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">case</span> EA_BASE_##x:                                 \
+        baseReg = MCOperand::CreateReg(X86::x); <span class="keywordflow">break</span>;
+</pre></div>
+</div>
+</div>
+<a class="anchor" id="a168a41dfc8e956c6180862aeca885db1"></a><!-- doxytag: member="X86Disassembler.cpp::ENTRY" ref="a168a41dfc8e956c6180862aeca885db1" args="(x)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define ENTRY</td>
+          <td>(</td>
+          <td class="paramtype"> </td>
+          <td class="paramname">x</td><td>)</td>
+          <td>   case EA_REG_##x:</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a2433e9e503264e8ca019761dad9d06d1"></a><!-- doxytag: member="X86Disassembler.cpp::GET_INSTRINFO_ENUM" ref="a2433e9e503264e8ca019761dad9d06d1" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GET_INSTRINFO_ENUM</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00034">34</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a08a185753458ada847ed2d41b47ac1d1"></a><!-- doxytag: member="X86Disassembler.cpp::GET_REGINFO_ENUM" ref="a08a185753458ada847ed2d41b47ac1d1" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define GET_REGINFO_ENUM</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00032">32</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a8ee31c3aef0fbecf9e80aaeb7abbf961"></a><!-- doxytag: member="X86Disassembler.cpp::createX86_32Disassembler" ref="a8ee31c3aef0fbecf9e80aaeb7abbf961" args="(const Target &T, const MCSubtargetInfo &STI)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a>* createX86_32Disassembler </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1Target.html">Target</a> & </td>
+          <td class="paramname"><em>T</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1MCSubtargetInfo.html">MCSubtargetInfo</a> & </td>
+          <td class="paramname"><em>STI</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00803">803</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+<p>References <a class="el" href="TargetRegistry_8h_source.html#l00298">llvm::Target::createMCInstrInfo()</a>, and <a class="el" href="X86DisassemblerDecoderCommon_8h_source.html#l00394">MODE_32BIT</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00815">LLVMInitializeX86Disassembler()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afd818f51ad50d0d4d8252b849f446a24"></a><!-- doxytag: member="X86Disassembler.cpp::createX86_64Disassembler" ref="afd818f51ad50d0d4d8252b849f446a24" args="(const Target &T, const MCSubtargetInfo &STI)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a>* createX86_64Disassembler </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1Target.html">Target</a> & </td>
+          <td class="paramname"><em>T</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1MCSubtargetInfo.html">MCSubtargetInfo</a> & </td>
+          <td class="paramname"><em>STI</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00809">809</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+<p>References <a class="el" href="TargetRegistry_8h_source.html#l00298">llvm::Target::createMCInstrInfo()</a>, and <a class="el" href="X86DisassemblerDecoderCommon_8h_source.html#l00395">MODE_64BIT</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00815">LLVMInitializeX86Disassembler()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a646881a4b5b28cd1d0a52a42642c8f49"></a><!-- doxytag: member="X86Disassembler.cpp::LLVMInitializeX86Disassembler" ref="a646881a4b5b28cd1d0a52a42642c8f49" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void LLVMInitializeX86Disassembler </td>
+          <td>(</td>
+          <td class="paramname"></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00815">815</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+<p>References <a class="el" href="X86Disassembler_8cpp_source.html#l00803">createX86_32Disassembler()</a>, <a class="el" href="X86Disassembler_8cpp_source.html#l00809">createX86_64Disassembler()</a>, <a class="el" href="TargetRegistry_8h_source.html#l00731">llvm::TargetRegistry::RegisterMCDisassembler()</a>, <a class="el" href="X86MCTargetDesc_8h_source.html#l00030">llvm::TheX86_32Target</a>, and <a class="el" href="X86MCTargetDesc_8h_source.html#l00030">llvm::TheX86_64Target</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8b039b49b0328a216cb2e7704d330873"></a><!-- doxytag: member="X86Disassembler.cpp::logger" ref="a8b039b49b0328a216cb2e7704d330873" args="(void *arg, const char *log)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void logger </td>
+          <td>(</td>
+          <td class="paramtype">void * </td>
+          <td class="paramname"><em>arg</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classchar.html">char</a> * </td>
+          <td class="paramname"><em>log</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>logger - a callback function that wraps the operator<< method from raw_ostream.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">arg</td><td>- The generic callback parameter. This should be a pointe to a raw_ostream. </td></tr>
+    <tr><td class="paramname">log</td><td>- A string to be logged. <a class="el" href="X86Disassembler_8cpp.html#a8b039b49b0328a216cb2e7704d330873">logger()</a> adds a newline. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00109">109</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l01626">decodeInstruction()</a>, and <a class="el" href="X86Disassembler_8cpp_source.html#l00122">llvm::X86Disassembler::X86GenericDisassembler::getInstruction()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab22d1a1edb10d251c1e06618f5b7344b"></a><!-- doxytag: member="X86Disassembler.cpp::regionReader" ref="ab22d1a1edb10d251c1e06618f5b7344b" args="(const void *arg, uint8_t *byte, uint64_t address)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static int regionReader </td>
+          <td>(</td>
+          <td class="paramtype">const void * </td>
+          <td class="paramname"><em>arg</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t * </td>
+          <td class="paramname"><em>byte</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint64_t </td>
+          <td class="paramname"><em>address</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>regionReader - a callback function that wraps the readByte method from MemoryObject.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">arg</td><td>- The generic callback parameter. In this case, this should be a pointer to a MemoryObject. </td></tr>
+    <tr><td class="paramname">byte</td><td>- A pointer to the byte to be read. </td></tr>
+    <tr><td class="paramname">address</td><td>- The address to be read. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00098">98</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+<p>References <a class="el" href="classllvm_1_1MemoryObject.html#abdc585424899d8828ea8f334150e28b1">llvm::MemoryObject::readByte()</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00122">llvm::X86Disassembler::X86GenericDisassembler::getInstruction()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab39836b0e9db7069ddbd0f422dbf2a51"></a><!-- doxytag: member="X86Disassembler.cpp::translateFPRegister" ref="ab39836b0e9db7069ddbd0f422dbf2a51" args="(MCInst &mcInst, uint8_t stackPos)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> translateFPRegister </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1MCInst.html">MCInst</a> & </td>
+          <td class="paramname"><em>mcInst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint8_t </td>
+          <td class="paramname"><em>stackPos</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>translateFPRegister - Translates a stack position on the FPU stack to its LLVM form, and appends it to an MCInst.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">mcInst</td><td>- The MCInst to append to. </td></tr>
+    <tr><td class="paramname">stackPos</td><td>- The stack position to translate. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>- 0 on success; nonzero otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00701">701</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+<p>References <a class="el" href="MCInst_8h_source.html#l00167">llvm::MCInst::addOperand()</a>, <a class="el" href="MCInst_8h_source.html#l00111">llvm::MCOperand::CreateReg()</a>, and <a class="el" href="X86Disassembler_8cpp_source.html#l00052">debug</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00720">translateOperand()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a409baefdf6be89e38deebefb129c1978"></a><!-- doxytag: member="X86Disassembler.cpp::translateImmediate" ref="a409baefdf6be89e38deebefb129c1978" args="(MCInst &mcInst, uint64_t immediate, const OperandSpecifier &operand, InternalInstruction &insn, const MCDisassembler *Dis)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void translateImmediate </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1MCInst.html">MCInst</a> & </td>
+          <td class="paramname"><em>mcInst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint64_t </td>
+          <td class="paramname"><em>immediate</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="structOperandSpecifier.html">OperandSpecifier</a> & </td>
+          <td class="paramname"><em>operand</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structInternalInstruction.html">InternalInstruction</a> & </td>
+          <td class="paramname"><em>insn</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> * </td>
+          <td class="paramname"><em>Dis</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>translateImmediate - Appends an immediate operand to an MCInst.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">mcInst</td><td>- The MCInst to append to. </td></tr>
+    <tr><td class="paramname">immediate</td><td>- The immediate value to append. </td></tr>
+    <tr><td class="paramname">operand</td><td>- The operand, as stored in the descriptor table. </td></tr>
+    <tr><td class="paramname">insn</td><td>- The internal instruction. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00317">317</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+<p>References <a class="el" href="MCInst_8h_source.html#l00167">llvm::MCInst::addOperand()</a>, <a class="el" href="MCInst_8h_source.html#l00117">llvm::MCOperand::CreateImm()</a>, <a class="el" href="MCInst_8h_source.html#l00111">llvm::MCOperand::CreateReg()</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00464">InternalInstruction::displacementSize</a>, <a class="el" href="X86DisassemblerDecoderCommon_8h_source.html#l00352">OperandSpecifier::encoding</a>, <a class="el" href="MCInst_8h_source.html#l00158">llvm::MCInst::getOpcode()</a>, <a class="el" href="LLParser_8cpp.html#ab86ae2177a3bc7ef5154e74e482cf6bc">if()</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00470">InternalInstruction::immediateOffset</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00465">InternalInstruction::immediateSize</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00439">InternalInstruction::startLocation</a>, <a class="el" href="X86Disa
 ssembler_8cpp_source.html#l00196">tryAddingSymbolicOperand()</a>, and <a class="el" href="X86DisassemblerDecoderCommon_8h_source.html#l00353">OperandSpecifier::type</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00720">translateOperand()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa7c2d86a8c8ecfb0cd3627aceac7afb6"></a><!-- doxytag: member="X86Disassembler.cpp::translateInstruction" ref="aa7c2d86a8c8ecfb0cd3627aceac7afb6" args="(MCInst &target, InternalInstruction &source, const MCDisassembler *Dis)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> translateInstruction </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1MCInst.html">MCInst</a> & </td>
+          <td class="paramname"><em>mcInst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structInternalInstruction.html">InternalInstruction</a> & </td>
+          <td class="paramname"><em>insn</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> * </td>
+          <td class="paramname"><em>Dis</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>translateInstruction - Translates an internal instruction and all its operands to an MCInst.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">mcInst</td><td>- The MCInst to populate with the instruction's data. </td></tr>
+    <tr><td class="paramname">insn</td><td>- The internal instruction. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>- false on success; true otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00778">778</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+<p>References <a class="el" href="X86Disassembler_8cpp_source.html#l00052">debug</a>, <a class="el" href="X86DisassemblerDecoderCommon_8h_source.html#l00352">OperandSpecifier::encoding</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00488">InternalInstruction::instructionID</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00515">InternalInstruction::numImmediatesTranslated</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00543">InternalInstruction::operands</a>, <a class="el" href="MCInst_8h_source.html#l00157">llvm::MCInst::setOpcode()</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00490">InternalInstruction::spec</a>, <a class="el" href="X86Disassembler_8cpp_source.html#l00720">translateOperand()</a>, and <a class="el" href="X86DisassemblerDecoderCommon_8h_source.html#l00373">X86_MAX_OPERANDS</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00122">llvm::X86Disassembler::X86GenericDisassembler::getInstruction()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aeb806eaaca65c1a593f5af3078798819"></a><!-- doxytag: member="X86Disassembler.cpp::translateOperand" ref="aeb806eaaca65c1a593f5af3078798819" args="(MCInst &mcInst, const OperandSpecifier &operand, InternalInstruction &insn, const MCDisassembler *Dis)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> translateOperand </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1MCInst.html">MCInst</a> & </td>
+          <td class="paramname"><em>mcInst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="structOperandSpecifier.html">OperandSpecifier</a> & </td>
+          <td class="paramname"><em>operand</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structInternalInstruction.html">InternalInstruction</a> & </td>
+          <td class="paramname"><em>insn</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> * </td>
+          <td class="paramname"><em>Dis</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>translateOperand - Translates an operand stored in an internal instruction to LLVM's format and appends it to an MCInst.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">mcInst</td><td>- The MCInst to append to. </td></tr>
+    <tr><td class="paramname">operand</td><td>- The operand, as stored in the descriptor table. </td></tr>
+    <tr><td class="paramname">insn</td><td>- The internal instruction. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>- false on success; true otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00720">720</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+<p>References <a class="el" href="X86Disassembler_8cpp_source.html#l00052">debug</a>, <a class="el" href="X86DisassemblerDecoderCommon_8h_source.html#l00352">OperandSpecifier::encoding</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00516">InternalInstruction::immediates</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00515">InternalInstruction::numImmediatesTranslated</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00520">InternalInstruction::opcodeModifier</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00521">InternalInstruction::opcodeRegister</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00543">InternalInstruction::operands</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00536">InternalInstruction::reg</a>, <a class="el" href="X86Disassembler_8cpp_source.html#l00701">translateFPRegister()</a>, <a class="el" href="X86Disassembler_8cpp_source.html#l00317">translateImmediate()
 </a>, <a class="el" href="X86Disassembler_8cpp_source.html#l00165">translateRegister()</a>, <a class="el" href="X86Disassembler_8cpp_source.html#l00650">translateRM()</a>, <a class="el" href="X86DisassemblerDecoderCommon_8h_source.html#l00353">OperandSpecifier::type</a>, and <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00498">InternalInstruction::vvvv</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00778">translateInstruction()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a06e3b1499180a2b92acc66f9203ac920"></a><!-- doxytag: member="X86Disassembler.cpp::translateRegister" ref="a06e3b1499180a2b92acc66f9203ac920" args="(MCInst &mcInst, Reg reg)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void translateRegister </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1MCInst.html">MCInst</a> & </td>
+          <td class="paramname"><em>mcInst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a> </td>
+          <td class="paramname"><em>reg</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>translateRegister - Translates an internal register to the appropriate LLVM register, and appends it as an operand to an MCInst.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">mcInst</td><td>- The MCInst to append to. </td></tr>
+    <tr><td class="paramname">reg</td><td>- The Reg to append. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00165">165</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+<p>References <a class="el" href="MCInst_8h_source.html#l00167">llvm::MCInst::addOperand()</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00280">ALL_REGS</a>, and <a class="el" href="MCInst_8h_source.html#l00111">llvm::MCOperand::CreateReg()</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00720">translateOperand()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aace6b74b8ffb4a67a94c8720813f18c2"></a><!-- doxytag: member="X86Disassembler.cpp::translateRM" ref="aace6b74b8ffb4a67a94c8720813f18c2" args="(MCInst &mcInst, const OperandSpecifier &operand, InternalInstruction &insn, const MCDisassembler *Dis)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> translateRM </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1MCInst.html">MCInst</a> & </td>
+          <td class="paramname"><em>mcInst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="structOperandSpecifier.html">OperandSpecifier</a> & </td>
+          <td class="paramname"><em>operand</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structInternalInstruction.html">InternalInstruction</a> & </td>
+          <td class="paramname"><em>insn</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> * </td>
+          <td class="paramname"><em>Dis</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>translateRM - Translates an operand stored in the R/M (and possibly SIB) byte of an instruction to LLVM form, and appends it to an MCInst.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">mcInst</td><td>- The MCInst to append to. </td></tr>
+    <tr><td class="paramname">operand</td><td>- The operand, as stored in the descriptor table. </td></tr>
+    <tr><td class="paramname">insn</td><td>- The instruction to extract Mod, R/M, and SIB fields from. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>- 0 on success; nonzero otherwise </dd></dl>
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00650">650</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+<p>References <a class="el" href="X86Disassembler_8cpp_source.html#l00052">debug</a>, <a class="el" href="X86Disassembler_8cpp_source.html#l00467">translateRMMemory()</a>, <a class="el" href="X86Disassembler_8cpp_source.html#l00429">translateRMRegister()</a>, and <a class="el" href="X86DisassemblerDecoderCommon_8h_source.html#l00353">OperandSpecifier::type</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00720">translateOperand()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad1c30e097c62d7d189050daf0e6cbe7b"></a><!-- doxytag: member="X86Disassembler.cpp::translateRMMemory" ref="ad1c30e097c62d7d189050daf0e6cbe7b" args="(MCInst &mcInst, InternalInstruction &insn, const MCDisassembler *Dis)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> translateRMMemory </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1MCInst.html">MCInst</a> & </td>
+          <td class="paramname"><em>mcInst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structInternalInstruction.html">InternalInstruction</a> & </td>
+          <td class="paramname"><em>insn</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> * </td>
+          <td class="paramname"><em>Dis</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>translateRMMemory - Translates a memory operand stored in the Mod and R/M fields of an internal instruction (and possibly its SIB byte) to a memory operand in LLVM's format, and appends it to an MCInst.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">mcInst</td><td>- The MCInst to append to. </td></tr>
+    <tr><td class="paramname">insn</td><td>- The instruction to extract Mod, R/M, and SIB fields from. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>- 0 on success; nonzero otherwise </dd></dl>
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00467">467</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+<p>References <a class="el" href="MCInst_8h_source.html#l00167">llvm::MCInst::addOperand()</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00463">InternalInstruction::addressSize</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00271">ALL_EA_BASES</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00280">ALL_REGS</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00276">ALL_SIB_BASES</a>, <a class="el" href="MCInst_8h_source.html#l00117">llvm::MCOperand::CreateImm()</a>, <a class="el" href="MCInst_8h_source.html#l00111">llvm::MCOperand::CreateReg()</a>, <a class="el" href="X86Disassembler_8cpp_source.html#l00052">debug</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00511">InternalInstruction::displacement</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00469">InternalInstruction::displacementOffset</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00464">InternalInstructio
 n::displacementSize</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00300">EA_BASE_NONE</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00124">EA_BASES_32BIT</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00160">EA_BASES_64BIT</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00342">EA_DISP_NONE</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00533">InternalInstruction::eaBase</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00534">InternalInstruction::eaDisplacement</a>, <a class="el" href="X86BaseInfo_8h_source.html#l00422">llvm::X86II::FS</a>, <a class="el" href="MCInst_8h_source.html#l00158">llvm::MCInst::getOpcode()</a>, <a class="el" href="X86BaseInfo_8h_source.html#l00423">llvm::X86II::GS</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00437">InternalInstruction::mode</a>, <a class="el" href="X86DisassemblerDecoderCommon_8h_source.html#l00395">MODE_64BIT</a>, 
 <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00206">REGS_XMM</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00224">REGS_YMM</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00369">SEG_OVERRIDE_max</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00459">InternalInstruction::segmentOverride</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00330">SIB_BASE_NONE</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00317">SIB_INDEX_NONE</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00541">InternalInstruction::sibBase</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00539">InternalInstruction::sibIndex</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00540">InternalInstruction::sibScale</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00439">InternalInstruction::startLocation</a>, <a class="el" href="X86Disassembler_8cpp_source.html#l
 00297">tryAddingPcLoadReferenceComment()</a>, and <a class="el" href="X86Disassembler_8cpp_source.html#l00196">tryAddingSymbolicOperand()</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00650">translateRM()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aea1e232218bf327acf353b1f07db2f86"></a><!-- doxytag: member="X86Disassembler.cpp::translateRMRegister" ref="aea1e232218bf327acf353b1f07db2f86" args="(MCInst &mcInst, InternalInstruction &insn)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> translateRMRegister </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1MCInst.html">MCInst</a> & </td>
+          <td class="paramname"><em>mcInst</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structInternalInstruction.html">InternalInstruction</a> & </td>
+          <td class="paramname"><em>insn</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>translateRMRegister - Translates a register stored in the R/M field of the ModR/M byte to its LLVM equivalent and appends it to an MCInst. </p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">mcInst</td><td>- The MCInst to append to. </td></tr>
+    <tr><td class="paramname">insn</td><td>- The internal instruction to extract the R/M field from. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>- 0 on success; -1 otherwise </dd></dl>
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00429">429</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+<p>References <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00271">ALL_EA_BASES</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00280">ALL_REGS</a>, <a class="el" href="X86Disassembler_8cpp_source.html#l00052">debug</a>, <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00300">EA_BASE_NONE</a>, and <a class="el" href="X86DisassemblerDecoder_8h_source.html#l00533">InternalInstruction::eaBase</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00650">translateRM()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aeac70eb217b5b7b122e05d1ed5518d9c"></a><!-- doxytag: member="X86Disassembler.cpp::tryAddingPcLoadReferenceComment" ref="aeac70eb217b5b7b122e05d1ed5518d9c" args="(uint64_t Address, uint64_t Value, const void *Decoder)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void tryAddingPcLoadReferenceComment </td>
+          <td>(</td>
+          <td class="paramtype">uint64_t </td>
+          <td class="paramname"><em>Address</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint64_t </td>
+          <td class="paramname"><em>Value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void * </td>
+          <td class="paramname"><em>Decoder</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>tryAddingPcLoadReferenceComment - trys to add a comment as to what is being referenced by a load instruction with the base register that is the rip. These can often be addresses in a literal pool. The Address of the instruction and its immediate Value are used to determine the address being referenced in the literal pool entry. The SymbolLookUp call back will return a pointer to a literal 'C' string if the referenced address is an address into a section with 'C' string literals. </p>
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00297">297</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+<p>References <a class="el" href="MCDisassembler_8h_source.html#l00131">llvm::MCDisassembler::CommentStream</a>, <a class="el" href="MCDisassembler_8h_source.html#l00126">llvm::MCDisassembler::getDisInfoBlock()</a>, <a class="el" href="MCDisassembler_8h_source.html#l00123">llvm::MCDisassembler::getLLVMSymbolLookupCallback()</a>, <a class="el" href="include_2llvm-c_2Disassembler_8h_source.html#l00124">LLVMDisassembler_ReferenceType_In_PCrel_Load</a>, and <a class="el" href="include_2llvm-c_2Disassembler_8h_source.html#l00131">LLVMDisassembler_ReferenceType_Out_LitPool_CstrAddr</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00467">translateRMMemory()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac63f5f7f7ea93a855351d62632358d66"></a><!-- doxytag: member="X86Disassembler.cpp::tryAddingSymbolicOperand" ref="ac63f5f7f7ea93a855351d62632358d66" args="(int64_t Value, bool isBranch, uint64_t Address, uint64_t Offset, uint64_t Width, MCInst &MI, const MCDisassembler *Dis)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> tryAddingSymbolicOperand </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classint64__t.html">int64_t</a> </td>
+          <td class="paramname"><em>Value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td>
+          <td class="paramname"><em>isBranch</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint64_t </td>
+          <td class="paramname"><em>Address</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint64_t </td>
+          <td class="paramname"><em>Offset</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint64_t </td>
+          <td class="paramname"><em>Width</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1MCInst.html">MCInst</a> & </td>
+          <td class="paramname"><em>MI</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> * </td>
+          <td class="paramname"><em>Dis</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>tryAddingSymbolicOperand - trys to add a symbolic operand in place of the immediate Value in the MCInst.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+  <table class="params">
+    <tr><td class="paramname">Value</td><td>- The immediate Value, has had any PC adjustment made by the caller. </td></tr>
+    <tr><td class="paramname">isBranch</td><td>- If the instruction is a branch instruction </td></tr>
+    <tr><td class="paramname">Address</td><td>- The starting address of the instruction </td></tr>
+    <tr><td class="paramname">Offset</td><td>- The byte offset to this immediate in the instruction </td></tr>
+    <tr><td class="paramname">Width</td><td>- The byte width of this immediate in the instruction</td></tr>
+  </table>
+  </dd>
+</dl>
+<p>If the getOpInfo() function was set when setupForSymbolicDisassembly() was called then that function is called to get any symbolic information for the immediate in the instruction using the Address, Offset and Width. If that returns non-zero then the symbolic information it returns is used to create an MCExpr and that is added as an operand to the MCInst. If getOpInfo() returns zero and isBranch is true then a symbol look up for immediate Value is done and if a symbol is found an MCExpr is created with that, else an MCExpr with the immediate Value is created. This function returns true if it adds an operand to the MCInst and false otherwise. </p>
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00196">196</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+<p>References <a class="el" href="MCInst_8h_source.html#l00167">llvm::MCInst::addOperand()</a>, <a class="el" href="include_2llvm-c_2Disassembler_8h_source.html#l00081">LLVMOpInfo1::AddSymbol</a>, <a class="el" href="MCDisassembler_8h_source.html#l00131">llvm::MCDisassembler::CommentStream</a>, <a class="el" href="MCExpr_8cpp_source.html#l00159">llvm::MCConstantExpr::Create()</a>, <a class="el" href="MCExpr_8h_source.html#l00223">llvm::MCSymbolRefExpr::Create()</a>, <a class="el" href="MCExpr_8h_source.html#l00349">llvm::MCBinaryExpr::CreateAdd()</a>, <a class="el" href="MCInst_8h_source.html#l00129">llvm::MCOperand::CreateExpr()</a>, <a class="el" href="MCExpr_8h_source.html#l00281">llvm::MCUnaryExpr::CreateMinus()</a>, <a class="el" href="MCExpr_8h_source.html#l00413">llvm::MCBinaryExpr::CreateSub()</a>, <a class="el" href="MCDisassembler_8h_source.html#l00126">llvm::MCDisassembler::getDisInfoBlock()</a>, <a class="el" href="MCDisassembler_8h_source.html#l00122">llvm::MCDi
 sassembler::getLLVMOpInfoCallback()</a>, <a class="el" href="MCDisassembler_8h_source.html#l00123">llvm::MCDisassembler::getLLVMSymbolLookupCallback()</a>, <a class="el" href="MCDisassembler_8h_source.html#l00127">llvm::MCDisassembler::getMCContext()</a>, <a class="el" href="MCContext_8cpp_source.html#l00070">llvm::MCContext::GetOrCreateSymbol()</a>, <a class="el" href="include_2llvm-c_2Disassembler_8h_source.html#l00122">LLVMDisassembler_ReferenceType_In_Branch</a>, <a class="el" href="include_2llvm-c_2Disassembler_8h_source.html#l00119">LLVMDisassembler_ReferenceType_InOut_None</a>, <a class="el" href="include_2llvm-c_2Disassembler_8h_source.html#l00127">LLVMDisassembler_ReferenceType_Out_SymbolStub</a>, <a class="el" href="TargetLibraryInfo_8h_source.html#l00222">llvm::LibFunc::memset</a>, <a class="el" href="include_2llvm-c_2Disassembler_8h_source.html#l00076">LLVMOpInfoSymbol1::Name</a>, <a class="el" href="include_2llvm-c_2Disassembler_8h_source.html#l00075">LLVMOpInfo
 Symbol1::Present</a>, <a class="el" href="include_2llvm-c_2Disassembler_8h_source.html#l00082">LLVMOpInfo1::SubtractSymbol</a>, <a class="el" href="include_2llvm-c_2Disassembler_8h_source.html#l00077">LLVMOpInfoSymbol1::Value</a>, and <a class="el" href="include_2llvm-c_2Disassembler_8h_source.html#l00083">LLVMOpInfo1::Value</a>.</p>
+
+<p>Referenced by <a class="el" href="X86Disassembler_8cpp_source.html#l00317">translateImmediate()</a>, and <a class="el" href="X86Disassembler_8cpp_source.html#l00467">translateRMMemory()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1982ca18fc4821e63790ae1fa8e4cabe"></a><!-- doxytag: member="X86Disassembler.cpp::x86DisassemblerDebug" ref="a1982ca18fc4821e63790ae1fa8e4cabe" args="(const char *file, unsigned line, const char *s)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void x86DisassemblerDebug </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classchar.html">char</a> * </td>
+          <td class="paramname"><em>file</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> </td>
+          <td class="paramname"><em>line</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classchar.html">char</a> * </td>
+          <td class="paramname"><em>s</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00041">41</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+<p>References <a class="el" href="Debug_8cpp_source.html#l00101">llvm::dbgs()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab989dba004fc91ca37606095e0a98b54"></a><!-- doxytag: member="X86Disassembler.cpp::x86DisassemblerGetInstrName" ref="ab989dba004fc91ca37606095e0a98b54" args="(unsigned Opcode, const void *mii)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const <a class="el" href="classchar.html">char</a>* x86DisassemblerGetInstrName </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> </td>
+          <td class="paramname"><em>Opcode</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const void * </td>
+          <td class="paramname"><em>mii</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86Disassembler_8cpp_source.html#l00047">47</a> of file <a class="el" href="X86Disassembler_8cpp_source.html">X86Disassembler.cpp</a>.</p>
+
+<p>References <a class="el" href="MCInstrInfo_8h_source.html#l00054">llvm::MCInstrInfo::getName()</a>.</p>
+
+<p>Referenced by <a class="el" href="X86DisassemblerDecoder_8c_source.html#l00726">getID()</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:58 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/X86Disassembler_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86Disassembler_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86Disassembler_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86Disassembler_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,878 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: X86Disassembler.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_ae72ec760f5f4d3869211e663a0eb354.html">X86</a>      </li>
+      <li class="navelem"><a class="el" href="dir_f8d2defef88098d0bc5331515603729f.html">Disassembler</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">X86Disassembler.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="X86Disassembler_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- X86Disassembler.cpp - Disassembler for x86 and x86_64 -------------===//</span>
+<a name="l00002"></a>00002 <span class="comment">//</span>
+<a name="l00003"></a>00003 <span class="comment">//                     The LLVM Compiler Infrastructure</span>
+<a name="l00004"></a>00004 <span class="comment">//</span>
+<a name="l00005"></a>00005 <span class="comment">// This file is distributed under the University of Illinois Open Source</span>
+<a name="l00006"></a>00006 <span class="comment">// License. See LICENSE.TXT for details.</span>
+<a name="l00007"></a>00007 <span class="comment">//</span>
+<a name="l00008"></a>00008 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00009"></a>00009 <span class="comment">//</span>
+<a name="l00010"></a>00010 <span class="comment">// This file is part of the X86 Disassembler.</span>
+<a name="l00011"></a>00011 <span class="comment">// It contains code to translate the data produced by the decoder into</span>
+<a name="l00012"></a>00012 <span class="comment">//  MCInsts.</span>
+<a name="l00013"></a>00013 <span class="comment">// Documentation for the disassembler can be found in X86Disassembler.h.</span>
+<a name="l00014"></a>00014 <span class="comment">//</span>
+<a name="l00015"></a>00015 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00016"></a>00016 
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="X86Disassembler_8h.html">X86Disassembler.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="X86DisassemblerDecoder_8h.html">X86DisassemblerDecoder.h</a>"</span>
+<a name="l00019"></a>00019 
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="EDInstInfo_8h.html">llvm/MC/EDInstInfo.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="MCExpr_8h.html">llvm/MC/MCExpr.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="MCContext_8h.html">llvm/MC/MCContext.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="MCDisassembler_8h.html">llvm/MC/MCDisassembler.h</a>"</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="MCInst_8h.html">llvm/MC/MCInst.h</a>"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="MCInstrInfo_8h.html">llvm/MC/MCInstrInfo.h</a>"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="MCSubtargetInfo_8h.html">llvm/MC/MCSubtargetInfo.h</a>"</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="Debug_8h.html">llvm/Support/Debug.h</a>"</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="MemoryObject_8h.html">llvm/Support/MemoryObject.h</a>"</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="TargetRegistry_8h.html">llvm/Support/TargetRegistry.h</a>"</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="raw__ostream_8h.html">llvm/Support/raw_ostream.h</a>"</span>
+<a name="l00031"></a>00031 
+<a name="l00032"></a><a class="code" href="X86Disassembler_8cpp.html#a08a185753458ada847ed2d41b47ac1d1">00032</a> <span class="preprocessor">#define GET_REGINFO_ENUM</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#include "X86GenRegisterInfo.inc"</span>
+<a name="l00034"></a><a class="code" href="X86Disassembler_8cpp.html#a2433e9e503264e8ca019761dad9d06d1">00034</a> <span class="preprocessor">#define GET_INSTRINFO_ENUM</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#include "X86GenInstrInfo.inc"</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include "X86GenEDInfo.inc"</span>
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038 <span class="keyword">using namespace </span>llvm;
+<a name="l00039"></a>00039 <span class="keyword">using namespace </span>llvm::X86Disassembler;
+<a name="l00040"></a>00040 
+<a name="l00041"></a><a class="code" href="X86DisassemblerDecoder_8h.html#a1982ca18fc4821e63790ae1fa8e4cabe">00041</a> <span class="keywordtype">void</span> <a class="code" href="X86Disassembler_8cpp.html#a1982ca18fc4821e63790ae1fa8e4cabe">x86DisassemblerDebug</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="PathProfileInfo_8cpp.html#add64b5c8b8c45c8dabeaf9d771cc1534">file</a>,
+<a name="l00042"></a>00042                           <span class="keywordtype">unsigned</span> line,
+<a name="l00043"></a>00043                           <span class="keyword">const</span> <span class="keywordtype">char</span> *s) {
+<a name="l00044"></a>00044   <a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << file << <span class="stringliteral">":"</span> << line << <span class="stringliteral">": "</span> << s;
+<a name="l00045"></a>00045 }
+<a name="l00046"></a>00046 
+<a name="l00047"></a><a class="code" href="X86DisassemblerDecoder_8h.html#ab989dba004fc91ca37606095e0a98b54">00047</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="X86Disassembler_8cpp.html#ab989dba004fc91ca37606095e0a98b54">x86DisassemblerGetInstrName</a>(<span class="keywordtype">unsigned</span> Opcode, <span class="keyword">const</span> <span class="keywordtype">void</span> *mii) {
+<a name="l00048"></a>00048   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCInstrInfo.html">MCInstrInfo</a> *MII = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="classllvm_1_1MCInstrInfo.html">MCInstrInfo</a> *<span class="keyword">></span>(mii);
+<a name="l00049"></a>00049   <span class="keywordflow">return</span> MII-><a class="code" href="classllvm_1_1MCInstrInfo.html#accfb55370b28fdf347aafe7643e60e44" title="getName - Returns the name for the instructions with the given opcode.">getName</a>(Opcode);
+<a name="l00050"></a>00050 }
+<a name="l00051"></a>00051 
+<a name="l00052"></a><a class="code" href="X86Disassembler_8cpp.html#ae0228f36529f75f692753ef96d725012">00052</a> <span class="preprocessor">#define debug(s) DEBUG(x86DisassemblerDebug(__FILE__, __LINE__, s));</span>
+<a name="l00053"></a>00053 <span class="preprocessor"></span>
+<a name="l00054"></a>00054 <span class="keyword">namespace </span>llvm {  
+<a name="l00055"></a>00055   
+<a name="l00056"></a>00056 <span class="comment">// Fill-ins to make the compiler happy.  These constants are never actually</span>
+<a name="l00057"></a>00057 <span class="comment">//   assigned; they are just filler to make an automatically-generated switch</span>
+<a name="l00058"></a>00058 <span class="comment">//   statement work.</span>
+<a name="l00059"></a><a class="code" href="namespacellvm_1_1X86.html">00059</a> <span class="keyword">namespace </span>X86 {
+<a name="l00060"></a>00060   <span class="keyword">enum</span> {
+<a name="l00061"></a><a class="code" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7a054eabdfa18b90440948ed7de90566f6">00061</a>     <a class="code" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7a054eabdfa18b90440948ed7de90566f6">BX_SI</a> = 500,
+<a name="l00062"></a><a class="code" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7a479de3ea37ad5b24dd2965b879747f6b">00062</a>     <a class="code" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7a479de3ea37ad5b24dd2965b879747f6b">BX_DI</a> = 501,
+<a name="l00063"></a><a class="code" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7a9ab738e845db4698317ac000ef40e1fa">00063</a>     <a class="code" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7a9ab738e845db4698317ac000ef40e1fa">BP_SI</a> = 502,
+<a name="l00064"></a><a class="code" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7a08bf612dd15d4704289288f0e2467158">00064</a>     <a class="code" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7a08bf612dd15d4704289288f0e2467158">BP_DI</a> = 503,
+<a name="l00065"></a><a class="code" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7ac3848eebb47273fc0d103aa6e8f2b792">00065</a>     <a class="code" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7ac3848eebb47273fc0d103aa6e8f2b792">sib</a>   = 504,
+<a name="l00066"></a><a class="code" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7a3988fbb34b7d4089448cf3bf2c2e21d2">00066</a>     <a class="code" href="namespacellvm_1_1X86.html#ab2f8e6eca17852d0f0fe6ea4a1f05db7a3988fbb34b7d4089448cf3bf2c2e21d2">sib64</a> = 505
+<a name="l00067"></a>00067   };
+<a name="l00068"></a>00068 }
+<a name="l00069"></a>00069 
+<a name="l00070"></a>00070 <span class="keyword">extern</span> <a class="code" href="classllvm_1_1Target.html">Target</a> <a class="code" href="namespacellvm.html#af353014bfa72c4b1b8db88e18d64fa5f">TheX86_32Target</a>, <a class="code" href="namespacellvm.html#ac132a29b643b352088cd55b4730afea3">TheX86_64Target</a>;
+<a name="l00071"></a>00071 
+<a name="l00072"></a>00072 }
+<a name="l00073"></a>00073 
+<a name="l00074"></a>00074 <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="X86Disassembler_8cpp.html#aa7c2d86a8c8ecfb0cd3627aceac7afb6">translateInstruction</a>(<a class="code" href="classllvm_1_1MCInst.html">MCInst</a> &target,
+<a name="l00075"></a>00075                                 <a class="code" href="structInternalInstruction.html">InternalInstruction</a> &source,
+<a name="l00076"></a>00076                                 <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> *Dis);
+<a name="l00077"></a>00077 
+<a name="l00078"></a><a class="code" href="classllvm_1_1X86Disassembler_1_1X86GenericDisassembler.html#a0a281c27adf077cd37914ce4cf6fd357">00078</a> X86GenericDisassembler::X86GenericDisassembler(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCSubtargetInfo.html">MCSubtargetInfo</a> &STI,
+<a name="l00079"></a>00079                                                <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a549ce06ad85d0726a93b2768ae7c7da7">DisassemblerMode</a> mode,
+<a name="l00080"></a>00080                                                <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCInstrInfo.html">MCInstrInfo</a> *MII)
+<a name="l00081"></a>00081   : <a class="code" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a>(STI), MII(MII), fMode(mode) {}
+<a name="l00082"></a>00082 
+<a name="l00083"></a>00083 X86GenericDisassembler::~X86GenericDisassembler() {
+<a name="l00084"></a>00084   <span class="keyword">delete</span> MII;
+<a name="l00085"></a>00085 }
+<a name="l00086"></a>00086 
+<a name="l00087"></a><a class="code" href="classllvm_1_1X86Disassembler_1_1X86GenericDisassembler.html#a9920ed33c32b4374ab003d5996b41930">00087</a> <span class="keyword">const</span> <a class="code" href="structllvm_1_1EDInstInfo.html">EDInstInfo</a> *<a class="code" href="classllvm_1_1X86Disassembler_1_1X86GenericDisassembler.html#a9920ed33c32b4374ab003d5996b41930" title="getEDInfo - See MCDisassembler.">X86GenericDisassembler::getEDInfo</a>()<span class="keyword"> const </span>{
+<a name="l00088"></a>00088   <span class="keywordflow">return</span> instInfoX86;
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 <span class="comment"></span>
+<a name="l00091"></a>00091 <span class="comment">/// regionReader - a callback function that wraps the readByte method from</span>
+<a name="l00092"></a>00092 <span class="comment">///   MemoryObject.</span>
+<a name="l00093"></a>00093 <span class="comment">///</span>
+<a name="l00094"></a>00094 <span class="comment">/// @param arg      - The generic callback parameter.  In this case, this should</span>
+<a name="l00095"></a>00095 <span class="comment">///                   be a pointer to a MemoryObject.</span>
+<a name="l00096"></a>00096 <span class="comment">/// @param byte     - A pointer to the byte to be read.</span>
+<a name="l00097"></a>00097 <span class="comment">/// @param address  - The address to be read.</span>
+<a name="l00098"></a><a class="code" href="X86Disassembler_8cpp.html#ab22d1a1edb10d251c1e06618f5b7344b">00098</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="X86Disassembler_8cpp.html#ab22d1a1edb10d251c1e06618f5b7344b">regionReader</a>(<span class="keyword">const</span> <span class="keywordtype">void</span>* arg, uint8_t* byte, uint64_t address) {
+<a name="l00099"></a>00099   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MemoryObject.html">MemoryObject</a>* region = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="classllvm_1_1MemoryObject.html">MemoryObject</a>*<span class="keyword">></span>(arg);
+<a name="l00100"></a>00100   <span class="keywordflow">return</span> region-><a class="code" href="classllvm_1_1MemoryObject.html#abdc585424899d8828ea8f334150e28b1">readByte</a>(address, byte);
+<a name="l00101"></a>00101 }
+<a name="l00102"></a>00102 <span class="comment"></span>
+<a name="l00103"></a>00103 <span class="comment">/// logger - a callback function that wraps the operator<< method from</span>
+<a name="l00104"></a>00104 <span class="comment">///   raw_ostream.</span>
+<a name="l00105"></a>00105 <span class="comment">///</span>
+<a name="l00106"></a>00106 <span class="comment">/// @param arg      - The generic callback parameter.  This should be a pointe</span>
+<a name="l00107"></a>00107 <span class="comment">///                   to a raw_ostream.</span>
+<a name="l00108"></a>00108 <span class="comment">/// @param log      - A string to be logged.  logger() adds a newline.</span>
+<a name="l00109"></a><a class="code" href="X86Disassembler_8cpp.html#a8b039b49b0328a216cb2e7704d330873">00109</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="X86Disassembler_8cpp.html#a8b039b49b0328a216cb2e7704d330873">logger</a>(<span class="keywordtype">void</span>* arg, <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fafa3f73bf84a733da4c5652bd21b378a9" title="double log(double x);">log</a>) {
+<a name="l00110"></a>00110   <span class="keywordflow">if</span> (!arg)
+<a name="l00111"></a>00111     <span class="keywordflow">return</span>;
+<a name="l00112"></a>00112   
+<a name="l00113"></a>00113   <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &vStream = *(<span class="keyword">static_cast<</span><a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a>*<span class="keyword">></span>(arg));
+<a name="l00114"></a>00114   vStream << log << <span class="stringliteral">"\n"</span>;
+<a name="l00115"></a>00115 }  
+<a name="l00116"></a>00116   
+<a name="l00117"></a>00117 <span class="comment">//</span>
+<a name="l00118"></a>00118 <span class="comment">// Public interface for the disassembler</span>
+<a name="l00119"></a>00119 <span class="comment">//</span>
+<a name="l00120"></a>00120 
+<a name="l00121"></a>00121 <a class="code" href="classllvm_1_1MCDisassembler.html#a8eb822283e8f3200ca4b2a1ba0174e6a">MCDisassembler::DecodeStatus</a>
+<a name="l00122"></a><a class="code" href="classllvm_1_1X86Disassembler_1_1X86GenericDisassembler.html#a50f094c39d4e6423aab11b002bd1a42e">00122</a> <a class="code" href="classllvm_1_1X86Disassembler_1_1X86GenericDisassembler.html#a50f094c39d4e6423aab11b002bd1a42e" title="getInstruction - See MCDisassembler.">X86GenericDisassembler::getInstruction</a>(<a class="code" href="classllvm_1_1MCInst.html">MCInst</a> &instr,
+<a name="l00123"></a>00123                                        uint64_t &size,
+<a name="l00124"></a>00124                                        <span class="keyword">const</span> <a class="code" href="classllvm_1_1MemoryObject.html">MemoryObject</a> &region,
+<a name="l00125"></a>00125                                        uint64_t address,
+<a name="l00126"></a>00126                                        <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &vStream,
+<a name="l00127"></a>00127                                        <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &cStream)<span class="keyword"> const </span>{
+<a name="l00128"></a>00128   <a class="code" href="classllvm_1_1MCDisassembler.html#a68057d4a784ee78eca6f35d84936df6c">CommentStream</a> = &cStream;
+<a name="l00129"></a>00129 
+<a name="l00130"></a>00130   <a class="code" href="structInternalInstruction.html">InternalInstruction</a> internalInstr;
+<a name="l00131"></a>00131 
+<a name="l00132"></a>00132   <a class="code" href="X86DisassemblerDecoder_8h.html#aeacf2f01401e8f724683d399ff8eb43f">dlog_t</a> loggerFn = <a class="code" href="X86Disassembler_8cpp.html#a8b039b49b0328a216cb2e7704d330873">logger</a>;
+<a name="l00133"></a>00133   <span class="keywordflow">if</span> (&vStream == &<a class="code" href="namespacellvm.html#a8ad4ae565ad87db4c534952e2c88f310" title="nulls() - This returns a reference to a raw_ostream which discards output.">nulls</a>())
+<a name="l00134"></a>00134     loggerFn = 0; <span class="comment">// Disable logging completely if it's going to nulls().</span>
+<a name="l00135"></a>00135   
+<a name="l00136"></a>00136   <span class="keywordtype">int</span> ret = <a class="code" href="X86DisassemblerDecoder_8c.html#a6c71d4e276f8fe7ce11b7a8456821d7c">decodeInstruction</a>(&internalInstr,
+<a name="l00137"></a>00137                               <a class="code" href="X86Disassembler_8cpp.html#ab22d1a1edb10d251c1e06618f5b7344b">regionReader</a>,
+<a name="l00138"></a>00138                               (<span class="keyword">const</span> <span class="keywordtype">void</span>*)&region,
+<a name="l00139"></a>00139                               loggerFn,
+<a name="l00140"></a>00140                               (<span class="keywordtype">void</span>*)&vStream,
+<a name="l00141"></a>00141                               (<span class="keyword">const</span> <span class="keywordtype">void</span>*)MII,
+<a name="l00142"></a>00142                               address,
+<a name="l00143"></a>00143                               fMode);
+<a name="l00144"></a>00144 
+<a name="l00145"></a>00145   <span class="keywordflow">if</span> (ret) {
+<a name="l00146"></a>00146     size = internalInstr.<a class="code" href="structInternalInstruction.html#ab255c3e1663cdfbdebbe1b199140a950">readerCursor</a> - address;
+<a name="l00147"></a>00147     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1MCDisassembler.html#a8eb822283e8f3200ca4b2a1ba0174e6aa537a26dac8694f2000c729a35e2ead30">Fail</a>;
+<a name="l00148"></a>00148   }
+<a name="l00149"></a>00149   <span class="keywordflow">else</span> {
+<a name="l00150"></a>00150     size = internalInstr.<a class="code" href="structInternalInstruction.html#aa21169901ecfa8cafe99dc89f912f775">length</a>;
+<a name="l00151"></a>00151     <span class="keywordflow">return</span> (!<a class="code" href="X86Disassembler_8cpp.html#aa7c2d86a8c8ecfb0cd3627aceac7afb6">translateInstruction</a>(instr, internalInstr, <span class="keyword">this</span>)) ?
+<a name="l00152"></a>00152             <a class="code" href="classllvm_1_1MCDisassembler.html#a8eb822283e8f3200ca4b2a1ba0174e6aaabe09036b442fff9aa63ce1e844fdf60">Success</a> : <a class="code" href="classllvm_1_1MCDisassembler.html#a8eb822283e8f3200ca4b2a1ba0174e6aa537a26dac8694f2000c729a35e2ead30">Fail</a>;
+<a name="l00153"></a>00153   }
+<a name="l00154"></a>00154 }
+<a name="l00155"></a>00155 
+<a name="l00156"></a>00156 <span class="comment">//</span>
+<a name="l00157"></a>00157 <span class="comment">// Private code that translates from struct InternalInstructions to MCInsts.</span>
+<a name="l00158"></a>00158 <span class="comment">//</span>
+<a name="l00159"></a>00159 <span class="comment"></span>
+<a name="l00160"></a>00160 <span class="comment">/// translateRegister - Translates an internal register to the appropriate LLVM</span>
+<a name="l00161"></a>00161 <span class="comment">///   register, and appends it as an operand to an MCInst.</span>
+<a name="l00162"></a>00162 <span class="comment">///</span>
+<a name="l00163"></a>00163 <span class="comment">/// @param mcInst     - The MCInst to append to.</span>
+<a name="l00164"></a>00164 <span class="comment">/// @param reg        - The Reg to append.</span>
+<a name="l00165"></a><a class="code" href="X86Disassembler_8cpp.html#a06e3b1499180a2b92acc66f9203ac920">00165</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="X86Disassembler_8cpp.html#a06e3b1499180a2b92acc66f9203ac920">translateRegister</a>(<a class="code" href="classllvm_1_1MCInst.html">MCInst</a> &mcInst, <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a> reg) {
+<a name="l00166"></a>00166 <span class="preprocessor">#define ENTRY(x) X86::x,</span>
+<a name="l00167"></a>00167 <span class="preprocessor"></span>  uint8_t llvmRegnums[] = {
+<a name="l00168"></a>00168     <a class="code" href="X86DisassemblerDecoder_8h.html#a8f4c518929a964ae54a9d42780670cd2">ALL_REGS</a>
+<a name="l00169"></a>00169     0
+<a name="l00170"></a>00170   };
+<a name="l00171"></a>00171 <span class="preprocessor">#undef ENTRY</span>
+<a name="l00172"></a>00172 <span class="preprocessor"></span>
+<a name="l00173"></a>00173   uint8_t llvmRegnum = llvmRegnums[reg];
+<a name="l00174"></a>00174   mcInst.<a class="code" href="classllvm_1_1MCInst.html#af5530910b07aa0c82adbc555dfc04fce">addOperand</a>(<a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(llvmRegnum));
+<a name="l00175"></a>00175 }
+<a name="l00176"></a>00176 <span class="comment"></span>
+<a name="l00177"></a>00177 <span class="comment">/// tryAddingSymbolicOperand - trys to add a symbolic operand in place of the</span>
+<a name="l00178"></a>00178 <span class="comment">/// immediate Value in the MCInst. </span>
+<a name="l00179"></a>00179 <span class="comment">///</span>
+<a name="l00180"></a>00180 <span class="comment">/// @param Value      - The immediate Value, has had any PC adjustment made by</span>
+<a name="l00181"></a>00181 <span class="comment">///                     the caller.</span>
+<a name="l00182"></a>00182 <span class="comment">/// @param isBranch   - If the instruction is a branch instruction</span>
+<a name="l00183"></a>00183 <span class="comment">/// @param Address    - The starting address of the instruction</span>
+<a name="l00184"></a>00184 <span class="comment">/// @param Offset     - The byte offset to this immediate in the instruction</span>
+<a name="l00185"></a>00185 <span class="comment">/// @param Width      - The byte width of this immediate in the instruction</span>
+<a name="l00186"></a>00186 <span class="comment">///</span>
+<a name="l00187"></a>00187 <span class="comment">/// If the getOpInfo() function was set when setupForSymbolicDisassembly() was</span>
+<a name="l00188"></a>00188 <span class="comment">/// called then that function is called to get any symbolic information for the</span>
+<a name="l00189"></a>00189 <span class="comment">/// immediate in the instruction using the Address, Offset and Width.  If that</span>
+<a name="l00190"></a>00190 <span class="comment">/// returns non-zero then the symbolic information it returns is used to create </span>
+<a name="l00191"></a>00191 <span class="comment">/// an MCExpr and that is added as an operand to the MCInst.  If getOpInfo()</span>
+<a name="l00192"></a>00192 <span class="comment">/// returns zero and isBranch is true then a symbol look up for immediate Value</span>
+<a name="l00193"></a>00193 <span class="comment">/// is done and if a symbol is found an MCExpr is created with that, else</span>
+<a name="l00194"></a>00194 <span class="comment">/// an MCExpr with the immediate Value is created.  This function returns true</span>
+<a name="l00195"></a>00195 <span class="comment">/// if it adds an operand to the MCInst and false otherwise.</span>
+<a name="l00196"></a><a class="code" href="X86Disassembler_8cpp.html#ac63f5f7f7ea93a855351d62632358d66">00196</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="X86Disassembler_8cpp.html#ac63f5f7f7ea93a855351d62632358d66">tryAddingSymbolicOperand</a>(<a class="code" href="classint64__t.html">int64_t</a> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>, <span class="keywordtype">bool</span> isBranch,
+<a name="l00197"></a>00197                                      uint64_t Address, uint64_t Offset,
+<a name="l00198"></a>00198                                      uint64_t Width, <a class="code" href="classllvm_1_1MCInst.html">MCInst</a> &<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>, 
+<a name="l00199"></a>00199                                      <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> *Dis) {  
+<a name="l00200"></a>00200   <a class="code" href="group__LLVMCDisassembler.html#gae5f5cf25f2e9383f79c4720b598625d9">LLVMOpInfoCallback</a> getOpInfo = Dis-><a class="code" href="classllvm_1_1MCDisassembler.html#aab05bd056685270f4a413fd3bb1d75ad">getLLVMOpInfoCallback</a>();
+<a name="l00201"></a>00201   <span class="keyword">struct </span><a class="code" href="structLLVMOpInfo1.html">LLVMOpInfo1</a> SymbolicOp;
+<a name="l00202"></a>00202   <a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa9f7f1b6be1144152902121f2463d0368" title="void *memset(void *b, int c, size_t len);">memset</a>(&SymbolicOp, <span class="charliteral">'\0'</span>, <span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code" href="structLLVMOpInfo1.html">LLVMOpInfo1</a>));
+<a name="l00203"></a>00203   SymbolicOp.<a class="code" href="structLLVMOpInfo1.html#ada34b99f968a6dbdd52619e812eb7d9a">Value</a> = <a class="code" href="structLLVMOpInfo1.html#ada34b99f968a6dbdd52619e812eb7d9a">Value</a>;
+<a name="l00204"></a>00204   <span class="keywordtype">void</span> *DisInfo = Dis-><a class="code" href="classllvm_1_1MCDisassembler.html#a1065b604a8463c67ca68f34965fda0e5">getDisInfoBlock</a>();
+<a name="l00205"></a>00205 
+<a name="l00206"></a>00206   <span class="keywordflow">if</span> (!getOpInfo ||
+<a name="l00207"></a>00207       !getOpInfo(DisInfo, Address, Offset, Width, 1, &SymbolicOp)) {
+<a name="l00208"></a>00208     <span class="comment">// Clear SymbolicOp.Value from above and also all other fields.</span>
+<a name="l00209"></a>00209     <a class="code" href="namespacellvm_1_1LibFunc.html#abf8f6830387f338fed0bce2e65108c6fa9f7f1b6be1144152902121f2463d0368" title="void *memset(void *b, int c, size_t len);">memset</a>(&SymbolicOp, <span class="charliteral">'\0'</span>, <span class="keyword">sizeof</span>(<span class="keyword">struct</span> <a class="code" href="structLLVMOpInfo1.html">LLVMOpInfo1</a>));
+<a name="l00210"></a>00210     <a class="code" href="group__LLVMCDisassembler.html#ga744daae29a3269eb9457502dc5f17a6d">LLVMSymbolLookupCallback</a> SymbolLookUp = Dis-><a class="code" href="classllvm_1_1MCDisassembler.html#a236e33e1844c47be2593a0db90608eab">getLLVMSymbolLookupCallback</a>();
+<a name="l00211"></a>00211     <span class="keywordflow">if</span> (!SymbolLookUp)
+<a name="l00212"></a>00212       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00213"></a>00213     uint64_t ReferenceType;
+<a name="l00214"></a>00214     <span class="keywordflow">if</span> (isBranch)
+<a name="l00215"></a>00215        ReferenceType = <a class="code" href="group__LLVMCDisassembler.html#ga82fca9d886616e829b203276c80afabf">LLVMDisassembler_ReferenceType_In_Branch</a>;
+<a name="l00216"></a>00216     <span class="keywordflow">else</span>
+<a name="l00217"></a>00217        ReferenceType = <a class="code" href="group__LLVMCDisassembler.html#gaa6b926b61f2d59191c806d31bb94c894">LLVMDisassembler_ReferenceType_InOut_None</a>;
+<a name="l00218"></a>00218     <span class="keyword">const</span> <span class="keywordtype">char</span> *ReferenceName;
+<a name="l00219"></a>00219     <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a> = SymbolLookUp(DisInfo, Value, &ReferenceType, Address,
+<a name="l00220"></a>00220                                     &ReferenceName);
+<a name="l00221"></a>00221     <span class="keywordflow">if</span> (Name) {
+<a name="l00222"></a>00222       SymbolicOp.<a class="code" href="structLLVMOpInfo1.html#a5ac48adba22aa66db9bed16f0d492705">AddSymbol</a>.<a class="code" href="structLLVMOpInfoSymbol1.html#a60a11f3a829fd9bbeb3071bf372bcef0">Name</a> = <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>;
+<a name="l00223"></a>00223       SymbolicOp.<a class="code" href="structLLVMOpInfo1.html#a5ac48adba22aa66db9bed16f0d492705">AddSymbol</a>.<a class="code" href="structLLVMOpInfoSymbol1.html#a03a90bff1e766901579a900fd4f870a1">Present</a> = <span class="keyword">true</span>;
+<a name="l00224"></a>00224     }
+<a name="l00225"></a>00225     <span class="comment">// For branches always create an MCExpr so it gets printed as hex address.</span>
+<a name="l00226"></a>00226     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isBranch) {
+<a name="l00227"></a>00227       SymbolicOp.<a class="code" href="structLLVMOpInfo1.html#ada34b99f968a6dbdd52619e812eb7d9a">Value</a> = <a class="code" href="structLLVMOpInfo1.html#ada34b99f968a6dbdd52619e812eb7d9a">Value</a>;
+<a name="l00228"></a>00228     }
+<a name="l00229"></a>00229     <span class="keywordflow">if</span>(ReferenceType == <a class="code" href="group__LLVMCDisassembler.html#ga43cc63fe7d58d8379d06b31cf92d620b">LLVMDisassembler_ReferenceType_Out_SymbolStub</a>)
+<a name="l00230"></a>00230       (*Dis-><a class="code" href="classllvm_1_1MCDisassembler.html#a68057d4a784ee78eca6f35d84936df6c">CommentStream</a>) << <span class="stringliteral">"symbol stub for: "</span> << ReferenceName;
+<a name="l00231"></a>00231     <span class="keywordflow">if</span> (!Name && !isBranch)
+<a name="l00232"></a>00232       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00233"></a>00233   }
+<a name="l00234"></a>00234 
+<a name="l00235"></a>00235   <a class="code" href="classllvm_1_1MCContext.html">MCContext</a> *Ctx = Dis-><a class="code" href="classllvm_1_1MCDisassembler.html#a1b6ad5ade50c202e3f2dfd459d60bf28">getMCContext</a>();
+<a name="l00236"></a>00236   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Add = NULL;
+<a name="l00237"></a>00237   <span class="keywordflow">if</span> (SymbolicOp.<a class="code" href="structLLVMOpInfo1.html#a5ac48adba22aa66db9bed16f0d492705">AddSymbol</a>.<a class="code" href="structLLVMOpInfoSymbol1.html#a03a90bff1e766901579a900fd4f870a1">Present</a>) {
+<a name="l00238"></a>00238     <span class="keywordflow">if</span> (SymbolicOp.<a class="code" href="structLLVMOpInfo1.html#a5ac48adba22aa66db9bed16f0d492705">AddSymbol</a>.<a class="code" href="structLLVMOpInfoSymbol1.html#a60a11f3a829fd9bbeb3071bf372bcef0">Name</a>) {
+<a name="l00239"></a>00239       <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>(SymbolicOp.<a class="code" href="structLLVMOpInfo1.html#a5ac48adba22aa66db9bed16f0d492705">AddSymbol</a>.<a class="code" href="structLLVMOpInfoSymbol1.html#a60a11f3a829fd9bbeb3071bf372bcef0">Name</a>);
+<a name="l00240"></a>00240       <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *Sym = Ctx-><a class="code" href="classllvm_1_1MCContext.html#a8e6c276fbf3f81102644e7b560a5cc3d">GetOrCreateSymbol</a>(Name);
+<a name="l00241"></a>00241       Add = <a class="code" href="classllvm_1_1MCSymbolRefExpr.html#acfd4c9d4f462e858c577dc0f57ef2d30">MCSymbolRefExpr::Create</a>(Sym, *Ctx);
+<a name="l00242"></a>00242     } <span class="keywordflow">else</span> {
+<a name="l00243"></a>00243       Add = <a class="code" href="classllvm_1_1MCConstantExpr.html#af86fe36eb5cf1cc8470095145e2bbfd2">MCConstantExpr::Create</a>((<span class="keywordtype">int</span>)SymbolicOp.<a class="code" href="structLLVMOpInfo1.html#a5ac48adba22aa66db9bed16f0d492705">AddSymbol</a>.<a class="code" href="structLLVMOpInfoSymbol1.html#ada98ba08ab672b331d230197a788e625">Value</a>, *Ctx);
+<a name="l00244"></a>00244     }
+<a name="l00245"></a>00245   }
+<a name="l00246"></a>00246 
+<a name="l00247"></a>00247   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Sub = NULL;
+<a name="l00248"></a>00248   <span class="keywordflow">if</span> (SymbolicOp.<a class="code" href="structLLVMOpInfo1.html#a5a683606e957f62746726cab5935d165">SubtractSymbol</a>.<a class="code" href="structLLVMOpInfoSymbol1.html#a03a90bff1e766901579a900fd4f870a1">Present</a>) {
+<a name="l00249"></a>00249       <span class="keywordflow">if</span> (SymbolicOp.<a class="code" href="structLLVMOpInfo1.html#a5a683606e957f62746726cab5935d165">SubtractSymbol</a>.<a class="code" href="structLLVMOpInfoSymbol1.html#a60a11f3a829fd9bbeb3071bf372bcef0">Name</a>) {
+<a name="l00250"></a>00250       <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>(SymbolicOp.<a class="code" href="structLLVMOpInfo1.html#a5a683606e957f62746726cab5935d165">SubtractSymbol</a>.<a class="code" href="structLLVMOpInfoSymbol1.html#a60a11f3a829fd9bbeb3071bf372bcef0">Name</a>);
+<a name="l00251"></a>00251       <a class="code" href="classllvm_1_1MCSymbol.html">MCSymbol</a> *Sym = Ctx-><a class="code" href="classllvm_1_1MCContext.html#a8e6c276fbf3f81102644e7b560a5cc3d">GetOrCreateSymbol</a>(Name);
+<a name="l00252"></a>00252       Sub = <a class="code" href="classllvm_1_1MCSymbolRefExpr.html#acfd4c9d4f462e858c577dc0f57ef2d30">MCSymbolRefExpr::Create</a>(Sym, *Ctx);
+<a name="l00253"></a>00253     } <span class="keywordflow">else</span> {
+<a name="l00254"></a>00254       Sub = <a class="code" href="classllvm_1_1MCConstantExpr.html#af86fe36eb5cf1cc8470095145e2bbfd2">MCConstantExpr::Create</a>((<span class="keywordtype">int</span>)SymbolicOp.<a class="code" href="structLLVMOpInfo1.html#a5a683606e957f62746726cab5935d165">SubtractSymbol</a>.<a class="code" href="structLLVMOpInfoSymbol1.html#ada98ba08ab672b331d230197a788e625">Value</a>, *Ctx);
+<a name="l00255"></a>00255     }
+<a name="l00256"></a>00256   }
+<a name="l00257"></a>00257 
+<a name="l00258"></a>00258   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Off = NULL;
+<a name="l00259"></a>00259   <span class="keywordflow">if</span> (SymbolicOp.<a class="code" href="structLLVMOpInfo1.html#ada34b99f968a6dbdd52619e812eb7d9a">Value</a> != 0)
+<a name="l00260"></a>00260     Off = <a class="code" href="classllvm_1_1MCConstantExpr.html#af86fe36eb5cf1cc8470095145e2bbfd2">MCConstantExpr::Create</a>(SymbolicOp.<a class="code" href="structLLVMOpInfo1.html#ada34b99f968a6dbdd52619e812eb7d9a">Value</a>, *Ctx);
+<a name="l00261"></a>00261 
+<a name="l00262"></a>00262   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Expr;
+<a name="l00263"></a>00263   <span class="keywordflow">if</span> (Sub) {
+<a name="l00264"></a>00264     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *LHS;
+<a name="l00265"></a>00265     <span class="keywordflow">if</span> (Add)
+<a name="l00266"></a>00266       LHS = <a class="code" href="classllvm_1_1MCBinaryExpr.html#affd7e5ede919881b3c8445ef442758f6">MCBinaryExpr::CreateSub</a>(Add, Sub, *Ctx);
+<a name="l00267"></a>00267     <span class="keywordflow">else</span>
+<a name="l00268"></a>00268       LHS = <a class="code" href="classllvm_1_1MCUnaryExpr.html#a3f6f4854710e4ad9994105dda2448d7b">MCUnaryExpr::CreateMinus</a>(Sub, *Ctx);
+<a name="l00269"></a>00269     <span class="keywordflow">if</span> (Off != 0)
+<a name="l00270"></a>00270       Expr = <a class="code" href="classllvm_1_1MCBinaryExpr.html#add25499b808bffb7f2e894b5b2032d96">MCBinaryExpr::CreateAdd</a>(LHS, Off, *Ctx);
+<a name="l00271"></a>00271     <span class="keywordflow">else</span>
+<a name="l00272"></a>00272       Expr = LHS;
+<a name="l00273"></a>00273   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Add) {
+<a name="l00274"></a>00274     <span class="keywordflow">if</span> (Off != 0)
+<a name="l00275"></a>00275       Expr = <a class="code" href="classllvm_1_1MCBinaryExpr.html#add25499b808bffb7f2e894b5b2032d96">MCBinaryExpr::CreateAdd</a>(Add, Off, *Ctx);
+<a name="l00276"></a>00276     <span class="keywordflow">else</span>
+<a name="l00277"></a>00277       Expr = Add;
+<a name="l00278"></a>00278   } <span class="keywordflow">else</span> {
+<a name="l00279"></a>00279     <span class="keywordflow">if</span> (Off != 0)
+<a name="l00280"></a>00280       Expr = Off;
+<a name="l00281"></a>00281     <span class="keywordflow">else</span>
+<a name="l00282"></a>00282       Expr = <a class="code" href="classllvm_1_1MCConstantExpr.html#af86fe36eb5cf1cc8470095145e2bbfd2">MCConstantExpr::Create</a>(0, *Ctx);
+<a name="l00283"></a>00283   }
+<a name="l00284"></a>00284 
+<a name="l00285"></a>00285   MI.<a class="code" href="classllvm_1_1MCInst.html#af5530910b07aa0c82adbc555dfc04fce">addOperand</a>(<a class="code" href="classllvm_1_1MCOperand.html#a0060e2c8ddfdd637aa85d0eee85902ae">MCOperand::CreateExpr</a>(Expr));
+<a name="l00286"></a>00286 
+<a name="l00287"></a>00287   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00288"></a>00288 }
+<a name="l00289"></a>00289 <span class="comment"></span>
+<a name="l00290"></a>00290 <span class="comment">/// tryAddingPcLoadReferenceComment - trys to add a comment as to what is being</span>
+<a name="l00291"></a>00291 <span class="comment">/// referenced by a load instruction with the base register that is the rip.</span>
+<a name="l00292"></a>00292 <span class="comment">/// These can often be addresses in a literal pool.  The Address of the</span>
+<a name="l00293"></a>00293 <span class="comment">/// instruction and its immediate Value are used to determine the address</span>
+<a name="l00294"></a>00294 <span class="comment">/// being referenced in the literal pool entry.  The SymbolLookUp call back will</span>
+<a name="l00295"></a>00295 <span class="comment">/// return a pointer to a literal 'C' string if the referenced address is an </span>
+<a name="l00296"></a>00296 <span class="comment">/// address into a section with 'C' string literals.</span>
+<a name="l00297"></a><a class="code" href="X86Disassembler_8cpp.html#aeac70eb217b5b7b122e05d1ed5518d9c">00297</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="X86Disassembler_8cpp.html#aeac70eb217b5b7b122e05d1ed5518d9c">tryAddingPcLoadReferenceComment</a>(uint64_t Address, uint64_t <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>,
+<a name="l00298"></a>00298                                             <span class="keyword">const</span> <span class="keywordtype">void</span> *Decoder) {
+<a name="l00299"></a>00299   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> *Dis = <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a>*<span class="keyword">></span>(Decoder);
+<a name="l00300"></a>00300   <a class="code" href="group__LLVMCDisassembler.html#ga744daae29a3269eb9457502dc5f17a6d">LLVMSymbolLookupCallback</a> SymbolLookUp = Dis-><a class="code" href="classllvm_1_1MCDisassembler.html#a236e33e1844c47be2593a0db90608eab">getLLVMSymbolLookupCallback</a>();
+<a name="l00301"></a>00301   <span class="keywordflow">if</span> (SymbolLookUp) {
+<a name="l00302"></a>00302     <span class="keywordtype">void</span> *DisInfo = Dis-><a class="code" href="classllvm_1_1MCDisassembler.html#a1065b604a8463c67ca68f34965fda0e5">getDisInfoBlock</a>();
+<a name="l00303"></a>00303     uint64_t ReferenceType = <a class="code" href="group__LLVMCDisassembler.html#ga4d14397b83038d9f432101b60d28afcd">LLVMDisassembler_ReferenceType_In_PCrel_Load</a>;
+<a name="l00304"></a>00304     <span class="keyword">const</span> <span class="keywordtype">char</span> *ReferenceName;
+<a name="l00305"></a>00305     (void)SymbolLookUp(DisInfo, Value, &ReferenceType, Address, &ReferenceName);
+<a name="l00306"></a>00306     <span class="keywordflow">if</span>(ReferenceType == <a class="code" href="group__LLVMCDisassembler.html#ga81e5011868131b85e2fe428b5de9165b">LLVMDisassembler_ReferenceType_Out_LitPool_CstrAddr</a>)
+<a name="l00307"></a>00307       (*Dis-><a class="code" href="classllvm_1_1MCDisassembler.html#a68057d4a784ee78eca6f35d84936df6c">CommentStream</a>) << <span class="stringliteral">"literal pool for: "</span> << ReferenceName;
+<a name="l00308"></a>00308   }
+<a name="l00309"></a>00309 }
+<a name="l00310"></a>00310 <span class="comment"></span>
+<a name="l00311"></a>00311 <span class="comment">/// translateImmediate  - Appends an immediate operand to an MCInst.</span>
+<a name="l00312"></a>00312 <span class="comment">///</span>
+<a name="l00313"></a>00313 <span class="comment">/// @param mcInst       - The MCInst to append to.</span>
+<a name="l00314"></a>00314 <span class="comment">/// @param immediate    - The immediate value to append.</span>
+<a name="l00315"></a>00315 <span class="comment">/// @param operand      - The operand, as stored in the descriptor table.</span>
+<a name="l00316"></a>00316 <span class="comment">/// @param insn         - The internal instruction.</span>
+<a name="l00317"></a><a class="code" href="X86Disassembler_8cpp.html#a409baefdf6be89e38deebefb129c1978">00317</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="X86Disassembler_8cpp.html#a409baefdf6be89e38deebefb129c1978">translateImmediate</a>(<a class="code" href="classllvm_1_1MCInst.html">MCInst</a> &mcInst, uint64_t immediate,
+<a name="l00318"></a>00318                                <span class="keyword">const</span> <a class="code" href="structOperandSpecifier.html">OperandSpecifier</a> &operand,
+<a name="l00319"></a>00319                                <a class="code" href="structInternalInstruction.html">InternalInstruction</a> &insn,
+<a name="l00320"></a>00320                                <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> *Dis) {  
+<a name="l00321"></a>00321   <span class="comment">// Sign-extend the immediate if necessary.</span>
+<a name="l00322"></a>00322 
+<a name="l00323"></a>00323   <a class="code" href="X86DisassemblerDecoderCommon_8h.html#aa4b9b8291a90b1a586c468110fb346a4">OperandType</a> type = (<a class="code" href="X86DisassemblerDecoderCommon_8h.html#aa4b9b8291a90b1a586c468110fb346a4">OperandType</a>)operand.<a class="code" href="structOperandSpecifier.html#aea1718df991133d6972a0bfadc66cfbf">type</a>;
+<a name="l00324"></a>00324 
+<a name="l00325"></a>00325   <span class="keywordtype">bool</span> isBranch = <span class="keyword">false</span>;
+<a name="l00326"></a>00326   uint64_t pcrel = 0;
+<a name="l00327"></a>00327   <a class="code" href="LLParser_8cpp.html#ab86ae2177a3bc7ef5154e74e482cf6bc">if</a> (type == TYPE_RELv) {
+<a name="l00328"></a>00328     isBranch = <span class="keyword">true</span>;
+<a name="l00329"></a>00329     pcrel = insn.<a class="code" href="structInternalInstruction.html#a3a55e24e218c4bff1f03ef64da4c3725">startLocation</a> +
+<a name="l00330"></a>00330             insn.<a class="code" href="structInternalInstruction.html#a5d8adf5f8eca4b73382be0133e570460">immediateOffset</a> + insn.<a class="code" href="structInternalInstruction.html#a3bbafa345f93ec20312858606ce8983a">immediateSize</a>;
+<a name="l00331"></a>00331     <span class="keywordflow">switch</span> (insn.<a class="code" href="structInternalInstruction.html#a5b5e7cd9bb41153cfa4b6ea81e0d1b09">displacementSize</a>) {
+<a name="l00332"></a>00332     <span class="keywordflow">default</span>:
+<a name="l00333"></a>00333       <span class="keywordflow">break</span>;
+<a name="l00334"></a>00334     <span class="keywordflow">case</span> 1:
+<a name="l00335"></a>00335       type = TYPE_MOFFS8;
+<a name="l00336"></a>00336       <span class="keywordflow">break</span>;
+<a name="l00337"></a>00337     <span class="keywordflow">case</span> 2:
+<a name="l00338"></a>00338       type = TYPE_MOFFS16;
+<a name="l00339"></a>00339       <span class="keywordflow">break</span>;
+<a name="l00340"></a>00340     <span class="keywordflow">case</span> 4:
+<a name="l00341"></a>00341       type = TYPE_MOFFS32;
+<a name="l00342"></a>00342       <span class="keywordflow">break</span>;
+<a name="l00343"></a>00343     <span class="keywordflow">case</span> 8:
+<a name="l00344"></a>00344       type = TYPE_MOFFS64;
+<a name="l00345"></a>00345       <span class="keywordflow">break</span>;
+<a name="l00346"></a>00346     }
+<a name="l00347"></a>00347   }
+<a name="l00348"></a>00348   <span class="comment">// By default sign-extend all X86 immediates based on their encoding.</span>
+<a name="l00349"></a>00349   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == TYPE_IMM8 || type == TYPE_IMM16 || type == TYPE_IMM32 ||
+<a name="l00350"></a>00350            type == TYPE_IMM64) {
+<a name="l00351"></a>00351     uint32_t Opcode = mcInst.<a class="code" href="classllvm_1_1MCInst.html#a22542ca9978e4b90401edee109c4f263">getOpcode</a>();
+<a name="l00352"></a>00352     <span class="keywordflow">switch</span> (operand.<a class="code" href="structOperandSpecifier.html#af8374a1a0bbfe5c8e5508f8482aae67b">encoding</a>) {
+<a name="l00353"></a>00353     <span class="keywordflow">default</span>:
+<a name="l00354"></a>00354       <span class="keywordflow">break</span>;
+<a name="l00355"></a>00355     <span class="keywordflow">case</span> ENCODING_IB:
+<a name="l00356"></a>00356       <span class="comment">// Special case those X86 instructions that use the imm8 as a set of</span>
+<a name="l00357"></a>00357       <span class="comment">// bits, bit count, etc. and are not sign-extend.</span>
+<a name="l00358"></a>00358       <span class="keywordflow">if</span> (Opcode != X86::BLENDPSrri && Opcode != X86::BLENDPDrri &&
+<a name="l00359"></a>00359           Opcode != X86::PBLENDWrri && Opcode != X86::MPSADBWrri &&
+<a name="l00360"></a>00360           Opcode != X86::DPPSrri && Opcode != X86::DPPDrri &&
+<a name="l00361"></a>00361           Opcode != X86::INSERTPSrr && Opcode != X86::VBLENDPSYrri &&
+<a name="l00362"></a>00362           Opcode != X86::VBLENDPSYrmi && Opcode != X86::VBLENDPDYrri &&
+<a name="l00363"></a>00363           Opcode != X86::VBLENDPDYrmi && Opcode != X86::VPBLENDWrri &&
+<a name="l00364"></a>00364           Opcode != X86::VMPSADBWrri && Opcode != X86::VDPPSYrri &&
+<a name="l00365"></a>00365           Opcode != X86::VDPPSYrmi && Opcode != X86::VDPPDrri &&
+<a name="l00366"></a>00366           Opcode != X86::VINSERTPSrr)
+<a name="l00367"></a>00367         type = TYPE_MOFFS8;
+<a name="l00368"></a>00368       <span class="keywordflow">break</span>;
+<a name="l00369"></a>00369     <span class="keywordflow">case</span> ENCODING_IW:
+<a name="l00370"></a>00370       type = TYPE_MOFFS16;
+<a name="l00371"></a>00371       <span class="keywordflow">break</span>;
+<a name="l00372"></a>00372     <span class="keywordflow">case</span> ENCODING_ID:
+<a name="l00373"></a>00373       type = TYPE_MOFFS32;
+<a name="l00374"></a>00374       <span class="keywordflow">break</span>;
+<a name="l00375"></a>00375     <span class="keywordflow">case</span> ENCODING_IO:
+<a name="l00376"></a>00376       type = TYPE_MOFFS64;
+<a name="l00377"></a>00377       <span class="keywordflow">break</span>;
+<a name="l00378"></a>00378     }
+<a name="l00379"></a>00379   }
+<a name="l00380"></a>00380 
+<a name="l00381"></a>00381   <span class="keywordflow">switch</span> (type) {
+<a name="l00382"></a>00382   <span class="keywordflow">case</span> TYPE_XMM32:
+<a name="l00383"></a>00383   <span class="keywordflow">case</span> TYPE_XMM64:
+<a name="l00384"></a>00384   <span class="keywordflow">case</span> TYPE_XMM128:
+<a name="l00385"></a>00385     mcInst.<a class="code" href="classllvm_1_1MCInst.html#af5530910b07aa0c82adbc555dfc04fce">addOperand</a>(<a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(X86::XMM0 + (immediate >> 4)));
+<a name="l00386"></a>00386     <span class="keywordflow">return</span>;
+<a name="l00387"></a>00387   <span class="keywordflow">case</span> TYPE_XMM256:
+<a name="l00388"></a>00388     mcInst.<a class="code" href="classllvm_1_1MCInst.html#af5530910b07aa0c82adbc555dfc04fce">addOperand</a>(<a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(X86::YMM0 + (immediate >> 4)));
+<a name="l00389"></a>00389     <span class="keywordflow">return</span>;
+<a name="l00390"></a>00390   <span class="keywordflow">case</span> TYPE_REL8:
+<a name="l00391"></a>00391     isBranch = <span class="keyword">true</span>;
+<a name="l00392"></a>00392     pcrel = insn.<a class="code" href="structInternalInstruction.html#a3a55e24e218c4bff1f03ef64da4c3725">startLocation</a> + insn.<a class="code" href="structInternalInstruction.html#a5d8adf5f8eca4b73382be0133e570460">immediateOffset</a> + insn.<a class="code" href="structInternalInstruction.html#a3bbafa345f93ec20312858606ce8983a">immediateSize</a>;
+<a name="l00393"></a>00393     <span class="comment">// fall through to sign extend the immediate if needed.</span>
+<a name="l00394"></a>00394   <span class="keywordflow">case</span> TYPE_MOFFS8:
+<a name="l00395"></a>00395     <span class="keywordflow">if</span>(immediate & 0x80)
+<a name="l00396"></a>00396       immediate |= ~(0xffull);
+<a name="l00397"></a>00397     <span class="keywordflow">break</span>;
+<a name="l00398"></a>00398   <span class="keywordflow">case</span> TYPE_MOFFS16:
+<a name="l00399"></a>00399     <span class="keywordflow">if</span>(immediate & 0x8000)
+<a name="l00400"></a>00400       immediate |= ~(0xffffull);
+<a name="l00401"></a>00401     <span class="keywordflow">break</span>;
+<a name="l00402"></a>00402   <span class="keywordflow">case</span> TYPE_REL32:
+<a name="l00403"></a>00403   <span class="keywordflow">case</span> TYPE_REL64:
+<a name="l00404"></a>00404     isBranch = <span class="keyword">true</span>;
+<a name="l00405"></a>00405     pcrel = insn.<a class="code" href="structInternalInstruction.html#a3a55e24e218c4bff1f03ef64da4c3725">startLocation</a> + insn.<a class="code" href="structInternalInstruction.html#a5d8adf5f8eca4b73382be0133e570460">immediateOffset</a> + insn.<a class="code" href="structInternalInstruction.html#a3bbafa345f93ec20312858606ce8983a">immediateSize</a>;
+<a name="l00406"></a>00406     <span class="comment">// fall through to sign extend the immediate if needed.</span>
+<a name="l00407"></a>00407   <span class="keywordflow">case</span> TYPE_MOFFS32:
+<a name="l00408"></a>00408     <span class="keywordflow">if</span>(immediate & 0x80000000)
+<a name="l00409"></a>00409       immediate |= ~(0xffffffffull);
+<a name="l00410"></a>00410     <span class="keywordflow">break</span>;
+<a name="l00411"></a>00411   <span class="keywordflow">case</span> TYPE_MOFFS64:
+<a name="l00412"></a>00412   <span class="keywordflow">default</span>:
+<a name="l00413"></a>00413     <span class="comment">// operand is 64 bits wide.  Do nothing.</span>
+<a name="l00414"></a>00414     <span class="keywordflow">break</span>;
+<a name="l00415"></a>00415   }
+<a name="l00416"></a>00416     
+<a name="l00417"></a>00417   <span class="keywordflow">if</span>(!<a class="code" href="X86Disassembler_8cpp.html#ac63f5f7f7ea93a855351d62632358d66">tryAddingSymbolicOperand</a>(immediate + pcrel, isBranch, insn.<a class="code" href="structInternalInstruction.html#a3a55e24e218c4bff1f03ef64da4c3725">startLocation</a>,
+<a name="l00418"></a>00418                                insn.<a class="code" href="structInternalInstruction.html#a5d8adf5f8eca4b73382be0133e570460">immediateOffset</a>, insn.<a class="code" href="structInternalInstruction.html#a3bbafa345f93ec20312858606ce8983a">immediateSize</a>,
+<a name="l00419"></a>00419                                mcInst, Dis))
+<a name="l00420"></a>00420     mcInst.<a class="code" href="classllvm_1_1MCInst.html#af5530910b07aa0c82adbc555dfc04fce">addOperand</a>(<a class="code" href="classllvm_1_1MCOperand.html#ad26f3c85c2f3b28caa4e9a7522e0d7bd">MCOperand::CreateImm</a>(immediate));
+<a name="l00421"></a>00421 }
+<a name="l00422"></a>00422 <span class="comment"></span>
+<a name="l00423"></a>00423 <span class="comment">/// translateRMRegister - Translates a register stored in the R/M field of the</span>
+<a name="l00424"></a>00424 <span class="comment">///   ModR/M byte to its LLVM equivalent and appends it to an MCInst.</span>
+<a name="l00425"></a>00425 <span class="comment">/// @param mcInst       - The MCInst to append to.</span>
+<a name="l00426"></a>00426 <span class="comment">/// @param insn         - The internal instruction to extract the R/M field</span>
+<a name="l00427"></a>00427 <span class="comment">///                       from.</span>
+<a name="l00428"></a>00428 <span class="comment">/// @return             - 0 on success; -1 otherwise</span>
+<a name="l00429"></a><a class="code" href="X86Disassembler_8cpp.html#aea1e232218bf327acf353b1f07db2f86">00429</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="X86Disassembler_8cpp.html#aea1e232218bf327acf353b1f07db2f86">translateRMRegister</a>(<a class="code" href="classllvm_1_1MCInst.html">MCInst</a> &mcInst,
+<a name="l00430"></a>00430                                 <a class="code" href="structInternalInstruction.html">InternalInstruction</a> &insn) {
+<a name="l00431"></a>00431   <span class="keywordflow">if</span> (insn.<a class="code" href="structInternalInstruction.html#abe6c3d2f697137970d48ad392ec9d26d">eaBase</a> == EA_BASE_sib || insn.<a class="code" href="structInternalInstruction.html#abe6c3d2f697137970d48ad392ec9d26d">eaBase</a> == EA_BASE_sib64) {
+<a name="l00432"></a>00432     <a class="code" href="X86Disassembler_8cpp.html#ae0228f36529f75f692753ef96d725012">debug</a>(<span class="stringliteral">"A R/M register operand may not have a SIB byte"</span>);
+<a name="l00433"></a>00433     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00434"></a>00434   }
+<a name="l00435"></a>00435   
+<a name="l00436"></a>00436   <span class="keywordflow">switch</span> (insn.<a class="code" href="structInternalInstruction.html#abe6c3d2f697137970d48ad392ec9d26d">eaBase</a>) {
+<a name="l00437"></a>00437   <span class="keywordflow">default</span>:
+<a name="l00438"></a>00438     <a class="code" href="X86Disassembler_8cpp.html#ae0228f36529f75f692753ef96d725012">debug</a>(<span class="stringliteral">"Unexpected EA base register"</span>);
+<a name="l00439"></a>00439     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00440"></a>00440   <span class="keywordflow">case</span> <a class="code" href="X86DisassemblerDecoder_8h.html#afc689603f1848ec33ddbac69b8aa1e95a546e3bf7a78bafabd50fbf842b0e87c5">EA_BASE_NONE</a>:
+<a name="l00441"></a>00441     <a class="code" href="X86Disassembler_8cpp.html#ae0228f36529f75f692753ef96d725012">debug</a>(<span class="stringliteral">"EA_BASE_NONE for ModR/M base"</span>);
+<a name="l00442"></a>00442     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00443"></a>00443 <span class="preprocessor">#define ENTRY(x) case EA_BASE_##x:</span>
+<a name="l00444"></a>00444 <span class="preprocessor"></span>  <a class="code" href="X86DisassemblerDecoder_8h.html#ae1c2d19d6110a95f79a5e8cbe1f6e007">ALL_EA_BASES</a>
+<a name="l00445"></a>00445 <span class="preprocessor">#undef ENTRY</span>
+<a name="l00446"></a>00446 <span class="preprocessor"></span>    <a class="code" href="X86Disassembler_8cpp.html#ae0228f36529f75f692753ef96d725012">debug</a>(<span class="stringliteral">"A R/M register operand may not have a base; "</span>
+<a name="l00447"></a>00447           <span class="stringliteral">"the operand must be a register."</span>);
+<a name="l00448"></a>00448     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00449"></a>00449 <span class="preprocessor">#define ENTRY(x)                                                      \</span>
+<a name="l00450"></a>00450 <span class="preprocessor">  case EA_REG_##x:                                                    \</span>
+<a name="l00451"></a>00451 <span class="preprocessor">    mcInst.addOperand(MCOperand::CreateReg(X86::x)); break;</span>
+<a name="l00452"></a>00452 <span class="preprocessor"></span>  <a class="code" href="X86DisassemblerDecoder_8h.html#a8f4c518929a964ae54a9d42780670cd2">ALL_REGS</a>
+<a name="l00453"></a>00453 <span class="preprocessor">#undef ENTRY</span>
+<a name="l00454"></a>00454 <span class="preprocessor"></span>  }
+<a name="l00455"></a>00455   
+<a name="l00456"></a>00456   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00457"></a>00457 }
+<a name="l00458"></a>00458 <span class="comment"></span>
+<a name="l00459"></a>00459 <span class="comment">/// translateRMMemory - Translates a memory operand stored in the Mod and R/M</span>
+<a name="l00460"></a>00460 <span class="comment">///   fields of an internal instruction (and possibly its SIB byte) to a memory</span>
+<a name="l00461"></a>00461 <span class="comment">///   operand in LLVM's format, and appends it to an MCInst.</span>
+<a name="l00462"></a>00462 <span class="comment">///</span>
+<a name="l00463"></a>00463 <span class="comment">/// @param mcInst       - The MCInst to append to.</span>
+<a name="l00464"></a>00464 <span class="comment">/// @param insn         - The instruction to extract Mod, R/M, and SIB fields</span>
+<a name="l00465"></a>00465 <span class="comment">///                       from.</span>
+<a name="l00466"></a>00466 <span class="comment">/// @return             - 0 on success; nonzero otherwise</span>
+<a name="l00467"></a><a class="code" href="X86Disassembler_8cpp.html#ad1c30e097c62d7d189050daf0e6cbe7b">00467</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="X86Disassembler_8cpp.html#ad1c30e097c62d7d189050daf0e6cbe7b">translateRMMemory</a>(<a class="code" href="classllvm_1_1MCInst.html">MCInst</a> &mcInst, <a class="code" href="structInternalInstruction.html">InternalInstruction</a> &insn,
+<a name="l00468"></a>00468                               <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> *Dis) {  
+<a name="l00469"></a>00469   <span class="comment">// Addresses in an MCInst are represented as five operands:</span>
+<a name="l00470"></a>00470   <span class="comment">//   1. basereg       (register)  The R/M base, or (if there is a SIB) the </span>
+<a name="l00471"></a>00471   <span class="comment">//                                SIB base</span>
+<a name="l00472"></a>00472   <span class="comment">//   2. scaleamount   (immediate) 1, or (if there is a SIB) the specified </span>
+<a name="l00473"></a>00473   <span class="comment">//                                scale amount</span>
+<a name="l00474"></a>00474   <span class="comment">//   3. indexreg      (register)  x86_registerNONE, or (if there is a SIB)</span>
+<a name="l00475"></a>00475   <span class="comment">//                                the index (which is multiplied by the </span>
+<a name="l00476"></a>00476   <span class="comment">//                                scale amount)</span>
+<a name="l00477"></a>00477   <span class="comment">//   4. displacement  (immediate) 0, or the displacement if there is one</span>
+<a name="l00478"></a>00478   <span class="comment">//   5. segmentreg    (register)  x86_registerNONE for now, but could be set</span>
+<a name="l00479"></a>00479   <span class="comment">//                                if we have segment overrides</span>
+<a name="l00480"></a>00480   
+<a name="l00481"></a>00481   <a class="code" href="classllvm_1_1MCOperand.html">MCOperand</a> baseReg;
+<a name="l00482"></a>00482   <a class="code" href="classllvm_1_1MCOperand.html">MCOperand</a> scaleAmount;
+<a name="l00483"></a>00483   <a class="code" href="classllvm_1_1MCOperand.html">MCOperand</a> indexReg;
+<a name="l00484"></a>00484   <a class="code" href="classllvm_1_1MCOperand.html">MCOperand</a> displacement;
+<a name="l00485"></a>00485   <a class="code" href="classllvm_1_1MCOperand.html">MCOperand</a> segmentReg;
+<a name="l00486"></a>00486   uint64_t pcrel = 0;
+<a name="l00487"></a>00487   
+<a name="l00488"></a>00488   <span class="keywordflow">if</span> (insn.<a class="code" href="structInternalInstruction.html#abe6c3d2f697137970d48ad392ec9d26d">eaBase</a> == EA_BASE_sib || insn.<a class="code" href="structInternalInstruction.html#abe6c3d2f697137970d48ad392ec9d26d">eaBase</a> == EA_BASE_sib64) {
+<a name="l00489"></a>00489     <span class="keywordflow">if</span> (insn.<a class="code" href="structInternalInstruction.html#aecf82cd305a89d85270619af42a0b81e">sibBase</a> != <a class="code" href="X86DisassemblerDecoder_8h.html#a7cb9f08e12fcda158bbe0cee76ef61f7a28642d84aadee3992f08c36ca08b16a5">SIB_BASE_NONE</a>) {
+<a name="l00490"></a>00490       <span class="keywordflow">switch</span> (insn.<a class="code" href="structInternalInstruction.html#aecf82cd305a89d85270619af42a0b81e">sibBase</a>) {
+<a name="l00491"></a>00491       <span class="keywordflow">default</span>:
+<a name="l00492"></a>00492         <a class="code" href="X86Disassembler_8cpp.html#ae0228f36529f75f692753ef96d725012">debug</a>(<span class="stringliteral">"Unexpected sibBase"</span>);
+<a name="l00493"></a>00493         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00494"></a>00494 <span class="preprocessor">#define ENTRY(x)                                          \</span>
+<a name="l00495"></a>00495 <span class="preprocessor">      case SIB_BASE_##x:                                  \</span>
+<a name="l00496"></a>00496 <span class="preprocessor">        baseReg = MCOperand::CreateReg(X86::x); break;</span>
+<a name="l00497"></a>00497 <span class="preprocessor"></span>      <a class="code" href="X86DisassemblerDecoder_8h.html#a967004f254ec4b0e36dca9b2db27f139">ALL_SIB_BASES</a>
+<a name="l00498"></a>00498 <span class="preprocessor">#undef ENTRY</span>
+<a name="l00499"></a>00499 <span class="preprocessor"></span>      }
+<a name="l00500"></a>00500     } <span class="keywordflow">else</span> {
+<a name="l00501"></a>00501       baseReg = <a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(0);
+<a name="l00502"></a>00502     }
+<a name="l00503"></a>00503 
+<a name="l00504"></a>00504     <span class="comment">// Check whether we are handling VSIB addressing mode for GATHER.</span>
+<a name="l00505"></a>00505     <span class="comment">// If sibIndex was set to SIB_INDEX_NONE, index offset is 4 and</span>
+<a name="l00506"></a>00506     <span class="comment">// we should use SIB_INDEX_XMM4|YMM4 for VSIB.</span>
+<a name="l00507"></a>00507     <span class="comment">// I don't see a way to get the correct IndexReg in readSIB:</span>
+<a name="l00508"></a>00508     <span class="comment">//   We can tell whether it is VSIB or SIB after instruction ID is decoded,</span>
+<a name="l00509"></a>00509     <span class="comment">//   but instruction ID may not be decoded yet when calling readSIB.</span>
+<a name="l00510"></a>00510     uint32_t Opcode = mcInst.<a class="code" href="classllvm_1_1MCInst.html#a22542ca9978e4b90401edee109c4f263">getOpcode</a>();
+<a name="l00511"></a>00511     <span class="keywordtype">bool</span> IndexIs128 = (Opcode == X86::VGATHERDPDrm ||
+<a name="l00512"></a>00512                        Opcode == X86::VGATHERDPDYrm ||
+<a name="l00513"></a>00513                        Opcode == X86::VGATHERQPDrm ||
+<a name="l00514"></a>00514                        Opcode == X86::VGATHERDPSrm ||
+<a name="l00515"></a>00515                        Opcode == X86::VGATHERQPSrm ||
+<a name="l00516"></a>00516                        Opcode == X86::VPGATHERDQrm ||
+<a name="l00517"></a>00517                        Opcode == X86::VPGATHERDQYrm ||
+<a name="l00518"></a>00518                        Opcode == X86::VPGATHERQQrm ||
+<a name="l00519"></a>00519                        Opcode == X86::VPGATHERDDrm ||
+<a name="l00520"></a>00520                        Opcode == X86::VPGATHERQDrm);
+<a name="l00521"></a>00521     <span class="keywordtype">bool</span> IndexIs256 = (Opcode == X86::VGATHERQPDYrm ||
+<a name="l00522"></a>00522                        Opcode == X86::VGATHERDPSYrm ||
+<a name="l00523"></a>00523                        Opcode == X86::VGATHERQPSYrm ||
+<a name="l00524"></a>00524                        Opcode == X86::VPGATHERQQYrm ||
+<a name="l00525"></a>00525                        Opcode == X86::VPGATHERDDYrm ||
+<a name="l00526"></a>00526                        Opcode == X86::VPGATHERQDYrm);
+<a name="l00527"></a>00527     <span class="keywordflow">if</span> (IndexIs128 || IndexIs256) {
+<a name="l00528"></a>00528       <span class="keywordtype">unsigned</span> IndexOffset = insn.<a class="code" href="structInternalInstruction.html#a0688805de40e76e7694ce3b026f9f41f">sibIndex</a> -
+<a name="l00529"></a>00529                          (insn.<a class="code" href="structInternalInstruction.html#a401714e4eb9715146c94275270515ba9">addressSize</a> == 8 ? SIB_INDEX_RAX:SIB_INDEX_EAX);
+<a name="l00530"></a>00530       <a class="code" href="X86DisassemblerDecoder_8h.html#a2af8cf971611d096b00b34eece806adb">SIBIndex</a> IndexBase = IndexIs256 ? SIB_INDEX_YMM0 : SIB_INDEX_XMM0;
+<a name="l00531"></a>00531       insn.<a class="code" href="structInternalInstruction.html#a0688805de40e76e7694ce3b026f9f41f">sibIndex</a> = (<a class="code" href="X86DisassemblerDecoder_8h.html#a2af8cf971611d096b00b34eece806adb">SIBIndex</a>)(IndexBase + 
+<a name="l00532"></a>00532                            (insn.<a class="code" href="structInternalInstruction.html#a0688805de40e76e7694ce3b026f9f41f">sibIndex</a> == <a class="code" href="X86DisassemblerDecoder_8h.html#a2af8cf971611d096b00b34eece806adba3d035927a65ed81a8869a3f64f669bd0">SIB_INDEX_NONE</a> ? 4 : IndexOffset));
+<a name="l00533"></a>00533     }
+<a name="l00534"></a>00534 
+<a name="l00535"></a>00535     <span class="keywordflow">if</span> (insn.<a class="code" href="structInternalInstruction.html#a0688805de40e76e7694ce3b026f9f41f">sibIndex</a> != <a class="code" href="X86DisassemblerDecoder_8h.html#a2af8cf971611d096b00b34eece806adba3d035927a65ed81a8869a3f64f669bd0">SIB_INDEX_NONE</a>) {
+<a name="l00536"></a>00536       <span class="keywordflow">switch</span> (insn.<a class="code" href="structInternalInstruction.html#a0688805de40e76e7694ce3b026f9f41f">sibIndex</a>) {
+<a name="l00537"></a>00537       <span class="keywordflow">default</span>:
+<a name="l00538"></a>00538         <a class="code" href="X86Disassembler_8cpp.html#ae0228f36529f75f692753ef96d725012">debug</a>(<span class="stringliteral">"Unexpected sibIndex"</span>);
+<a name="l00539"></a>00539         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00540"></a>00540 <span class="preprocessor">#define ENTRY(x)                                          \</span>
+<a name="l00541"></a>00541 <span class="preprocessor">      case SIB_INDEX_##x:                                 \</span>
+<a name="l00542"></a>00542 <span class="preprocessor">        indexReg = MCOperand::CreateReg(X86::x); break;</span>
+<a name="l00543"></a>00543 <span class="preprocessor"></span>      <a class="code" href="X86DisassemblerDecoder_8h.html#aa49626340dd008810da4c2f48358f4e5">EA_BASES_32BIT</a>
+<a name="l00544"></a>00544       <a class="code" href="X86DisassemblerDecoder_8h.html#a67e6e1688bcff4c9ea17a36f5cd8b8b0">EA_BASES_64BIT</a>
+<a name="l00545"></a>00545       <a class="code" href="X86DisassemblerDecoder_8h.html#a7c194da583ffb0dd2fab50331e4cbc41">REGS_XMM</a>
+<a name="l00546"></a>00546       <a class="code" href="X86DisassemblerDecoder_8h.html#a6fc6928518e9a8c348d985bec97d382e">REGS_YMM</a>
+<a name="l00547"></a>00547 <span class="preprocessor">#undef ENTRY</span>
+<a name="l00548"></a>00548 <span class="preprocessor"></span>      }
+<a name="l00549"></a>00549     } <span class="keywordflow">else</span> {
+<a name="l00550"></a>00550       indexReg = <a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(0);
+<a name="l00551"></a>00551     }
+<a name="l00552"></a>00552     
+<a name="l00553"></a>00553     scaleAmount = <a class="code" href="classllvm_1_1MCOperand.html#ad26f3c85c2f3b28caa4e9a7522e0d7bd">MCOperand::CreateImm</a>(insn.<a class="code" href="structInternalInstruction.html#aa88adec45f0f554d53e34401e24cde8d">sibScale</a>);
+<a name="l00554"></a>00554   } <span class="keywordflow">else</span> {
+<a name="l00555"></a>00555     <span class="keywordflow">switch</span> (insn.<a class="code" href="structInternalInstruction.html#abe6c3d2f697137970d48ad392ec9d26d">eaBase</a>) {
+<a name="l00556"></a>00556     <span class="keywordflow">case</span> <a class="code" href="X86DisassemblerDecoder_8h.html#afc689603f1848ec33ddbac69b8aa1e95a546e3bf7a78bafabd50fbf842b0e87c5">EA_BASE_NONE</a>:
+<a name="l00557"></a>00557       <span class="keywordflow">if</span> (insn.<a class="code" href="structInternalInstruction.html#a15f66c4fc5e09ff60f592a643f68eab3">eaDisplacement</a> == <a class="code" href="X86DisassemblerDecoder_8h.html#a86b3ea534df3a598db89d7d5ff581112a377f7990be2aed8d7547befd58ba4bfc">EA_DISP_NONE</a>) {
+<a name="l00558"></a>00558         <a class="code" href="X86Disassembler_8cpp.html#ae0228f36529f75f692753ef96d725012">debug</a>(<span class="stringliteral">"EA_BASE_NONE and EA_DISP_NONE for ModR/M base"</span>);
+<a name="l00559"></a>00559         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00560"></a>00560       }
+<a name="l00561"></a>00561       <span class="keywordflow">if</span> (insn.<a class="code" href="structInternalInstruction.html#a960c71a88602e7284b7a53a43c0d5c04">mode</a> == <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a549ce06ad85d0726a93b2768ae7c7da7aeaebd8c1fe2b71a386838da0280c211c">MODE_64BIT</a>){
+<a name="l00562"></a>00562         pcrel = insn.<a class="code" href="structInternalInstruction.html#a3a55e24e218c4bff1f03ef64da4c3725">startLocation</a> +
+<a name="l00563"></a>00563                 insn.<a class="code" href="structInternalInstruction.html#ac235f78a50feb97426e7f8149591a08c">displacementOffset</a> + insn.<a class="code" href="structInternalInstruction.html#a5b5e7cd9bb41153cfa4b6ea81e0d1b09">displacementSize</a>;
+<a name="l00564"></a>00564         <a class="code" href="X86Disassembler_8cpp.html#aeac70eb217b5b7b122e05d1ed5518d9c">tryAddingPcLoadReferenceComment</a>(insn.<a class="code" href="structInternalInstruction.html#a3a55e24e218c4bff1f03ef64da4c3725">startLocation</a> +
+<a name="l00565"></a>00565                                         insn.<a class="code" href="structInternalInstruction.html#ac235f78a50feb97426e7f8149591a08c">displacementOffset</a>,
+<a name="l00566"></a>00566                                         insn.<a class="code" href="structInternalInstruction.html#a309eb7e0aad285e543bf18e55948bb5e">displacement</a> + pcrel, Dis);
+<a name="l00567"></a>00567         baseReg = <a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(X86::RIP); <span class="comment">// Section 2.2.1.6</span>
+<a name="l00568"></a>00568       }
+<a name="l00569"></a>00569       <span class="keywordflow">else</span>
+<a name="l00570"></a>00570         baseReg = <a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(0);
+<a name="l00571"></a>00571       
+<a name="l00572"></a>00572       indexReg = <a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(0);
+<a name="l00573"></a>00573       <span class="keywordflow">break</span>;
+<a name="l00574"></a>00574     <span class="keywordflow">case</span> EA_BASE_BX_SI:
+<a name="l00575"></a>00575       baseReg = <a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(X86::BX);
+<a name="l00576"></a>00576       indexReg = <a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(X86::SI);
+<a name="l00577"></a>00577       <span class="keywordflow">break</span>;
+<a name="l00578"></a>00578     <span class="keywordflow">case</span> EA_BASE_BX_DI:
+<a name="l00579"></a>00579       baseReg = <a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(X86::BX);
+<a name="l00580"></a>00580       indexReg = <a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(X86::DI);
+<a name="l00581"></a>00581       <span class="keywordflow">break</span>;
+<a name="l00582"></a>00582     <span class="keywordflow">case</span> EA_BASE_BP_SI:
+<a name="l00583"></a>00583       baseReg = <a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(X86::BP);
+<a name="l00584"></a>00584       indexReg = <a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(X86::SI);
+<a name="l00585"></a>00585       <span class="keywordflow">break</span>;
+<a name="l00586"></a>00586     <span class="keywordflow">case</span> EA_BASE_BP_DI:
+<a name="l00587"></a>00587       baseReg = <a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(X86::BP);
+<a name="l00588"></a>00588       indexReg = <a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(X86::DI);
+<a name="l00589"></a>00589       <span class="keywordflow">break</span>;
+<a name="l00590"></a>00590     <span class="keywordflow">default</span>:
+<a name="l00591"></a>00591       indexReg = <a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(0);
+<a name="l00592"></a>00592       <span class="keywordflow">switch</span> (insn.<a class="code" href="structInternalInstruction.html#abe6c3d2f697137970d48ad392ec9d26d">eaBase</a>) {
+<a name="l00593"></a>00593       <span class="keywordflow">default</span>:
+<a name="l00594"></a>00594         <a class="code" href="X86Disassembler_8cpp.html#ae0228f36529f75f692753ef96d725012">debug</a>(<span class="stringliteral">"Unexpected eaBase"</span>);
+<a name="l00595"></a>00595         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00596"></a>00596         <span class="comment">// Here, we will use the fill-ins defined above.  However,</span>
+<a name="l00597"></a>00597         <span class="comment">//   BX_SI, BX_DI, BP_SI, and BP_DI are all handled above and</span>
+<a name="l00598"></a>00598         <span class="comment">//   sib and sib64 were handled in the top-level if, so they're only</span>
+<a name="l00599"></a>00599         <span class="comment">//   placeholders to keep the compiler happy.</span>
+<a name="l00600"></a>00600 <span class="preprocessor">#define ENTRY(x)                                        \</span>
+<a name="l00601"></a>00601 <span class="preprocessor">      case EA_BASE_##x:                                 \</span>
+<a name="l00602"></a>00602 <span class="preprocessor">        baseReg = MCOperand::CreateReg(X86::x); break; </span>
+<a name="l00603"></a>00603 <span class="preprocessor"></span>      <a class="code" href="X86DisassemblerDecoder_8h.html#ae1c2d19d6110a95f79a5e8cbe1f6e007">ALL_EA_BASES</a>
+<a name="l00604"></a>00604 <span class="preprocessor">#undef ENTRY</span>
+<a name="l00605"></a>00605 <span class="preprocessor"></span><span class="preprocessor">#define ENTRY(x) case EA_REG_##x:</span>
+<a name="l00606"></a>00606 <span class="preprocessor"></span>      <a class="code" href="X86DisassemblerDecoder_8h.html#a8f4c518929a964ae54a9d42780670cd2">ALL_REGS</a>
+<a name="l00607"></a>00607 <span class="preprocessor">#undef ENTRY</span>
+<a name="l00608"></a>00608 <span class="preprocessor"></span>        <a class="code" href="X86Disassembler_8cpp.html#ae0228f36529f75f692753ef96d725012">debug</a>(<span class="stringliteral">"A R/M memory operand may not be a register; "</span>
+<a name="l00609"></a>00609               <span class="stringliteral">"the base field must be a base."</span>);
+<a name="l00610"></a>00610         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00611"></a>00611       }
+<a name="l00612"></a>00612     }
+<a name="l00613"></a>00613     
+<a name="l00614"></a>00614     scaleAmount = <a class="code" href="classllvm_1_1MCOperand.html#ad26f3c85c2f3b28caa4e9a7522e0d7bd">MCOperand::CreateImm</a>(1);
+<a name="l00615"></a>00615   }
+<a name="l00616"></a>00616   
+<a name="l00617"></a>00617   displacement = <a class="code" href="classllvm_1_1MCOperand.html#ad26f3c85c2f3b28caa4e9a7522e0d7bd">MCOperand::CreateImm</a>(insn.<a class="code" href="structInternalInstruction.html#a309eb7e0aad285e543bf18e55948bb5e">displacement</a>);
+<a name="l00618"></a>00618   
+<a name="l00619"></a>00619   <span class="keyword">static</span> <span class="keyword">const</span> uint8_t segmentRegnums[<a class="code" href="X86DisassemblerDecoder_8h.html#a678cc792a7ece4943c203fd18e57ad46a2455fce77c2692279ca526d892cbba94">SEG_OVERRIDE_max</a>] = {
+<a name="l00620"></a>00620     0,        <span class="comment">// SEG_OVERRIDE_NONE</span>
+<a name="l00621"></a>00621     X86::CS,
+<a name="l00622"></a>00622     X86::SS,
+<a name="l00623"></a>00623     X86::DS,
+<a name="l00624"></a>00624     X86::ES,
+<a name="l00625"></a>00625     <a class="code" href="namespacellvm_1_1X86II.html#acd283bc8136a594505ec483f4a1cc933a50aa2061845b3ff4e6e2242d762c6a80">X86::FS</a>,
+<a name="l00626"></a>00626     <a class="code" href="namespacellvm_1_1X86II.html#acd283bc8136a594505ec483f4a1cc933acdc4d0fa74813b50797e25bab4febe70">X86::GS</a>
+<a name="l00627"></a>00627   };
+<a name="l00628"></a>00628   
+<a name="l00629"></a>00629   segmentReg = <a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(segmentRegnums[insn.<a class="code" href="structInternalInstruction.html#afe0d37da2b3ba81a20c6c2b40b58e6e3">segmentOverride</a>]);
+<a name="l00630"></a>00630   
+<a name="l00631"></a>00631   mcInst.<a class="code" href="classllvm_1_1MCInst.html#af5530910b07aa0c82adbc555dfc04fce">addOperand</a>(baseReg);
+<a name="l00632"></a>00632   mcInst.<a class="code" href="classllvm_1_1MCInst.html#af5530910b07aa0c82adbc555dfc04fce">addOperand</a>(scaleAmount);
+<a name="l00633"></a>00633   mcInst.<a class="code" href="classllvm_1_1MCInst.html#af5530910b07aa0c82adbc555dfc04fce">addOperand</a>(indexReg);
+<a name="l00634"></a>00634   <span class="keywordflow">if</span>(!<a class="code" href="X86Disassembler_8cpp.html#ac63f5f7f7ea93a855351d62632358d66">tryAddingSymbolicOperand</a>(insn.<a class="code" href="structInternalInstruction.html#a309eb7e0aad285e543bf18e55948bb5e">displacement</a> + pcrel, <span class="keyword">false</span>,
+<a name="l00635"></a>00635                                insn.<a class="code" href="structInternalInstruction.html#a3a55e24e218c4bff1f03ef64da4c3725">startLocation</a>, insn.<a class="code" href="structInternalInstruction.html#ac235f78a50feb97426e7f8149591a08c">displacementOffset</a>,
+<a name="l00636"></a>00636                                insn.<a class="code" href="structInternalInstruction.html#a5b5e7cd9bb41153cfa4b6ea81e0d1b09">displacementSize</a>, mcInst, Dis))
+<a name="l00637"></a>00637     mcInst.<a class="code" href="classllvm_1_1MCInst.html#af5530910b07aa0c82adbc555dfc04fce">addOperand</a>(displacement);
+<a name="l00638"></a>00638   mcInst.<a class="code" href="classllvm_1_1MCInst.html#af5530910b07aa0c82adbc555dfc04fce">addOperand</a>(segmentReg);
+<a name="l00639"></a>00639   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00640"></a>00640 }
+<a name="l00641"></a>00641 <span class="comment"></span>
+<a name="l00642"></a>00642 <span class="comment">/// translateRM - Translates an operand stored in the R/M (and possibly SIB)</span>
+<a name="l00643"></a>00643 <span class="comment">///   byte of an instruction to LLVM form, and appends it to an MCInst.</span>
+<a name="l00644"></a>00644 <span class="comment">///</span>
+<a name="l00645"></a>00645 <span class="comment">/// @param mcInst       - The MCInst to append to.</span>
+<a name="l00646"></a>00646 <span class="comment">/// @param operand      - The operand, as stored in the descriptor table.</span>
+<a name="l00647"></a>00647 <span class="comment">/// @param insn         - The instruction to extract Mod, R/M, and SIB fields</span>
+<a name="l00648"></a>00648 <span class="comment">///                       from.</span>
+<a name="l00649"></a>00649 <span class="comment">/// @return             - 0 on success; nonzero otherwise</span>
+<a name="l00650"></a><a class="code" href="X86Disassembler_8cpp.html#aace6b74b8ffb4a67a94c8720813f18c2">00650</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="X86Disassembler_8cpp.html#aace6b74b8ffb4a67a94c8720813f18c2">translateRM</a>(<a class="code" href="classllvm_1_1MCInst.html">MCInst</a> &mcInst, <span class="keyword">const</span> <a class="code" href="structOperandSpecifier.html">OperandSpecifier</a> &operand,
+<a name="l00651"></a>00651                         <a class="code" href="structInternalInstruction.html">InternalInstruction</a> &insn, <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> *Dis) {  
+<a name="l00652"></a>00652   <span class="keywordflow">switch</span> (operand.<a class="code" href="structOperandSpecifier.html#aea1718df991133d6972a0bfadc66cfbf">type</a>) {
+<a name="l00653"></a>00653   <span class="keywordflow">default</span>:
+<a name="l00654"></a>00654     <a class="code" href="X86Disassembler_8cpp.html#ae0228f36529f75f692753ef96d725012">debug</a>(<span class="stringliteral">"Unexpected type for a R/M operand"</span>);
+<a name="l00655"></a>00655     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00656"></a>00656   <span class="keywordflow">case</span> TYPE_R8:
+<a name="l00657"></a>00657   <span class="keywordflow">case</span> TYPE_R16:
+<a name="l00658"></a>00658   <span class="keywordflow">case</span> TYPE_R32:
+<a name="l00659"></a>00659   <span class="keywordflow">case</span> TYPE_R64:
+<a name="l00660"></a>00660   <span class="keywordflow">case</span> TYPE_Rv:
+<a name="l00661"></a>00661   <span class="keywordflow">case</span> TYPE_MM:
+<a name="l00662"></a>00662   <span class="keywordflow">case</span> TYPE_MM32:
+<a name="l00663"></a>00663   <span class="keywordflow">case</span> TYPE_MM64:
+<a name="l00664"></a>00664   <span class="keywordflow">case</span> TYPE_XMM:
+<a name="l00665"></a>00665   <span class="keywordflow">case</span> TYPE_XMM32:
+<a name="l00666"></a>00666   <span class="keywordflow">case</span> TYPE_XMM64:
+<a name="l00667"></a>00667   <span class="keywordflow">case</span> TYPE_XMM128:
+<a name="l00668"></a>00668   <span class="keywordflow">case</span> TYPE_XMM256:
+<a name="l00669"></a>00669   <span class="keywordflow">case</span> TYPE_DEBUGREG:
+<a name="l00670"></a>00670   <span class="keywordflow">case</span> TYPE_CONTROLREG:
+<a name="l00671"></a>00671     <span class="keywordflow">return</span> <a class="code" href="X86Disassembler_8cpp.html#aea1e232218bf327acf353b1f07db2f86">translateRMRegister</a>(mcInst, insn);
+<a name="l00672"></a>00672   <span class="keywordflow">case</span> TYPE_M:
+<a name="l00673"></a>00673   <span class="keywordflow">case</span> TYPE_M8:
+<a name="l00674"></a>00674   <span class="keywordflow">case</span> TYPE_M16:
+<a name="l00675"></a>00675   <span class="keywordflow">case</span> TYPE_M32:
+<a name="l00676"></a>00676   <span class="keywordflow">case</span> TYPE_M64:
+<a name="l00677"></a>00677   <span class="keywordflow">case</span> TYPE_M128:
+<a name="l00678"></a>00678   <span class="keywordflow">case</span> TYPE_M256:
+<a name="l00679"></a>00679   <span class="keywordflow">case</span> TYPE_M512:
+<a name="l00680"></a>00680   <span class="keywordflow">case</span> TYPE_Mv:
+<a name="l00681"></a>00681   <span class="keywordflow">case</span> TYPE_M32FP:
+<a name="l00682"></a>00682   <span class="keywordflow">case</span> TYPE_M64FP:
+<a name="l00683"></a>00683   <span class="keywordflow">case</span> TYPE_M80FP:
+<a name="l00684"></a>00684   <span class="keywordflow">case</span> TYPE_M16INT:
+<a name="l00685"></a>00685   <span class="keywordflow">case</span> TYPE_M32INT:
+<a name="l00686"></a>00686   <span class="keywordflow">case</span> TYPE_M64INT:
+<a name="l00687"></a>00687   <span class="keywordflow">case</span> TYPE_M1616:
+<a name="l00688"></a>00688   <span class="keywordflow">case</span> TYPE_M1632:
+<a name="l00689"></a>00689   <span class="keywordflow">case</span> TYPE_M1664:
+<a name="l00690"></a>00690   <span class="keywordflow">case</span> TYPE_LEA:
+<a name="l00691"></a>00691     <span class="keywordflow">return</span> <a class="code" href="X86Disassembler_8cpp.html#ad1c30e097c62d7d189050daf0e6cbe7b">translateRMMemory</a>(mcInst, insn, Dis);
+<a name="l00692"></a>00692   }
+<a name="l00693"></a>00693 }
+<a name="l00694"></a>00694   <span class="comment"></span>
+<a name="l00695"></a>00695 <span class="comment">/// translateFPRegister - Translates a stack position on the FPU stack to its</span>
+<a name="l00696"></a>00696 <span class="comment">///   LLVM form, and appends it to an MCInst.</span>
+<a name="l00697"></a>00697 <span class="comment">///</span>
+<a name="l00698"></a>00698 <span class="comment">/// @param mcInst       - The MCInst to append to.</span>
+<a name="l00699"></a>00699 <span class="comment">/// @param stackPos     - The stack position to translate.</span>
+<a name="l00700"></a>00700 <span class="comment">/// @return             - 0 on success; nonzero otherwise.</span>
+<a name="l00701"></a><a class="code" href="X86Disassembler_8cpp.html#ab39836b0e9db7069ddbd0f422dbf2a51">00701</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="X86Disassembler_8cpp.html#ab39836b0e9db7069ddbd0f422dbf2a51">translateFPRegister</a>(<a class="code" href="classllvm_1_1MCInst.html">MCInst</a> &mcInst,
+<a name="l00702"></a>00702                                uint8_t stackPos) {
+<a name="l00703"></a>00703   <span class="keywordflow">if</span> (stackPos >= 8) {
+<a name="l00704"></a>00704     <a class="code" href="X86Disassembler_8cpp.html#ae0228f36529f75f692753ef96d725012">debug</a>(<span class="stringliteral">"Invalid FP stack position"</span>);
+<a name="l00705"></a>00705     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00706"></a>00706   }
+<a name="l00707"></a>00707   
+<a name="l00708"></a>00708   mcInst.<a class="code" href="classllvm_1_1MCInst.html#af5530910b07aa0c82adbc555dfc04fce">addOperand</a>(<a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(X86::ST0 + stackPos));
+<a name="l00709"></a>00709 
+<a name="l00710"></a>00710   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00711"></a>00711 }
+<a name="l00712"></a>00712 <span class="comment"></span>
+<a name="l00713"></a>00713 <span class="comment">/// translateOperand - Translates an operand stored in an internal instruction </span>
+<a name="l00714"></a>00714 <span class="comment">///   to LLVM's format and appends it to an MCInst.</span>
+<a name="l00715"></a>00715 <span class="comment">///</span>
+<a name="l00716"></a>00716 <span class="comment">/// @param mcInst       - The MCInst to append to.</span>
+<a name="l00717"></a>00717 <span class="comment">/// @param operand      - The operand, as stored in the descriptor table.</span>
+<a name="l00718"></a>00718 <span class="comment">/// @param insn         - The internal instruction.</span>
+<a name="l00719"></a>00719 <span class="comment">/// @return             - false on success; true otherwise.</span>
+<a name="l00720"></a><a class="code" href="X86Disassembler_8cpp.html#aeb806eaaca65c1a593f5af3078798819">00720</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="X86Disassembler_8cpp.html#aeb806eaaca65c1a593f5af3078798819">translateOperand</a>(<a class="code" href="classllvm_1_1MCInst.html">MCInst</a> &mcInst, <span class="keyword">const</span> <a class="code" href="structOperandSpecifier.html">OperandSpecifier</a> &operand,
+<a name="l00721"></a>00721                              <a class="code" href="structInternalInstruction.html">InternalInstruction</a> &insn,
+<a name="l00722"></a>00722                              <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> *Dis) {  
+<a name="l00723"></a>00723   <span class="keywordflow">switch</span> (operand.<a class="code" href="structOperandSpecifier.html#af8374a1a0bbfe5c8e5508f8482aae67b">encoding</a>) {
+<a name="l00724"></a>00724   <span class="keywordflow">default</span>:
+<a name="l00725"></a>00725     <a class="code" href="X86Disassembler_8cpp.html#ae0228f36529f75f692753ef96d725012">debug</a>(<span class="stringliteral">"Unhandled operand encoding during translation"</span>);
+<a name="l00726"></a>00726     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00727"></a>00727   <span class="keywordflow">case</span> ENCODING_REG:
+<a name="l00728"></a>00728     <a class="code" href="X86Disassembler_8cpp.html#a06e3b1499180a2b92acc66f9203ac920">translateRegister</a>(mcInst, insn.<a class="code" href="structInternalInstruction.html#a04cb5db41677eb5617f830ad43744861">reg</a>);
+<a name="l00729"></a>00729     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00730"></a>00730   <span class="keywordflow">case</span> ENCODING_RM:
+<a name="l00731"></a>00731     <span class="keywordflow">return</span> <a class="code" href="X86Disassembler_8cpp.html#aace6b74b8ffb4a67a94c8720813f18c2">translateRM</a>(mcInst, operand, insn, Dis);
+<a name="l00732"></a>00732   <span class="keywordflow">case</span> ENCODING_CB:
+<a name="l00733"></a>00733   <span class="keywordflow">case</span> ENCODING_CW:
+<a name="l00734"></a>00734   <span class="keywordflow">case</span> ENCODING_CD:
+<a name="l00735"></a>00735   <span class="keywordflow">case</span> ENCODING_CP:
+<a name="l00736"></a>00736   <span class="keywordflow">case</span> ENCODING_CO:
+<a name="l00737"></a>00737   <span class="keywordflow">case</span> ENCODING_CT:
+<a name="l00738"></a>00738     <a class="code" href="X86Disassembler_8cpp.html#ae0228f36529f75f692753ef96d725012">debug</a>(<span class="stringliteral">"Translation of code offsets isn't supported."</span>);
+<a name="l00739"></a>00739     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00740"></a>00740   <span class="keywordflow">case</span> ENCODING_IB:
+<a name="l00741"></a>00741   <span class="keywordflow">case</span> ENCODING_IW:
+<a name="l00742"></a>00742   <span class="keywordflow">case</span> ENCODING_ID:
+<a name="l00743"></a>00743   <span class="keywordflow">case</span> ENCODING_IO:
+<a name="l00744"></a>00744   <span class="keywordflow">case</span> ENCODING_Iv:
+<a name="l00745"></a>00745   <span class="keywordflow">case</span> ENCODING_Ia:
+<a name="l00746"></a>00746     <a class="code" href="X86Disassembler_8cpp.html#a409baefdf6be89e38deebefb129c1978">translateImmediate</a>(mcInst,
+<a name="l00747"></a>00747                        insn.<a class="code" href="structInternalInstruction.html#ab5314a93238a56e68a1c9d79bec379fd">immediates</a>[insn.<a class="code" href="structInternalInstruction.html#ac5f51c961d719eef66fb21bd4c89d04e">numImmediatesTranslated</a>++],
+<a name="l00748"></a>00748                        operand,
+<a name="l00749"></a>00749                        insn,
+<a name="l00750"></a>00750                        Dis);
+<a name="l00751"></a>00751     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00752"></a>00752   <span class="keywordflow">case</span> ENCODING_RB:
+<a name="l00753"></a>00753   <span class="keywordflow">case</span> ENCODING_RW:
+<a name="l00754"></a>00754   <span class="keywordflow">case</span> ENCODING_RD:
+<a name="l00755"></a>00755   <span class="keywordflow">case</span> ENCODING_RO:
+<a name="l00756"></a>00756     <a class="code" href="X86Disassembler_8cpp.html#a06e3b1499180a2b92acc66f9203ac920">translateRegister</a>(mcInst, insn.<a class="code" href="structInternalInstruction.html#a2353992733d9d87cede9036141b49003">opcodeRegister</a>);
+<a name="l00757"></a>00757     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00758"></a>00758   <span class="keywordflow">case</span> ENCODING_I:
+<a name="l00759"></a>00759     <span class="keywordflow">return</span> <a class="code" href="X86Disassembler_8cpp.html#ab39836b0e9db7069ddbd0f422dbf2a51">translateFPRegister</a>(mcInst, insn.<a class="code" href="structInternalInstruction.html#ae69f63a63b1294cc7f67388b7afd93cd">opcodeModifier</a>);
+<a name="l00760"></a>00760   <span class="keywordflow">case</span> ENCODING_Rv:
+<a name="l00761"></a>00761     <a class="code" href="X86Disassembler_8cpp.html#a06e3b1499180a2b92acc66f9203ac920">translateRegister</a>(mcInst, insn.<a class="code" href="structInternalInstruction.html#a2353992733d9d87cede9036141b49003">opcodeRegister</a>);
+<a name="l00762"></a>00762     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00763"></a>00763   <span class="keywordflow">case</span> ENCODING_VVVV:
+<a name="l00764"></a>00764     <a class="code" href="X86Disassembler_8cpp.html#a06e3b1499180a2b92acc66f9203ac920">translateRegister</a>(mcInst, insn.<a class="code" href="structInternalInstruction.html#a0f0d4f1135621b45a79af03c3ad02bf4">vvvv</a>);
+<a name="l00765"></a>00765     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00766"></a>00766   <span class="keywordflow">case</span> ENCODING_DUP:
+<a name="l00767"></a>00767     <span class="keywordflow">return</span> <a class="code" href="X86Disassembler_8cpp.html#aeb806eaaca65c1a593f5af3078798819">translateOperand</a>(mcInst, insn.<a class="code" href="structInternalInstruction.html#aa9a4db80146a384e9aee369f10294884">operands</a>[operand.<a class="code" href="structOperandSpecifier.html#aea1718df991133d6972a0bfadc66cfbf">type</a> - TYPE_DUP0],
+<a name="l00768"></a>00768                             insn, Dis);
+<a name="l00769"></a>00769   }
+<a name="l00770"></a>00770 }
+<a name="l00771"></a>00771   <span class="comment"></span>
+<a name="l00772"></a>00772 <span class="comment">/// translateInstruction - Translates an internal instruction and all its</span>
+<a name="l00773"></a>00773 <span class="comment">///   operands to an MCInst.</span>
+<a name="l00774"></a>00774 <span class="comment">///</span>
+<a name="l00775"></a>00775 <span class="comment">/// @param mcInst       - The MCInst to populate with the instruction's data.</span>
+<a name="l00776"></a>00776 <span class="comment">/// @param insn         - The internal instruction.</span>
+<a name="l00777"></a>00777 <span class="comment">/// @return             - false on success; true otherwise.</span>
+<a name="l00778"></a><a class="code" href="X86Disassembler_8cpp.html#aa7c2d86a8c8ecfb0cd3627aceac7afb6">00778</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="X86Disassembler_8cpp.html#aa7c2d86a8c8ecfb0cd3627aceac7afb6">translateInstruction</a>(<a class="code" href="classllvm_1_1MCInst.html">MCInst</a> &mcInst,
+<a name="l00779"></a>00779                                 <a class="code" href="structInternalInstruction.html">InternalInstruction</a> &insn,
+<a name="l00780"></a>00780                                 <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> *Dis) {  
+<a name="l00781"></a>00781   <span class="keywordflow">if</span> (!insn.<a class="code" href="structInternalInstruction.html#aa1760b2eeaf730f3fcb1a4a3655e2727">spec</a>) {
+<a name="l00782"></a>00782     <a class="code" href="X86Disassembler_8cpp.html#ae0228f36529f75f692753ef96d725012">debug</a>(<span class="stringliteral">"Instruction has no specification"</span>);
+<a name="l00783"></a>00783     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00784"></a>00784   }
+<a name="l00785"></a>00785   
+<a name="l00786"></a>00786   mcInst.<a class="code" href="classllvm_1_1MCInst.html#ae844d6ff99f067e6672e004ed7613c24">setOpcode</a>(insn.<a class="code" href="structInternalInstruction.html#a2c614fda371a4b9cd14cf06154458364">instructionID</a>);
+<a name="l00787"></a>00787   
+<a name="l00788"></a>00788   <span class="keywordtype">int</span> index;
+<a name="l00789"></a>00789   
+<a name="l00790"></a>00790   insn.<a class="code" href="structInternalInstruction.html#ac5f51c961d719eef66fb21bd4c89d04e">numImmediatesTranslated</a> = 0;
+<a name="l00791"></a>00791   
+<a name="l00792"></a>00792   <span class="keywordflow">for</span> (index = 0; index < <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a5f403e1e45149893b0ea54d8796cc921">X86_MAX_OPERANDS</a>; ++index) {
+<a name="l00793"></a>00793     <span class="keywordflow">if</span> (insn.<a class="code" href="structInternalInstruction.html#aa9a4db80146a384e9aee369f10294884">operands</a>[index].<a class="code" href="structOperandSpecifier.html#af8374a1a0bbfe5c8e5508f8482aae67b">encoding</a> != ENCODING_NONE) {
+<a name="l00794"></a>00794       <span class="keywordflow">if</span> (<a class="code" href="X86Disassembler_8cpp.html#aeb806eaaca65c1a593f5af3078798819">translateOperand</a>(mcInst, insn.<a class="code" href="structInternalInstruction.html#aa9a4db80146a384e9aee369f10294884">operands</a>[index], insn, Dis)) {
+<a name="l00795"></a>00795         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00796"></a>00796       }
+<a name="l00797"></a>00797     }
+<a name="l00798"></a>00798   }
+<a name="l00799"></a>00799   
+<a name="l00800"></a>00800   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00801"></a>00801 }
+<a name="l00802"></a>00802 
+<a name="l00803"></a><a class="code" href="X86Disassembler_8cpp.html#a8ee31c3aef0fbecf9e80aaeb7abbf961">00803</a> <span class="keyword">static</span> <a class="code" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> *<a class="code" href="X86Disassembler_8cpp.html#a8ee31c3aef0fbecf9e80aaeb7abbf961">createX86_32Disassembler</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Target.html">Target</a> &T,
+<a name="l00804"></a>00804                                                 <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCSubtargetInfo.html">MCSubtargetInfo</a> &STI) {
+<a name="l00805"></a>00805   <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classllvm_1_1X86Disassembler_1_1X86GenericDisassembler.html">X86Disassembler::X86GenericDisassembler</a>(STI, <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a549ce06ad85d0726a93b2768ae7c7da7a43026c766e3f6ed1988064019cf4aa39">MODE_32BIT</a>,
+<a name="l00806"></a>00806                                                      T.<a class="code" href="classllvm_1_1Target.html#a7651fe8a3f256578e9f0985aa4ffe7c9">createMCInstrInfo</a>());
+<a name="l00807"></a>00807 }
+<a name="l00808"></a>00808 
+<a name="l00809"></a><a class="code" href="X86Disassembler_8cpp.html#afd818f51ad50d0d4d8252b849f446a24">00809</a> <span class="keyword">static</span> <a class="code" href="classllvm_1_1MCDisassembler.html">MCDisassembler</a> *<a class="code" href="X86Disassembler_8cpp.html#afd818f51ad50d0d4d8252b849f446a24">createX86_64Disassembler</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1Target.html">Target</a> &T,
+<a name="l00810"></a>00810                                                 <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCSubtargetInfo.html">MCSubtargetInfo</a> &STI) {
+<a name="l00811"></a>00811   <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classllvm_1_1X86Disassembler_1_1X86GenericDisassembler.html">X86Disassembler::X86GenericDisassembler</a>(STI, <a class="code" href="X86DisassemblerDecoderCommon_8h.html#a549ce06ad85d0726a93b2768ae7c7da7aeaebd8c1fe2b71a386838da0280c211c">MODE_64BIT</a>,
+<a name="l00812"></a>00812                                                      T.<a class="code" href="classllvm_1_1Target.html#a7651fe8a3f256578e9f0985aa4ffe7c9">createMCInstrInfo</a>());
+<a name="l00813"></a>00813 }
+<a name="l00814"></a>00814 
+<a name="l00815"></a><a class="code" href="X86Disassembler_8cpp.html#a646881a4b5b28cd1d0a52a42642c8f49">00815</a> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> <span class="keywordtype">void</span> <a class="code" href="X86Disassembler_8cpp.html#a646881a4b5b28cd1d0a52a42642c8f49">LLVMInitializeX86Disassembler</a>() { 
+<a name="l00816"></a>00816   <span class="comment">// Register the disassembler.</span>
+<a name="l00817"></a>00817   <a class="code" href="structllvm_1_1TargetRegistry.html#a8d3c3e977776517a7c1a82060b16da9f">TargetRegistry::RegisterMCDisassembler</a>(<a class="code" href="namespacellvm.html#af353014bfa72c4b1b8db88e18d64fa5f">TheX86_32Target</a>, 
+<a name="l00818"></a>00818                                          <a class="code" href="X86Disassembler_8cpp.html#a8ee31c3aef0fbecf9e80aaeb7abbf961">createX86_32Disassembler</a>);
+<a name="l00819"></a>00819   <a class="code" href="structllvm_1_1TargetRegistry.html#a8d3c3e977776517a7c1a82060b16da9f">TargetRegistry::RegisterMCDisassembler</a>(<a class="code" href="namespacellvm.html#ac132a29b643b352088cd55b4730afea3">TheX86_64Target</a>,
+<a name="l00820"></a>00820                                          <a class="code" href="X86Disassembler_8cpp.html#afd818f51ad50d0d4d8252b849f446a24">createX86_64Disassembler</a>);
+<a name="l00821"></a>00821 }
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:16 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/X86Disassembler_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86Disassembler_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86Disassembler_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86Disassembler_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,122 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: X86Disassembler.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_ae72ec760f5f4d3869211e663a0eb354.html">X86</a>      </li>
+      <li class="navelem"><a class="el" href="dir_f8d2defef88098d0bc5331515603729f.html">Disassembler</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#namespaces">Namespaces</a> |
+<a href="#define-members">Defines</a>  </div>
+  <div class="headertitle">
+<div class="title">X86Disassembler.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="X86DisassemblerDecoderCommon_8h_source.html">X86DisassemblerDecoderCommon.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCDisassembler_8h_source.html">llvm/MC/MCDisassembler.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for X86Disassembler.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="X86Disassembler_8h__incl.png" border="0" usemap="#X86Disassembler_8h" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="X86Disassembler_8h__dep__incl.png" border="0" usemap="#X86Disassembler_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="X86Disassembler_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1X86Disassembler_1_1X86GenericDisassembler.html">llvm::X86Disassembler::X86GenericDisassembler</a></td></tr>
+<tr><td colspan="2"><h2><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html">llvm</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>List of target independent CodeGen pass IDs. </p>
+<br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1X86Disassembler.html">llvm::X86Disassembler</a></td></tr>
+<tr><td colspan="2"><h2><a name="define-members"></a>
+Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8h.html#aa761f2ad48a0e6921c32c7ccf3d6f406">INSTRUCTION_SPECIFIER_FIELDS</a>   uint16_t operands;</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86Disassembler_8h.html#a8b4dd6c5456bcfcdc40f74720afa8b73">INSTRUCTION_IDS</a>   uint16_t instructionIDs;</td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="a8b4dd6c5456bcfcdc40f74720afa8b73"></a><!-- doxytag: member="X86Disassembler.h::INSTRUCTION_IDS" ref="a8b4dd6c5456bcfcdc40f74720afa8b73" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define INSTRUCTION_IDS   uint16_t instructionIDs;</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86Disassembler_8h_source.html#l00080">80</a> of file <a class="el" href="X86Disassembler_8h_source.html">X86Disassembler.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa761f2ad48a0e6921c32c7ccf3d6f406"></a><!-- doxytag: member="X86Disassembler.h::INSTRUCTION_SPECIFIER_FIELDS" ref="aa761f2ad48a0e6921c32c7ccf3d6f406" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define INSTRUCTION_SPECIFIER_FIELDS   uint16_t operands;</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86Disassembler_8h_source.html#l00077">77</a> of file <a class="el" href="X86Disassembler_8h_source.html">X86Disassembler.h</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:58 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/X86Disassembler_8h__dep__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86Disassembler_8h__dep__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86Disassembler_8h__dep__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86Disassembler_8h__dep__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+9687432c6cfd51cb8a2748926fff7bef
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/X86Disassembler_8h__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86Disassembler_8h__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86Disassembler_8h__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86Disassembler_8h__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,27 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="X86Disassembler.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="X86DisassemblerDecoderCommon.h",height=0.2,width=0.4,color="black",URL="$X86DisassemblerDecoderCommon_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="black",URL="$DataTypes_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="llvm/MC/MCDisassembler.h",height=0.2,width=0.4,color="black",URL="$MCDisassembler_8h.html"];
+  Node8 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="llvm-c/Disassembler.h",height=0.2,width=0.4,color="black",URL="$include_2llvm-c_2Disassembler_8h.html"];
+  Node9 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="stddef.h",height=0.2,width=0.4,color="grey75"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/X86FastISel_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86FastISel_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86FastISel_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86FastISel_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,198 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: X86FastISel.cpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_ae72ec760f5f4d3869211e663a0eb354.html">X86</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#namespaces">Namespaces</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">X86FastISel.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="X86_8h_source.html">X86.h</a>"</code><br/>
+<code>#include "<a class="el" href="X86InstrBuilder_8h_source.html">X86InstrBuilder.h</a>"</code><br/>
+<code>#include "<a class="el" href="X86ISelLowering_8h_source.html">X86ISelLowering.h</a>"</code><br/>
+<code>#include "<a class="el" href="X86RegisterInfo_8h_source.html">X86RegisterInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="X86Subtarget_8h_source.html">X86Subtarget.h</a>"</code><br/>
+<code>#include "<a class="el" href="X86TargetMachine_8h_source.html">X86TargetMachine.h</a>"</code><br/>
+<code>#include "<a class="el" href="CallingConv_8h_source.html">llvm/CallingConv.h</a>"</code><br/>
+<code>#include "<a class="el" href="DerivedTypes_8h_source.html">llvm/DerivedTypes.h</a>"</code><br/>
+<code>#include "<a class="el" href="GlobalVariable_8h_source.html">llvm/GlobalVariable.h</a>"</code><br/>
+<code>#include "<a class="el" href="GlobalAlias_8h_source.html">llvm/GlobalAlias.h</a>"</code><br/>
+<code>#include "<a class="el" href="Instructions_8h_source.html">llvm/Instructions.h</a>"</code><br/>
+<code>#include "<a class="el" href="IntrinsicInst_8h_source.html">llvm/IntrinsicInst.h</a>"</code><br/>
+<code>#include "<a class="el" href="Operator_8h_source.html">llvm/Operator.h</a>"</code><br/>
+<code>#include "<a class="el" href="CodeGen_2Analysis_8h_source.html">llvm/CodeGen/Analysis.h</a>"</code><br/>
+<code>#include "<a class="el" href="FastISel_8h_source.html">llvm/CodeGen/FastISel.h</a>"</code><br/>
+<code>#include "<a class="el" href="FunctionLoweringInfo_8h_source.html">llvm/CodeGen/FunctionLoweringInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineConstantPool_8h_source.html">llvm/CodeGen/MachineConstantPool.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineFrameInfo_8h_source.html">llvm/CodeGen/MachineFrameInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineRegisterInfo_8h_source.html">llvm/CodeGen/MachineRegisterInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="CallSite_8h_source.html">llvm/Support/CallSite.h</a>"</code><br/>
+<code>#include "<a class="el" href="ErrorHandling_8h_source.html">llvm/Support/ErrorHandling.h</a>"</code><br/>
+<code>#include "<a class="el" href="GetElementPtrTypeIterator_8h_source.html">llvm/Support/GetElementPtrTypeIterator.h</a>"</code><br/>
+<code>#include "<a class="el" href="TargetOptions_8h_source.html">llvm/Target/TargetOptions.h</a>"</code><br/>
+<code>#include "X86GenFastISel.inc"</code><br/>
+<code>#include "X86GenCallingConv.inc"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for X86FastISel.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="X86FastISel_8cpp__incl.png" border="0" usemap="#X86FastISel_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="X86FastISel_8cpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html">llvm</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>List of target independent CodeGen pass IDs. </p>
+<br/></td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classunsigned.html">unsigned</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="X86FastISel_8cpp.html#a8a37b9d5aa1120121a9f73dfc2e302ba">X86ChooseCmpOpcode</a> (<a class="el" href="structllvm_1_1EVT.html">EVT</a> VT, const <a class="el" href="classllvm_1_1X86Subtarget.html">X86Subtarget</a> *Subtarget)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classunsigned.html">unsigned</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="X86FastISel_8cpp.html#a1eee6ac4842ce6fca9bdd513b73eb003">X86ChooseCmpImmediateOpcode</a> (<a class="el" href="structllvm_1_1EVT.html">EVT</a> VT, const <a class="el" href="classllvm_1_1ConstantInt.html">ConstantInt</a> *RHSC)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classunsigned.html">unsigned</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="X86FastISel_8cpp.html#a2fc15f7be1f527429e4232939fa2ca85">computeBytesPoppedByCallee</a> (const <a class="el" href="classllvm_1_1X86Subtarget.html">X86Subtarget</a> &Subtarget, const <a class="el" href="classllvm_1_1ImmutableCallSite.html">ImmutableCallSite</a> &CS)</td></tr>
+</table>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a2fc15f7be1f527429e4232939fa2ca85"></a><!-- doxytag: member="X86FastISel.cpp::computeBytesPoppedByCallee" ref="a2fc15f7be1f527429e4232939fa2ca85" args="(const X86Subtarget &Subtarget, const ImmutableCallSite &CS)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classunsigned.html">unsigned</a> computeBytesPoppedByCallee </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1X86Subtarget.html">X86Subtarget</a> & </td>
+          <td class="paramname"><em>Subtarget</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1ImmutableCallSite.html">ImmutableCallSite</a> & </td>
+          <td class="paramname"><em>CS</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86FastISel_8cpp_source.html#l01535">1535</a> of file <a class="el" href="X86FastISel_8cpp_source.html">X86FastISel.cpp</a>.</p>
+
+<p>References <a class="el" href="CallingConv_8h_source.html#l00039">llvm::CallingConv::Fast</a>, <a class="el" href="CallSite_8h_source.html#l00171">llvm::CallSiteBase< FunTy, ValTy, UserTy, InstrTy, CallTy, InvokeTy, IterTy >::getCallingConv()</a>, <a class="el" href="CallingConv_8h_source.html#l00048">llvm::CallingConv::GHC</a>, <a class="el" href="Attributes_8h_source.html#l00062">llvm::Attributes::InReg</a>, <a class="el" href="X86Subtarget_8h_source.html#l00193">llvm::X86Subtarget::is64Bit()</a>, <a class="el" href="X86Subtarget_8h_source.html#l00254">llvm::X86Subtarget::isTargetWindows()</a>, <a class="el" href="CallSite_8h_source.html#l00193">llvm::CallSiteBase< FunTy, ValTy, UserTy, InstrTy, CallTy, InvokeTy, IterTy >::paramHasAttr()</a>, and <a class="el" href="Attributes_8h_source.html#l00086">llvm::Attributes::StructRet</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1eee6ac4842ce6fca9bdd513b73eb003"></a><!-- doxytag: member="X86FastISel.cpp::X86ChooseCmpImmediateOpcode" ref="a1eee6ac4842ce6fca9bdd513b73eb003" args="(EVT VT, const ConstantInt *RHSC)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classunsigned.html">unsigned</a> X86ChooseCmpImmediateOpcode </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structllvm_1_1EVT.html">EVT</a> </td>
+          <td class="paramname"><em>VT</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1ConstantInt.html">ConstantInt</a> * </td>
+          <td class="paramname"><em>RHSC</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>X86ChooseCmpImmediateOpcode - If we have a comparison with RHS as the RHS of the comparison, return an opcode that works for the compare (e.g. CMP32ri) otherwise return 0. </p>
+
+<p>Definition at line <a class="el" href="X86FastISel_8cpp_source.html#l00875">875</a> of file <a class="el" href="X86FastISel_8cpp_source.html">X86FastISel.cpp</a>.</p>
+
+<p>References <a class="el" href="Constants_8h_source.html#l00125">llvm::ConstantInt::getSExtValue()</a>, <a class="el" href="ValueTypes_8h_source.html#l00660">llvm::EVT::getSimpleVT()</a>, <a class="el" href="ValueTypes_8h_source.html#l00041">llvm::MVT::i16</a>, <a class="el" href="ValueTypes_8h_source.html#l00042">llvm::MVT::i32</a>, <a class="el" href="ValueTypes_8h_source.html#l00043">llvm::MVT::i64</a>, <a class="el" href="ValueTypes_8h_source.html#l00040">llvm::MVT::i8</a>, and <a class="el" href="ValueTypes_8h_source.html#l00150">llvm::MVT::SimpleTy</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8a37b9d5aa1120121a9f73dfc2e302ba"></a><!-- doxytag: member="X86FastISel.cpp::X86ChooseCmpOpcode" ref="a8a37b9d5aa1120121a9f73dfc2e302ba" args="(EVT VT, const X86Subtarget *Subtarget)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classunsigned.html">unsigned</a> X86ChooseCmpOpcode </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structllvm_1_1EVT.html">EVT</a> </td>
+          <td class="paramname"><em>VT</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1X86Subtarget.html">X86Subtarget</a> * </td>
+          <td class="paramname"><em>Subtarget</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86FastISel_8cpp_source.html#l00854">854</a> of file <a class="el" href="X86FastISel_8cpp_source.html">X86FastISel.cpp</a>.</p>
+
+<p>References <a class="el" href="ValueTypes_8h_source.html#l00050">llvm::MVT::f32</a>, <a class="el" href="ValueTypes_8h_source.html#l00051">llvm::MVT::f64</a>, <a class="el" href="ValueTypes_8h_source.html#l00660">llvm::EVT::getSimpleVT()</a>, <a class="el" href="X86Subtarget_8h_source.html#l00206">llvm::X86Subtarget::hasAVX()</a>, <a class="el" href="X86Subtarget_8h_source.html#l00200">llvm::X86Subtarget::hasSSE1()</a>, <a class="el" href="X86Subtarget_8h_source.html#l00201">llvm::X86Subtarget::hasSSE2()</a>, <a class="el" href="ValueTypes_8h_source.html#l00041">llvm::MVT::i16</a>, <a class="el" href="ValueTypes_8h_source.html#l00042">llvm::MVT::i32</a>, <a class="el" href="ValueTypes_8h_source.html#l00043">llvm::MVT::i64</a>, <a class="el" href="ValueTypes_8h_source.html#l00040">llvm::MVT::i8</a>, and <a class="el" href="ValueTypes_8h_source.html#l00150">llvm::MVT::SimpleTy</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:58 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/X86FixupKinds_8h__dep__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86FixupKinds_8h__dep__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86FixupKinds_8h__dep__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86FixupKinds_8h__dep__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+65979ec908ed9012c6fad43e54ab7997
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/X86FrameLowering_8cpp__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86FrameLowering_8cpp__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86FrameLowering_8cpp__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86FrameLowering_8cpp__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+4994879e11108e451edc583dc4021d4d
\ No newline at end of file

Added: www-releases/trunk/3.2/docs/doxygen/html/X86FrameLowering_8h__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86FrameLowering_8h__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86FrameLowering_8h__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86FrameLowering_8h__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,151 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="X86FrameLowering.h",height=0.2,width=0.4,color="black", fillcolor="grey75", style="filled" fontcolor="black"];
+  Node1 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 [label="X86Subtarget.h",height=0.2,width=0.4,color="black",URL="$X86Subtarget_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/CallingConv.h",height=0.2,width=0.4,color="black",URL="$CallingConv_8h.html"];
+  Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/ADT/Triple.h",height=0.2,width=0.4,color="black",URL="$Triple_8h.html"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="llvm/ADT/Twine.h",height=0.2,width=0.4,color="black",URL="$Twine_8h.html"];
+  Node5 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="llvm/ADT/StringRef.h",height=0.2,width=0.4,color="black",URL="$StringRef_8h.html"];
+  Node6 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="black",URL="$type__traits_8h.html"];
+  Node7 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="black",URL="$DataTypes_8h.html"];
+  Node8 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node8 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node8 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node8 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="cstddef",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="utility",height=0.2,width=0.4,color="grey75"];
+  Node6 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node6 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node6 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="cstring",height=0.2,width=0.4,color="grey75"];
+  Node6 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="limits",height=0.2,width=0.4,color="grey75"];
+  Node6 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node6 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="llvm/Support/ErrorHandling.h",height=0.2,width=0.4,color="black",URL="$ErrorHandling_8h.html"];
+  Node20 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node20 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="llvm/Target/TargetSubtargetInfo.h",height=0.2,width=0.4,color="black",URL="$TargetSubtargetInfo_8h.html"];
+  Node22 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="llvm/MC/MCSubtargetInfo.h",height=0.2,width=0.4,color="black",URL="$MCSubtargetInfo_8h.html"];
+  Node23 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="llvm/MC/SubtargetFeature.h",height=0.2,width=0.4,color="black",URL="$SubtargetFeature_8h.html"];
+  Node24 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node24 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/MC/MCInstrItineraries.h",height=0.2,width=0.4,color="black",URL="$MCInstrItineraries_8h.html"];
+  Node26 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/MC/MCSchedule.h",height=0.2,width=0.4,color="black",URL="$MCSchedule_8h.html"];
+  Node27 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/Support/CodeGen.h",height=0.2,width=0.4,color="black",URL="$CodeGen_8h.html"];
+  Node2 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="X86GenSubtargetInfo.inc",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/MC/MCDwarf.h",height=0.2,width=0.4,color="black",URL="$MCDwarf_8h.html"];
+  Node30 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/MC/MachineLocation.h",height=0.2,width=0.4,color="black",URL="$MachineLocation_8h.html"];
+  Node30 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/Support/raw_ostream.h",height=0.2,width=0.4,color="black",URL="$raw__ostream_8h.html"];
+  Node32 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/Support/Dwarf.h",height=0.2,width=0.4,color="black",URL="$Dwarf_8h.html"];
+  Node30 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/Target/TargetFrameLowering.h",height=0.2,width=0.4,color="black",URL="$TargetFrameLowering_8h.html"];
+  Node34 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="llvm/CodeGen/MachineBasicBlock.h",height=0.2,width=0.4,color="black",URL="$MachineBasicBlock_8h.html"];
+  Node35 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="llvm/CodeGen/MachineInstr.h",height=0.2,width=0.4,color="black",URL="$MachineInstr_8h.html"];
+  Node36 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/CodeGen/MachineOperand.h",height=0.2,width=0.4,color="black",URL="$MachineOperand_8h.html"];
+  Node37 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/MC/MCInstrDesc.h",height=0.2,width=0.4,color="black",URL="$MCInstrDesc_8h.html"];
+  Node38 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/Target/TargetOpcodes.h",height=0.2,width=0.4,color="black",URL="$TargetOpcodes_8h.html"];
+  Node36 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="llvm/ADT/ArrayRef.h",height=0.2,width=0.4,color="black",URL="$ArrayRef_8h.html"];
+  Node40 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="red",URL="$SmallVector_8h.html"];
+  Node41 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node40 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="llvm/ADT/ilist.h",height=0.2,width=0.4,color="black",URL="$ilist_8h.html"];
+  Node43 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="llvm/ADT/ilist_node.h",height=0.2,width=0.4,color="black",URL="$ilist__node_8h.html"];
+  Node36 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/ADT/STLExtras.h",height=0.2,width=0.4,color="red",URL="$STLExtras_8h.html"];
+  Node45 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="functional",height=0.2,width=0.4,color="grey75"];
+  Node45 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="llvm/ADT/DenseMapInfo.h",height=0.2,width=0.4,color="red",URL="$DenseMapInfo_8h.html"];
+  Node47 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="llvm/InlineAsm.h",height=0.2,width=0.4,color="red",URL="$InlineAsm_8h.html"];
+  Node48 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="llvm/Support/DebugLoc.h",height=0.2,width=0.4,color="black",URL="$DebugLoc_8h.html"];
+  Node36 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="llvm/ADT/GraphTraits.h",height=0.2,width=0.4,color="black",URL="$GraphTraits_8h.html"];
+  Node35 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/X86ISelDAGToDAG_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86ISelDAGToDAG_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86ISelDAGToDAG_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86ISelDAGToDAG_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,750 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: X86ISelDAGToDAG.cpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_ae72ec760f5f4d3869211e663a0eb354.html">X86</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#define-members">Defines</a> |
+<a href="#enum-members">Enumerations</a> |
+<a href="#func-members">Functions</a> |
+<a href="#var-members">Variables</a>  </div>
+  <div class="headertitle">
+<div class="title">X86ISelDAGToDAG.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="X86_8h_source.html">X86.h</a>"</code><br/>
+<code>#include "<a class="el" href="X86InstrBuilder_8h_source.html">X86InstrBuilder.h</a>"</code><br/>
+<code>#include "<a class="el" href="X86MachineFunctionInfo_8h_source.html">X86MachineFunctionInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="X86RegisterInfo_8h_source.html">X86RegisterInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="X86Subtarget_8h_source.html">X86Subtarget.h</a>"</code><br/>
+<code>#include "<a class="el" href="X86TargetMachine_8h_source.html">X86TargetMachine.h</a>"</code><br/>
+<code>#include "<a class="el" href="Instructions_8h_source.html">llvm/Instructions.h</a>"</code><br/>
+<code>#include "<a class="el" href="Intrinsics_8h_source.html">llvm/Intrinsics.h</a>"</code><br/>
+<code>#include "<a class="el" href="Type_8h_source.html">llvm/Type.h</a>"</code><br/>
+<code>#include "<a class="el" href="FunctionLoweringInfo_8h_source.html">llvm/CodeGen/FunctionLoweringInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineConstantPool_8h_source.html">llvm/CodeGen/MachineConstantPool.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineFunction_8h_source.html">llvm/CodeGen/MachineFunction.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineFrameInfo_8h_source.html">llvm/CodeGen/MachineFrameInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineInstrBuilder_8h_source.html">llvm/CodeGen/MachineInstrBuilder.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineRegisterInfo_8h_source.html">llvm/CodeGen/MachineRegisterInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="SelectionDAGISel_8h_source.html">llvm/CodeGen/SelectionDAGISel.h</a>"</code><br/>
+<code>#include "<a class="el" href="Target_2TargetMachine_8h_source.html">llvm/Target/TargetMachine.h</a>"</code><br/>
+<code>#include "<a class="el" href="TargetOptions_8h_source.html">llvm/Target/TargetOptions.h</a>"</code><br/>
+<code>#include "<a class="el" href="CFG_8h_source.html">llvm/Support/CFG.h</a>"</code><br/>
+<code>#include "<a class="el" href="Debug_8h_source.html">llvm/Support/Debug.h</a>"</code><br/>
+<code>#include "<a class="el" href="ErrorHandling_8h_source.html">llvm/Support/ErrorHandling.h</a>"</code><br/>
+<code>#include "<a class="el" href="MathExtras_8h_source.html">llvm/Support/MathExtras.h</a>"</code><br/>
+<code>#include "<a class="el" href="raw__ostream_8h_source.html">llvm/Support/raw_ostream.h</a>"</code><br/>
+<code>#include "<a class="el" href="Statistic_8h_source.html">llvm/ADT/Statistic.h</a>"</code><br/>
+<code>#include "X86GenDAGISel.inc"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for X86ISelDAGToDAG.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="X86ISelDAGToDAG_8cpp__incl.png" border="0" usemap="#X86ISelDAGToDAG_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="X86ISelDAGToDAG_8cpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="define-members"></a>
+Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="X86ISelDAGToDAG_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">DEBUG_TYPE</a>   "x86-isel"</td></tr>
+<tr><td colspan="2"><h2><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="X86ISelDAGToDAG_8cpp.html#afc4e10b4f2ab2d548ab80b30f3b712e9">AtomicOpc</a> { <br/>
+  <a class="el" href="X86ISelDAGToDAG_8cpp.html#afc4e10b4f2ab2d548ab80b30f3b712e9acfcf145f2788bf340ff3f3098bc54909">ADD</a>, 
+<a class="el" href="X86ISelDAGToDAG_8cpp.html#afc4e10b4f2ab2d548ab80b30f3b712e9a12b733d4941495e86811fe6ceeeff9da">SUB</a>, 
+<a class="el" href="X86ISelDAGToDAG_8cpp.html#afc4e10b4f2ab2d548ab80b30f3b712e9a7967e4061665d0e072a0c3bffe00ac6d">INC</a>, 
+<a class="el" href="X86ISelDAGToDAG_8cpp.html#afc4e10b4f2ab2d548ab80b30f3b712e9a851043138f8ef49c6eeea75760b69481">DEC</a>, 
+<br/>
+  <a class="el" href="X86ISelDAGToDAG_8cpp.html#afc4e10b4f2ab2d548ab80b30f3b712e9a96727447c0ad447987df1c6415aef074">OR</a>, 
+<a class="el" href="X86ISelDAGToDAG_8cpp.html#afc4e10b4f2ab2d548ab80b30f3b712e9a865555c9f2e0458a7078486aa1b3254f">AND</a>, 
+<a class="el" href="X86ISelDAGToDAG_8cpp.html#afc4e10b4f2ab2d548ab80b30f3b712e9ac62338ffb5de22369c75caa565b5da1a">XOR</a>, 
+<a class="el" href="X86ISelDAGToDAG_8cpp.html#afc4e10b4f2ab2d548ab80b30f3b712e9a443b2be81062f015608a765700db66ec">AtomicOpcEnd</a>
+<br/>
+ }</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="X86ISelDAGToDAG_8cpp.html#a96c1aa0eca38be914b9564cd17c82f8a">AtomicSz</a> { <br/>
+  <a class="el" href="X86ISelDAGToDAG_8cpp.html#a96c1aa0eca38be914b9564cd17c82f8aa0d2e913e2fd86f888d768aaea3b4f20c">ConstantI8</a>, 
+<a class="el" href="X86ISelDAGToDAG_8cpp.html#a96c1aa0eca38be914b9564cd17c82f8aa8842984357dc9c9d3c441d1529f6b1a7">I8</a>, 
+<a class="el" href="X86ISelDAGToDAG_8cpp.html#a96c1aa0eca38be914b9564cd17c82f8aa67941b74249a74c74755ca8dd31df788">SextConstantI16</a>, 
+<a class="el" href="X86ISelDAGToDAG_8cpp.html#a96c1aa0eca38be914b9564cd17c82f8aa730abdb44c8eead5365e1b6830c58154">ConstantI16</a>, 
+<br/>
+  <a class="el" href="X86ISelDAGToDAG_8cpp.html#a96c1aa0eca38be914b9564cd17c82f8aa8a57e45c133b807fad1be007b127287f">I16</a>, 
+<a class="el" href="X86ISelDAGToDAG_8cpp.html#a96c1aa0eca38be914b9564cd17c82f8aa250f0ba0c9ddd9735481a1a7758a28b2">SextConstantI32</a>, 
+<a class="el" href="X86ISelDAGToDAG_8cpp.html#a96c1aa0eca38be914b9564cd17c82f8aa459e82537e7b8715f12bf278fd58bde1">ConstantI32</a>, 
+<a class="el" href="X86ISelDAGToDAG_8cpp.html#a96c1aa0eca38be914b9564cd17c82f8aa68744fefeb088e8bae7ec95a0c0532ac">I32</a>, 
+<br/>
+  <a class="el" href="X86ISelDAGToDAG_8cpp.html#a96c1aa0eca38be914b9564cd17c82f8aa755fb6cf65f9f9fd22e67304f08ba90c">SextConstantI64</a>, 
+<a class="el" href="X86ISelDAGToDAG_8cpp.html#a96c1aa0eca38be914b9564cd17c82f8aa448d3c03c5d271a0002d1b4b2f3e0e89">ConstantI64</a>, 
+<a class="el" href="X86ISelDAGToDAG_8cpp.html#a96c1aa0eca38be914b9564cd17c82f8aaa65eb6ad08456c6c3af62f1574ef3736">I64</a>, 
+<a class="el" href="X86ISelDAGToDAG_8cpp.html#a96c1aa0eca38be914b9564cd17c82f8aa3eb390ee21f43d1995b9b46118a09677">AtomicSzEnd</a>
+<br/>
+ }</td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="X86ISelDAGToDAG_8cpp.html#a2703c20c686bb300521ff3775ea49862">STATISTIC</a> (NumLoadMoved,"Number of loads moved below TokenFactor")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="X86ISelDAGToDAG_8cpp.html#acb91a4867f4f627e9d3c60fa2471a894">MoveBelowOrigChain</a> (<a class="el" href="classllvm_1_1SelectionDAG.html">SelectionDAG</a> *CurDAG, <a class="el" href="classllvm_1_1SDValue.html">SDValue</a> Load, <a class="el" href="classllvm_1_1SDValue.html">SDValue</a> Call, <a class="el" href="classllvm_1_1SDValue.html">SDValue</a> OrigChain)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="X86ISelDAGToDAG_8cpp.html#ac0a91fd2157f9b3a8880ce8373396108">isCalleeLoad</a> (<a class="el" href="classllvm_1_1SDValue.html">SDValue</a> Callee, <a class="el" href="classllvm_1_1SDValue.html">SDValue</a> &Chain, <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> HasCallSeq)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="X86ISelDAGToDAG_8cpp.html#accefa4c7462a1332c8e02f04942cd445">isDispSafeForFrameIndex</a> (<a class="el" href="classint64__t.html">int64_t</a> Val)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="X86ISelDAGToDAG_8cpp.html#aa0db74423051aebc66e0b6f8c540a5bf">InsertDAGNode</a> (<a class="el" href="classllvm_1_1SelectionDAG.html">SelectionDAG</a> &DAG, <a class="el" href="classllvm_1_1SDValue.html">SDValue</a> Pos, <a class="el" href="classllvm_1_1SDValue.html">SDValue</a> N)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="X86ISelDAGToDAG_8cpp.html#adb3e41fa1653add6fb07e438c07f5ebf">FoldMaskAndShiftToExtract</a> (<a class="el" href="classllvm_1_1SelectionDAG.html">SelectionDAG</a> &DAG, <a class="el" href="classllvm_1_1SDValue.html">SDValue</a> N, uint64_t Mask, <a class="el" href="classllvm_1_1SDValue.html">SDValue</a> Shift, <a class="el" href="classllvm_1_1SDValue.html">SDValue</a> <a class="el" href="Hello_8cpp.html#a8c52190361e97ffdef605d3479a11551">X</a>, X86ISelAddressMode &AM)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="X86ISelDAGToDAG_8cpp.html#a2bf7db878e7e3a32aec73521459cf6a1">FoldMaskedShiftToScaledMask</a> (<a class="el" href="classllvm_1_1SelectionDAG.html">SelectionDAG</a> &DAG, <a class="el" href="classllvm_1_1SDValue.html">SDValue</a> N, uint64_t Mask, <a class="el" href="classllvm_1_1SDValue.html">SDValue</a> Shift, <a class="el" href="classllvm_1_1SDValue.html">SDValue</a> <a class="el" href="Hello_8cpp.html#a8c52190361e97ffdef605d3479a11551">X</a>, X86ISelAddressMode &AM)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="X86ISelDAGToDAG_8cpp.html#ade4f4c1f5a55552504026f8574a9c893">FoldMaskAndShiftToScale</a> (<a class="el" href="classllvm_1_1SelectionDAG.html">SelectionDAG</a> &DAG, <a class="el" href="classllvm_1_1SDValue.html">SDValue</a> N, uint64_t Mask, <a class="el" href="classllvm_1_1SDValue.html">SDValue</a> Shift, <a class="el" href="classllvm_1_1SDValue.html">SDValue</a> <a class="el" href="Hello_8cpp.html#a8c52190361e97ffdef605d3479a11551">X</a>, X86ISelAddressMode &AM)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1SDValue.html">SDValue</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="X86ISelDAGToDAG_8cpp.html#aecae5ee163f95610e5f5c50cc975e3ca">getAtomicLoadArithTargetConstant</a> (<a class="el" href="classllvm_1_1SelectionDAG.html">SelectionDAG</a> *CurDAG, <a class="el" href="classllvm_1_1DebugLoc.html">DebugLoc</a> dl, enum <a class="el" href="X86ISelDAGToDAG_8cpp.html#afc4e10b4f2ab2d548ab80b30f3b712e9">AtomicOpc</a> &Op, <a class="el" href="structllvm_1_1EVT.html">EVT</a> NVT, <a class="el" href="classllvm_1_1SDValue.html">SDValue</a> Val)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="X86ISelDAGToDAG_8cpp.html#a8ad82d103604e27f8e067e0edfce5347">HasNoSignedComparisonUses</a> (<a class="el" href="classllvm_1_1SDNode.html">SDNode</a> *N)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="X86ISelDAGToDAG_8cpp.html#ae28feb8429fd7afe136662ecbedb0c8c">isLoadIncOrDecStore</a> (<a class="el" href="classllvm_1_1StoreSDNode.html">StoreSDNode</a> *StoreNode, <a class="el" href="classunsigned.html">unsigned</a> Opc, <a class="el" href="classllvm_1_1SDValue.html">SDValue</a> StoredVal, <a class="el" href="classllvm_1_1SelectionDAG.html">SelectionDAG</a> *CurDAG, <a class="el" href="classllvm_1_1LoadSDNode.html">LoadSDNode</a> *&LoadNode, <a class="el" href="classllvm_1_1SDValue.html">SDValue</a> &InputChain)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classunsigned.html">unsigned</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="X86ISelDAGToDAG_8cpp.html#a7183c66b968f67a612e2be5fd902d3e9">getFusedLdStOpcode</a> (<a class="el" href="structllvm_1_1EVT.html">EVT</a> &LdVT, <a class="el" href="classunsigned.html">unsigned</a> Opc)</td></tr>
+<tr><td colspan="2"><h2><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const uint16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="X86ISelDAGToDAG_8cpp.html#ae86d1f5121bd42a40218d95cfb3a3856">AtomicOpcTbl</a> [AtomicOpcEnd][AtomicSzEnd]</td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ad78e062f62e0d6e453941fb4ca843e4d"></a><!-- doxytag: member="X86ISelDAGToDAG.cpp::DEBUG_TYPE" ref="ad78e062f62e0d6e453941fb4ca843e4d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define DEBUG_TYPE   "x86-isel"</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l00015">15</a> of file <a class="el" href="X86ISelDAGToDAG_8cpp_source.html">X86ISelDAGToDAG.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Enumeration Type Documentation</h2>
+<a class="anchor" id="afc4e10b4f2ab2d548ab80b30f3b712e9"></a><!-- doxytag: member="X86ISelDAGToDAG.cpp::AtomicOpc" ref="afc4e10b4f2ab2d548ab80b30f3b712e9" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="X86ISelDAGToDAG_8cpp.html#afc4e10b4f2ab2d548ab80b30f3b712e9">AtomicOpc</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>Atomic opcode table </p>
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="afc4e10b4f2ab2d548ab80b30f3b712e9acfcf145f2788bf340ff3f3098bc54909"></a><!-- doxytag: member="ADD" ref="afc4e10b4f2ab2d548ab80b30f3b712e9acfcf145f2788bf340ff3f3098bc54909" args="" -->ADD</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="afc4e10b4f2ab2d548ab80b30f3b712e9a12b733d4941495e86811fe6ceeeff9da"></a><!-- doxytag: member="SUB" ref="afc4e10b4f2ab2d548ab80b30f3b712e9a12b733d4941495e86811fe6ceeeff9da" args="" -->SUB</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="afc4e10b4f2ab2d548ab80b30f3b712e9a7967e4061665d0e072a0c3bffe00ac6d"></a><!-- doxytag: member="INC" ref="afc4e10b4f2ab2d548ab80b30f3b712e9a7967e4061665d0e072a0c3bffe00ac6d" args="" -->INC</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="afc4e10b4f2ab2d548ab80b30f3b712e9a851043138f8ef49c6eeea75760b69481"></a><!-- doxytag: member="DEC" ref="afc4e10b4f2ab2d548ab80b30f3b712e9a851043138f8ef49c6eeea75760b69481" args="" -->DEC</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="afc4e10b4f2ab2d548ab80b30f3b712e9a96727447c0ad447987df1c6415aef074"></a><!-- doxytag: member="OR" ref="afc4e10b4f2ab2d548ab80b30f3b712e9a96727447c0ad447987df1c6415aef074" args="" -->OR</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="afc4e10b4f2ab2d548ab80b30f3b712e9a865555c9f2e0458a7078486aa1b3254f"></a><!-- doxytag: member="AND" ref="afc4e10b4f2ab2d548ab80b30f3b712e9a865555c9f2e0458a7078486aa1b3254f" args="" -->AND</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="afc4e10b4f2ab2d548ab80b30f3b712e9ac62338ffb5de22369c75caa565b5da1a"></a><!-- doxytag: member="XOR" ref="afc4e10b4f2ab2d548ab80b30f3b712e9ac62338ffb5de22369c75caa565b5da1a" args="" -->XOR</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="afc4e10b4f2ab2d548ab80b30f3b712e9a443b2be81062f015608a765700db66ec"></a><!-- doxytag: member="AtomicOpcEnd" ref="afc4e10b4f2ab2d548ab80b30f3b712e9a443b2be81062f015608a765700db66ec" args="" -->AtomicOpcEnd</em> </td><td>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+<p>Definition at line <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l01510">1510</a> of file <a class="el" href="X86ISelDAGToDAG_8cpp_source.html">X86ISelDAGToDAG.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a96c1aa0eca38be914b9564cd17c82f8a"></a><!-- doxytag: member="X86ISelDAGToDAG.cpp::AtomicSz" ref="a96c1aa0eca38be914b9564cd17c82f8a" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum <a class="el" href="X86ISelDAGToDAG_8cpp.html#a96c1aa0eca38be914b9564cd17c82f8a">AtomicSz</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="a96c1aa0eca38be914b9564cd17c82f8aa0d2e913e2fd86f888d768aaea3b4f20c"></a><!-- doxytag: member="ConstantI8" ref="a96c1aa0eca38be914b9564cd17c82f8aa0d2e913e2fd86f888d768aaea3b4f20c" args="" -->ConstantI8</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a96c1aa0eca38be914b9564cd17c82f8aa8842984357dc9c9d3c441d1529f6b1a7"></a><!-- doxytag: member="I8" ref="a96c1aa0eca38be914b9564cd17c82f8aa8842984357dc9c9d3c441d1529f6b1a7" args="" -->I8</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a96c1aa0eca38be914b9564cd17c82f8aa67941b74249a74c74755ca8dd31df788"></a><!-- doxytag: member="SextConstantI16" ref="a96c1aa0eca38be914b9564cd17c82f8aa67941b74249a74c74755ca8dd31df788" args="" -->SextConstantI16</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a96c1aa0eca38be914b9564cd17c82f8aa730abdb44c8eead5365e1b6830c58154"></a><!-- doxytag: member="ConstantI16" ref="a96c1aa0eca38be914b9564cd17c82f8aa730abdb44c8eead5365e1b6830c58154" args="" -->ConstantI16</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a96c1aa0eca38be914b9564cd17c82f8aa8a57e45c133b807fad1be007b127287f"></a><!-- doxytag: member="I16" ref="a96c1aa0eca38be914b9564cd17c82f8aa8a57e45c133b807fad1be007b127287f" args="" -->I16</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a96c1aa0eca38be914b9564cd17c82f8aa250f0ba0c9ddd9735481a1a7758a28b2"></a><!-- doxytag: member="SextConstantI32" ref="a96c1aa0eca38be914b9564cd17c82f8aa250f0ba0c9ddd9735481a1a7758a28b2" args="" -->SextConstantI32</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a96c1aa0eca38be914b9564cd17c82f8aa459e82537e7b8715f12bf278fd58bde1"></a><!-- doxytag: member="ConstantI32" ref="a96c1aa0eca38be914b9564cd17c82f8aa459e82537e7b8715f12bf278fd58bde1" args="" -->ConstantI32</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a96c1aa0eca38be914b9564cd17c82f8aa68744fefeb088e8bae7ec95a0c0532ac"></a><!-- doxytag: member="I32" ref="a96c1aa0eca38be914b9564cd17c82f8aa68744fefeb088e8bae7ec95a0c0532ac" args="" -->I32</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a96c1aa0eca38be914b9564cd17c82f8aa755fb6cf65f9f9fd22e67304f08ba90c"></a><!-- doxytag: member="SextConstantI64" ref="a96c1aa0eca38be914b9564cd17c82f8aa755fb6cf65f9f9fd22e67304f08ba90c" args="" -->SextConstantI64</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a96c1aa0eca38be914b9564cd17c82f8aa448d3c03c5d271a0002d1b4b2f3e0e89"></a><!-- doxytag: member="ConstantI64" ref="a96c1aa0eca38be914b9564cd17c82f8aa448d3c03c5d271a0002d1b4b2f3e0e89" args="" -->ConstantI64</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a96c1aa0eca38be914b9564cd17c82f8aaa65eb6ad08456c6c3af62f1574ef3736"></a><!-- doxytag: member="I64" ref="a96c1aa0eca38be914b9564cd17c82f8aaa65eb6ad08456c6c3af62f1574ef3736" args="" -->I64</em> </td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a96c1aa0eca38be914b9564cd17c82f8aa3eb390ee21f43d1995b9b46118a09677"></a><!-- doxytag: member="AtomicSzEnd" ref="a96c1aa0eca38be914b9564cd17c82f8aa3eb390ee21f43d1995b9b46118a09677" args="" -->AtomicSzEnd</em> </td><td>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+<p>Definition at line <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l01521">1521</a> of file <a class="el" href="X86ISelDAGToDAG_8cpp_source.html">X86ISelDAGToDAG.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="adb3e41fa1653add6fb07e438c07f5ebf"></a><!-- doxytag: member="X86ISelDAGToDAG.cpp::FoldMaskAndShiftToExtract" ref="adb3e41fa1653add6fb07e438c07f5ebf" args="(SelectionDAG &DAG, SDValue N, uint64_t Mask, SDValue Shift, SDValue X, X86ISelAddressMode &AM)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> FoldMaskAndShiftToExtract </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SelectionDAG.html">SelectionDAG</a> & </td>
+          <td class="paramname"><em>DAG</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SDValue.html">SDValue</a> </td>
+          <td class="paramname"><em>N</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint64_t </td>
+          <td class="paramname"><em>Mask</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SDValue.html">SDValue</a> </td>
+          <td class="paramname"><em>Shift</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SDValue.html">SDValue</a> </td>
+          <td class="paramname"><em>X</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">X86ISelAddressMode & </td>
+          <td class="paramname"><em>AM</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l00766">766</a> of file <a class="el" href="X86ISelDAGToDAG_8cpp_source.html">X86ISelDAGToDAG.cpp</a>.</p>
+
+<p>References <a class="el" href="ISDOpcodes_8h_source.html#l00307">llvm::ISD::AND</a>, <a class="el" href="APInt_8h_source.html#l01759">llvm::APIntOps::And()</a>, <a class="el" href="SelectionDAG_8cpp_source.html#l00972">llvm::SelectionDAG::getConstant()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00783">llvm::SDValue::getConstantOperandVal()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00804">llvm::SDValue::getDebugLoc()</a>, <a class="el" href="SelectionDAG_8cpp_source.html#l02409">llvm::SelectionDAG::getNode()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00771">llvm::SDValue::getOpcode()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00780">llvm::SDValue::getOperand()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00774">llvm::SDValue::getValueType()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00801">llvm::SDValue::hasOneUse()</a>, <a class="el" href="ValueTypes_8h_source.html#l00040">llvm:
 :MVT::i8</a>, <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l00755">InsertDAGNode()</a>, <a class="el" href="SelectionDAG_8cpp_source.html#l05364">llvm::SelectionDAG::ReplaceAllUsesWith()</a>, <a class="el" href="ISDOpcodes_8h_source.html#l00316">llvm::ISD::SHL</a>, and <a class="el" href="ISDOpcodes_8h_source.html#l00316">llvm::ISD::SRL</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ade4f4c1f5a55552504026f8574a9c893"></a><!-- doxytag: member="X86ISelDAGToDAG.cpp::FoldMaskAndShiftToScale" ref="ade4f4c1f5a55552504026f8574a9c893" args="(SelectionDAG &DAG, SDValue N, uint64_t Mask, SDValue Shift, SDValue X, X86ISelAddressMode &AM)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> FoldMaskAndShiftToScale </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SelectionDAG.html">SelectionDAG</a> & </td>
+          <td class="paramname"><em>DAG</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SDValue.html">SDValue</a> </td>
+          <td class="paramname"><em>N</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint64_t </td>
+          <td class="paramname"><em>Mask</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SDValue.html">SDValue</a> </td>
+          <td class="paramname"><em>Shift</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SDValue.html">SDValue</a> </td>
+          <td class="paramname"><em>X</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">X86ISelAddressMode & </td>
+          <td class="paramname"><em>AM</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l00876">876</a> of file <a class="el" href="X86ISelDAGToDAG_8cpp_source.html">X86ISelDAGToDAG.cpp</a>.</p>
+
+<p>References <a class="el" href="ISDOpcodes_8h_source.html#l00370">llvm::ISD::ANY_EXTEND</a>, <a class="el" href="SelectionDAG_8cpp_source.html#l01688">llvm::SelectionDAG::ComputeMaskedBits()</a>, <a class="el" href="MathExtras_8h_source.html#l00196">llvm::CountLeadingZeros_64()</a>, <a class="el" href="MathExtras_8h_source.html#l00292">llvm::CountTrailingOnes_64()</a>, <a class="el" href="MathExtras_8h_source.html#l00273">llvm::CountTrailingZeros_64()</a>, <a class="el" href="SelectionDAG_8cpp_source.html#l00972">llvm::SelectionDAG::getConstant()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00783">llvm::SDValue::getConstantOperandVal()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00804">llvm::SDValue::getDebugLoc()</a>, <a class="el" href="APInt_8h_source.html#l00479">llvm::APInt::getHighBitsSet()</a>, <a class="el" href="SelectionDAG_8cpp_source.html#l02409">llvm::SelectionDAG::getNode()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html
 #l00771">llvm::SDValue::getOpcode()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00780">llvm::SDValue::getOperand()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00135">llvm::SDValue::getValueSizeInBits()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00774">llvm::SDValue::getValueType()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00801">llvm::SDValue::hasOneUse()</a>, <a class="el" href="ValueTypes_8h_source.html#l00040">llvm::MVT::i8</a>, <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l00755">InsertDAGNode()</a>, <a class="el" href="SelectionDAG_8cpp_source.html#l05364">llvm::SelectionDAG::ReplaceAllUsesWith()</a>, <a class="el" href="ISDOpcodes_8h_source.html#l00316">llvm::ISD::SHL</a>, <a class="el" href="ISDOpcodes_8h_source.html#l00316">llvm::ISD::SRL</a>, <a class="el" href="namespacellvm.html#a6569d00d31a5d74e563e2f39f82271ab">llvm::X</a>, and <a class="el" href="ISDOpcodes_8h_source.html#l00367">llvm::ISD::
 ZERO_EXTEND</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2bf7db878e7e3a32aec73521459cf6a1"></a><!-- doxytag: member="X86ISelDAGToDAG.cpp::FoldMaskedShiftToScaledMask" ref="a2bf7db878e7e3a32aec73521459cf6a1" args="(SelectionDAG &DAG, SDValue N, uint64_t Mask, SDValue Shift, SDValue X, X86ISelAddressMode &AM)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> FoldMaskedShiftToScaledMask </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SelectionDAG.html">SelectionDAG</a> & </td>
+          <td class="paramname"><em>DAG</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SDValue.html">SDValue</a> </td>
+          <td class="paramname"><em>N</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">uint64_t </td>
+          <td class="paramname"><em>Mask</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SDValue.html">SDValue</a> </td>
+          <td class="paramname"><em>Shift</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SDValue.html">SDValue</a> </td>
+          <td class="paramname"><em>X</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">X86ISelAddressMode & </td>
+          <td class="paramname"><em>AM</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l00809">809</a> of file <a class="el" href="X86ISelDAGToDAG_8cpp_source.html">X86ISelDAGToDAG.cpp</a>.</p>
+
+<p>References <a class="el" href="ISDOpcodes_8h_source.html#l00307">llvm::ISD::AND</a>, <a class="el" href="SelectionDAG_8cpp_source.html#l00972">llvm::SelectionDAG::getConstant()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00783">llvm::SDValue::getConstantOperandVal()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00804">llvm::SDValue::getDebugLoc()</a>, <a class="el" href="SelectionDAG_8cpp_source.html#l02409">llvm::SelectionDAG::getNode()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00771">llvm::SDValue::getOpcode()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00780">llvm::SDValue::getOperand()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00774">llvm::SDValue::getValueType()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00801">llvm::SDValue::hasOneUse()</a>, <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l00755">InsertDAGNode()</a>, <a class="el" href="SelectionDAG_8cpp_source.html#l05
 364">llvm::SelectionDAG::ReplaceAllUsesWith()</a>, and <a class="el" href="ISDOpcodes_8h_source.html#l00316">llvm::ISD::SHL</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aecae5ee163f95610e5f5c50cc975e3ca"></a><!-- doxytag: member="X86ISelDAGToDAG.cpp::getAtomicLoadArithTargetConstant" ref="aecae5ee163f95610e5f5c50cc975e3ca" args="(SelectionDAG *CurDAG, DebugLoc dl, enum AtomicOpc &Op, EVT NVT, SDValue Val)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classllvm_1_1SDValue.html">SDValue</a> getAtomicLoadArithTargetConstant </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SelectionDAG.html">SelectionDAG</a> * </td>
+          <td class="paramname"><em>CurDAG</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1DebugLoc.html">DebugLoc</a> </td>
+          <td class="paramname"><em>dl</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">enum <a class="el" href="X86ISelDAGToDAG_8cpp.html#afc4e10b4f2ab2d548ab80b30f3b712e9">AtomicOpc</a> & </td>
+          <td class="paramname"><em>Op</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structllvm_1_1EVT.html">EVT</a> </td>
+          <td class="paramname"><em>NVT</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SDValue.html">SDValue</a> </td>
+          <td class="paramname"><em>Val</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l01636">1636</a> of file <a class="el" href="X86ISelDAGToDAG_8cpp_source.html">X86ISelDAGToDAG.cpp</a>.</p>
+
+<p>References <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l01511">ADD</a>, <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l01514">DEC</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00771">llvm::SDValue::getOpcode()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00780">llvm::SDValue::getOperand()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l01162">llvm::ConstantSDNode::getSExtValue()</a>, <a class="el" href="SelectionDAG_8h_source.html#l00369">llvm::SelectionDAG::getTargetConstant()</a>, <a class="el" href="SelectionDAG_8cpp_source.html#l05281">llvm::SelectionDAG::getTargetExtractSubreg()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00801">llvm::SDValue::hasOneUse()</a>, <a class="el" href="ValueTypes_8h_source.html#l00041">llvm::MVT::i16</a>, <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l01513">INC</a>, <a class="el" href="X86ISelLowering_8cpp_source.html#l04162">llvm::X86::isZeroNode()</a>, <a class=
 "el" href="ISDOpcodes_8h_source.html#l00188">llvm::ISD::SUB</a>, <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l01512">SUB</a>, and <a class="el" href="ISDOpcodes_8h_source.html#l00373">llvm::ISD::TRUNCATE</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7183c66b968f67a612e2be5fd902d3e9"></a><!-- doxytag: member="X86ISelDAGToDAG.cpp::getFusedLdStOpcode" ref="a7183c66b968f67a612e2be5fd902d3e9" args="(EVT &LdVT, unsigned Opc)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classunsigned.html">unsigned</a> getFusedLdStOpcode </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structllvm_1_1EVT.html">EVT</a> & </td>
+          <td class="paramname"><em>LdVT</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> </td>
+          <td class="paramname"><em>Opc</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>getFusedLdStOpcode - Get the appropriate X86 opcode for an in memory increment or decrement. Opc should be X86ISD::DEC or X86ISD::INC. </p>
+
+<p>Definition at line <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l01933">1933</a> of file <a class="el" href="X86ISelDAGToDAG_8cpp_source.html">X86ISelDAGToDAG.cpp</a>.</p>
+
+<p>References <a class="el" href="X86ISelLowering_8h_source.html#l00273">llvm::X86ISD::DEC</a>, <a class="el" href="ValueTypes_8h_source.html#l00041">llvm::MVT::i16</a>, <a class="el" href="ValueTypes_8h_source.html#l00042">llvm::MVT::i32</a>, <a class="el" href="ValueTypes_8h_source.html#l00043">llvm::MVT::i64</a>, <a class="el" href="ValueTypes_8h_source.html#l00040">llvm::MVT::i8</a>, <a class="el" href="X86ISelLowering_8h_source.html#l00273">llvm::X86ISD::INC</a>, and <a class="el" href="ErrorHandling_8h_source.html#l00098">llvm_unreachable</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8ad82d103604e27f8e067e0edfce5347"></a><!-- doxytag: member="X86ISelDAGToDAG.cpp::HasNoSignedComparisonUses" ref="a8ad82d103604e27f8e067e0edfce5347" args="(SDNode *N)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> HasNoSignedComparisonUses </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SDNode.html">SDNode</a> * </td>
+          <td class="paramname"><em>N</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>HasNoSignedComparisonUses - Test whether the given X86ISD::CMP node has any uses which require the SF or OF bits to be accurate. </p>
+
+<p>Definition at line <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l01785">1785</a> of file <a class="el" href="X86ISelDAGToDAG_8cpp_source.html">X86ISelDAGToDAG.cpp</a>.</p>
+
+<p>References <a class="el" href="ISDOpcodes_8h_source.html#l00158">llvm::ISD::CopyToReg</a>, <a class="el" href="MipsDisassembler_8cpp_source.html#l00330">getReg()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00482">llvm::SDNode::use_begin()</a>, and <a class="el" href="SelectionDAGNodes_8h_source.html#l00486">llvm::SDNode::use_end()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa0db74423051aebc66e0b6f8c540a5bf"></a><!-- doxytag: member="X86ISelDAGToDAG.cpp::InsertDAGNode" ref="aa0db74423051aebc66e0b6f8c540a5bf" args="(SelectionDAG &DAG, SDValue Pos, SDValue N)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void InsertDAGNode </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SelectionDAG.html">SelectionDAG</a> & </td>
+          <td class="paramname"><em>DAG</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SDValue.html">SDValue</a> </td>
+          <td class="paramname"><em>Pos</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SDValue.html">SDValue</a> </td>
+          <td class="paramname"><em>N</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l00755">755</a> of file <a class="el" href="X86ISelDAGToDAG_8cpp_source.html">X86ISelDAGToDAG.cpp</a>.</p>
+
+<p>References <a class="el" href="SelectionDAGNodes_8h_source.html#l00105">llvm::SDValue::getNode()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00411">llvm::SDNode::getNodeId()</a>, <a class="el" href="SelectionDAG_8h_source.html#l00912">llvm::SelectionDAG::RepositionNode()</a>, and <a class="el" href="SelectionDAGNodes_8h_source.html#l00414">llvm::SDNode::setNodeId()</a>.</p>
+
+<p>Referenced by <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l00766">FoldMaskAndShiftToExtract()</a>, <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l00876">FoldMaskAndShiftToScale()</a>, and <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l00809">FoldMaskedShiftToScaledMask()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac0a91fd2157f9b3a8880ce8373396108"></a><!-- doxytag: member="X86ISelDAGToDAG.cpp::isCalleeLoad" ref="ac0a91fd2157f9b3a8880ce8373396108" args="(SDValue Callee, SDValue &Chain, bool HasCallSeq)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> isCalleeLoad </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SDValue.html">SDValue</a> </td>
+          <td class="paramname"><em>Callee</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SDValue.html">SDValue</a> & </td>
+          <td class="paramname"><em>Chain</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td>
+          <td class="paramname"><em>HasCallSeq</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>isCalleeLoad - Return true if call address is a load and it can be moved below CALLSEQ_START and the chains leading up to the call. Return the CALLSEQ_START by reference as a second output. In the case of a tail call, there isn't a callseq node between the call chain and the load. </p>
+
+<p>Definition at line <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l00403">403</a> of file <a class="el" href="X86ISelDAGToDAG_8cpp_source.html">X86ISelDAGToDAG.cpp</a>.</p>
+
+<p>References <a class="el" href="ISDOpcodes_8h_source.html#l00537">llvm::ISD::CALLSEQ_START</a>, <a class="el" href="Casting_8h_source.html#l00233">llvm::dyn_cast()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l01604">llvm::LSBaseSDNode::getAddressingMode()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l01638">llvm::LoadSDNode::getExtensionType()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00105">llvm::SDValue::getNode()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00777">llvm::SDValue::getNumOperands()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00771">llvm::SDValue::getOpcode()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00780">llvm::SDValue::getOperand()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00122">llvm::SDValue::getValue()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00801">llvm::SDValue::hasOneUse()</a>, <a class="el" href="SelectionDAG_8cpp_source.htm
 l#l05880">llvm::SDValue::isOperandOf()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00925">llvm::MemSDNode::isVolatile()</a>, <a class="el" href="ISDOpcodes_8h_source.html#l00703">llvm::ISD::NON_EXTLOAD</a>, <a class="el" href="ISDOpcodes_8h_source.html#l00050">llvm::ISD::TokenFactor</a>, and <a class="el" href="ISDOpcodes_8h_source.html#l00684">llvm::ISD::UNINDEXED</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="accefa4c7462a1332c8e02f04942cd445"></a><!-- doxytag: member="X86ISelDAGToDAG.cpp::isDispSafeForFrameIndex" ref="accefa4c7462a1332c8e02f04942cd445" args="(int64_t Val)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> isDispSafeForFrameIndex </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classint64__t.html">int64_t</a> </td>
+          <td class="paramname"><em>Val</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l00569">569</a> of file <a class="el" href="X86ISelDAGToDAG_8cpp_source.html">X86ISelDAGToDAG.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae28feb8429fd7afe136662ecbedb0c8c"></a><!-- doxytag: member="X86ISelDAGToDAG.cpp::isLoadIncOrDecStore" ref="ae28feb8429fd7afe136662ecbedb0c8c" args="(StoreSDNode *StoreNode, unsigned Opc, SDValue StoredVal, SelectionDAG *CurDAG, LoadSDNode *&LoadNode, SDValue &InputChain)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> isLoadIncOrDecStore </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1StoreSDNode.html">StoreSDNode</a> * </td>
+          <td class="paramname"><em>StoreNode</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> </td>
+          <td class="paramname"><em>Opc</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SDValue.html">SDValue</a> </td>
+          <td class="paramname"><em>StoredVal</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SelectionDAG.html">SelectionDAG</a> * </td>
+          <td class="paramname"><em>CurDAG</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1LoadSDNode.html">LoadSDNode</a> *& </td>
+          <td class="paramname"><em>LoadNode</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SDValue.html">SDValue</a> & </td>
+          <td class="paramname"><em>InputChain</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>isLoadIncOrDecStore - Check whether or not the chain ending in StoreNode is suitable for doing the {load; increment or decrement; store} to modify transformation. </p>
+
+<p>Definition at line <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l01848">1848</a> of file <a class="el" href="X86ISelDAGToDAG_8cpp_source.html">X86ISelDAGToDAG.cpp</a>.</p>
+
+<p>References <a class="el" href="X86ISelLowering_8h_source.html#l00273">llvm::X86ISD::DEC</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l01642">llvm::LoadSDNode::getBasePtr()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l01672">llvm::StoreSDNode::getBasePtr()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00970">llvm::MemSDNode::getChain()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00804">llvm::SDValue::getDebugLoc()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00947">llvm::MemSDNode::getMemoryVT()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00105">llvm::SDValue::getNode()</a>, <a class="el" href="SelectionDAG_8cpp_source.html#l02409">llvm::SelectionDAG::getNode()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00411">llvm::SDNode::getNodeId()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00777">llvm::SDValue::getNumOperands()</a>, <a class="el" href="SelectionDAGNodes_
 8h_source.html#l01643">llvm::LoadSDNode::getOffset()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l01673">llvm::StoreSDNode::getOffset()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00771">llvm::SDValue::getOpcode()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00780">llvm::SDValue::getOperand()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00102">llvm::SDValue::getResNo()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00122">llvm::SDValue::getValue()</a>, <a class="el" href="SelectionDAG_8cpp_source.html#l05833">llvm::SDNode::hasNUsesOfValue()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00801">llvm::SDValue::hasOneUse()</a>, <a class="el" href="ValueTypes_8h_source.html#l00041">llvm::MVT::i16</a>, <a class="el" href="ValueTypes_8h_source.html#l00042">llvm::MVT::i32</a>, <a class="el" href="ValueTypes_8h_source.html#l00043">llvm::MVT::i64</a>, <a class="el" href="ValueTypes_8h_source.html#l00040"
 >llvm::MVT::i8</a>, <a class="el" href="X86ISelLowering_8h_source.html#l00273">llvm::X86ISD::INC</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00926">llvm::MemSDNode::isNonTemporal()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l01789">llvm::ISD::isNormalLoad()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l01832">llvm::ISD::isNormalStore()</a>, <a class="el" href="SparcInstrInfo_8h_source.html#l00031">llvm::SPII::Load</a>, <a class="el" href="ValueTypes_8h_source.html#l00038">llvm::MVT::Other</a>, <a class="el" href="SmallVector_8h_source.html#l00231">llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back()</a>, <a class="el" href="SmallVector_8h_source.html#l00126">llvm::SmallVectorTemplateCommon< T >::size()</a>, <a class="el" href="ISDOpcodes_8h_source.html#l00050">llvm::ISD::TokenFactor</a>, and <a class="el" href="SelectionDAGNodes_8h_source.html#l00482">llvm::SDNode::use_begin()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="acb91a4867f4f627e9d3c60fa2471a894"></a><!-- doxytag: member="X86ISelDAGToDAG.cpp::MoveBelowOrigChain" ref="acb91a4867f4f627e9d3c60fa2471a894" args="(SelectionDAG *CurDAG, SDValue Load, SDValue Call, SDValue OrigChain)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void MoveBelowOrigChain </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SelectionDAG.html">SelectionDAG</a> * </td>
+          <td class="paramname"><em>CurDAG</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SDValue.html">SDValue</a> </td>
+          <td class="paramname"><em>Load</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SDValue.html">SDValue</a> </td>
+          <td class="paramname"><em>Call</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1SDValue.html">SDValue</a> </td>
+          <td class="paramname"><em>OrigChain</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+<p>MoveBelowCallOrigChain - Replace the original chain operand of the call with load's chain operand and move load below the call's chain operand. </p>
+
+<p>Definition at line <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l00364">364</a> of file <a class="el" href="X86ISelDAGToDAG_8cpp_source.html">X86ISelDAGToDAG.cpp</a>.</p>
+
+<p>References <a class="el" href="SmallVector_8h_source.html#l00390">llvm::SmallVectorImpl< T >::clear()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00804">llvm::SDValue::getDebugLoc()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00105">llvm::SDValue::getNode()</a>, <a class="el" href="SelectionDAG_8cpp_source.html#l02409">llvm::SelectionDAG::getNode()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00777">llvm::SDValue::getNumOperands()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00532">llvm::SDNode::getNumOperands()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00771">llvm::SDValue::getOpcode()</a>, <a class="el" href="SelectionDAGNodes_8h_source.html#l00780">llvm::SDValue::getOperand()</a>, <a class="el" href="ValueTypes_8h_source.html#l00038">llvm::MVT::Other</a>, <a class="el" href="SmallVector_8h_source.html#l00231">llvm::SmallVectorTemplateBase< T, isPodLike >::push_back()</a>, <a class="e
 l" href="SmallVector_8h_source.html#l00126">llvm::SmallVectorTemplateCommon< T, typename >::size()</a>, <a class="el" href="ISDOpcodes_8h_source.html#l00050">llvm::ISD::TokenFactor</a>, and <a class="el" href="SelectionDAG_8cpp_source.html#l04781">llvm::SelectionDAG::UpdateNodeOperands()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2703c20c686bb300521ff3775ea49862"></a><!-- doxytag: member="X86ISelDAGToDAG.cpp::STATISTIC" ref="a2703c20c686bb300521ff3775ea49862" args="(NumLoadMoved,"Number of loads moved below TokenFactor")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">NumLoadMoved </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of loads moved below TokenFactor" </td>
+          <td class="paramname"> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<hr/><h2>Variable Documentation</h2>
+<a class="anchor" id="ae86d1f5121bd42a40218d95cfb3a3856"></a><!-- doxytag: member="X86ISelDAGToDAG.cpp::AtomicOpcTbl" ref="ae86d1f5121bd42a40218d95cfb3a3856" args="[AtomicOpcEnd][AtomicSzEnd]" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const uint16_t <a class="el" href="X86ISelDAGToDAG_8cpp.html#ae86d1f5121bd42a40218d95cfb3a3856">AtomicOpcTbl</a>[AtomicOpcEnd][AtomicSzEnd]<code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="X86ISelDAGToDAG_8cpp_source.html#l01536">1536</a> of file <a class="el" href="X86ISelDAGToDAG_8cpp_source.html">X86ISelDAGToDAG.cpp</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:59 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/X86InstrBuilder_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86InstrBuilder_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86InstrBuilder_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86InstrBuilder_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,95 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="LLVM,Low Level Virtual Machine,C++,doxygen,API,documentation"/>
+<meta name="description" content="C++ source code API documentation for LLVM."/>
+<title>LLVM: X86InstrBuilder.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">LLVM API Documentation</p>
+<!-- Generated by Doxygen 1.7.5.1 -->
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li><a href="dirs.html"><span>Directories</span></a></li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+  <div id="nav-path" class="navpath">
+    <ul>
+      <li class="navelem"><a class="el" href="dir_b41d254693bea6e92988e5bb1ad97e02.html">llvm-3.2.src</a>      </li>
+      <li class="navelem"><a class="el" href="dir_74e9364f374e99e3aeab4fae4e196292.html">lib</a>      </li>
+      <li class="navelem"><a class="el" href="dir_8a55ec9894173378e0d08f27f306eeee.html">Target</a>      </li>
+      <li class="navelem"><a class="el" href="dir_ae72ec760f5f4d3869211e663a0eb354.html">X86</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#namespaces">Namespaces</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">X86InstrBuilder.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="MachineFrameInfo_8h_source.html">llvm/CodeGen/MachineFrameInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineInstrBuilder_8h_source.html">llvm/CodeGen/MachineInstrBuilder.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineMemOperand_8h_source.html">llvm/CodeGen/MachineMemOperand.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for X86InstrBuilder.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="X86InstrBuilder_8h__incl.png" border="0" usemap="#X86InstrBuilder_8h" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="X86InstrBuilder_8h__dep__incl.png" border="0" usemap="#X86InstrBuilder_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="X86InstrBuilder_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structllvm_1_1X86AddressMode.html">llvm::X86AddressMode</a></td></tr>
+<tr><td colspan="2"><h2><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html">llvm</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>List of target independent CodeGen pass IDs. </p>
+<br/></td></tr>
+<tr><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const MachineInstrBuilder & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a7deeb79374a4ce4759e961fd9b15ac51">llvm::addDirectMem</a> (const MachineInstrBuilder &MIB, <a class="el" href="classunsigned.html">unsigned</a> <a class="el" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const MachineInstrBuilder & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#ac69ffa25019a9273380556dacb1ba33b">llvm::addOffset</a> (const MachineInstrBuilder &MIB, int Offset)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const MachineInstrBuilder & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#afad63f3314b8553ee3c26d020b3ce09e">llvm::addRegOffset</a> (const MachineInstrBuilder &MIB, <a class="el" href="classunsigned.html">unsigned</a> <a class="el" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>, <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> isKill, int Offset)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const MachineInstrBuilder & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a5a1ffa9f6330c88feb36340a950ba397">llvm::addRegReg</a> (const MachineInstrBuilder &MIB, <a class="el" href="classunsigned.html">unsigned</a> Reg1, <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> isKill1, <a class="el" href="classunsigned.html">unsigned</a> Reg2, <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> isKill2)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const MachineInstrBuilder & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#ad11e067542096816d0c437207ac8b6a5">llvm::addFullAddress</a> (const MachineInstrBuilder &MIB, const X86AddressMode &AM)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const MachineInstrBuilder & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#abb61fb22beff503123bcd41ffbf78657">llvm::addFrameReference</a> (const MachineInstrBuilder &MIB, int FI, int Offset=0)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const MachineInstrBuilder & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a50b5022f49230c55af9e1bf267af74eb">llvm::addConstantPoolReference</a> (const MachineInstrBuilder &MIB, <a class="el" href="classunsigned.html">unsigned</a> CPI, <a class="el" href="classunsigned.html">unsigned</a> GlobalBaseReg, <a class="el" href="classunsigned.html">unsigned</a> <a class="el" href="classchar.html">char</a> OpFlags)</td></tr>
+</table>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:59 for <a href="http://llvm.org/">LLVM</a> by
+<a href="http://www.doxygen.org"><img src="doxygen.png" alt="Doxygen"
+align="middle" border="0"/>1.7.5.1</a><br>
+Copyright © 2003-2012 University of Illinois at Urbana-Champaign.
+All Rights Reserved.</p>
+
+<hr>
+<!--#include virtual="/attrib.incl" -->
+
+</body>
+</html>

Added: www-releases/trunk/3.2/docs/doxygen/html/X86InstrBuilder_8h__dep__incl.md5
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/X86InstrBuilder_8h__dep__incl.md5?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/X86InstrBuilder_8h__dep__incl.md5 (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/X86InstrBuilder_8h__dep__incl.md5 Fri Dec 21 00:57:24 2012
@@ -0,0 +1 @@
+668d2fc9b18ac33c48c95cdafbe9de4d
\ No newline at end of file





More information about the llvm-commits mailing list