[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> ®ion,
+<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>*)®ion,
+<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