[llvm-commits] [www-releases] r170845 [17/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/LiveIntervalAnalysis_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LiveIntervalAnalysis_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LiveIntervalAnalysis_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LiveIntervalAnalysis_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,450 @@
+<!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: LiveIntervalAnalysis.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">LiveIntervalAnalysis.h</div>  </div>
+</div>
+<div class="contents">
+<a href="LiveIntervalAnalysis_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- LiveIntervalAnalysis.h - Live Interval Analysis ---------*- 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 implements the LiveInterval analysis pass.  Given some numbering of</span>
+<a name="l00011"></a>00011 <span class="comment">// each the machine instructions (in this implemention depth-first order) an</span>
+<a name="l00012"></a>00012 <span class="comment">// interval [i, j) is said to be a live interval for register v if there is no</span>
+<a name="l00013"></a>00013 <span class="comment">// instruction with number j' > j such that v is live at j' and there is no</span>
+<a name="l00014"></a>00014 <span class="comment">// instruction with number i' < i such that v is live at i'. In this</span>
+<a name="l00015"></a>00015 <span class="comment">// implementation intervals can have holes, i.e. an interval might look like</span>
+<a name="l00016"></a>00016 <span class="comment">// [1,20), [50,65), [1000,1001).</span>
+<a name="l00017"></a>00017 <span class="comment">//</span>
+<a name="l00018"></a>00018 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00019"></a>00019 
+<a name="l00020"></a>00020 <span class="preprocessor">#ifndef LLVM_CODEGEN_LIVEINTERVAL_ANALYSIS_H</span>
+<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CODEGEN_LIVEINTERVAL_ANALYSIS_H</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="TargetRegisterInfo_8h.html">llvm/Target/TargetRegisterInfo.h</a>"</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="MachineBasicBlock_8h.html">llvm/CodeGen/MachineBasicBlock.h</a>"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="MachineFunctionPass_8h.html">llvm/CodeGen/MachineFunctionPass.h</a>"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="LiveInterval_8h.html">llvm/CodeGen/LiveInterval.h</a>"</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="SlotIndexes_8h.html">llvm/CodeGen/SlotIndexes.h</a>"</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="BitVector_8h.html">llvm/ADT/BitVector.h</a>"</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="IndexedMap_8h.html">llvm/ADT/IndexedMap.h</a>"</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="SmallPtrSet_8h.html">llvm/ADT/SmallPtrSet.h</a>"</span>
+<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="SmallVector_8h.html">llvm/ADT/SmallVector.h</a>"</span>
+<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="Allocator_8h.html">llvm/Support/Allocator.h</a>"</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include <cmath></span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include <iterator></span>
+<a name="l00035"></a>00035 
+<a name="l00036"></a>00036 <span class="keyword">namespace </span>llvm {
+<a name="l00037"></a>00037 
+<a name="l00038"></a>00038   <span class="keyword">class </span><a class="code" href="BasicAliasAnalysis_8cpp.html#ad1b77598f771e74506b28a6ead5aa535">AliasAnalysis</a>;
+<a name="l00039"></a>00039   <span class="keyword">class </span>LiveRangeCalc;
+<a name="l00040"></a>00040   <span class="keyword">class </span>LiveVariables;
+<a name="l00041"></a>00041   <span class="keyword">class </span>MachineDominatorTree;
+<a name="l00042"></a>00042   <span class="keyword">class </span>MachineLoopInfo;
+<a name="l00043"></a>00043   <span class="keyword">class </span>TargetRegisterInfo;
+<a name="l00044"></a>00044   <span class="keyword">class </span>MachineRegisterInfo;
+<a name="l00045"></a>00045   <span class="keyword">class </span>TargetInstrInfo;
+<a name="l00046"></a>00046   <span class="keyword">class </span>TargetRegisterClass;
+<a name="l00047"></a>00047   <span class="keyword">class </span>VirtRegMap;
+<a name="l00048"></a>00048 
+<a name="l00049"></a><a class="code" href="classllvm_1_1LiveIntervals.html">00049</a>   <span class="keyword">class </span><a class="code" href="classllvm_1_1LiveIntervals.html">LiveIntervals</a> : <span class="keyword">public</span> <a class="code" href="classllvm_1_1MachineFunctionPass.html">MachineFunctionPass</a> {
+<a name="l00050"></a>00050     <a class="code" href="classllvm_1_1MachineFunction.html">MachineFunction</a>* MF;
+<a name="l00051"></a>00051     <a class="code" href="classllvm_1_1MachineRegisterInfo.html">MachineRegisterInfo</a>* MRI;
+<a name="l00052"></a>00052     <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetMachine.html">TargetMachine</a>* TM;
+<a name="l00053"></a>00053     <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetRegisterInfo.html">TargetRegisterInfo</a>* TRI;
+<a name="l00054"></a>00054     <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetInstrInfo.html">TargetInstrInfo</a>* TII;
+<a name="l00055"></a>00055     <a class="code" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a> *AA;
+<a name="l00056"></a>00056     <a class="code" href="classllvm_1_1LiveVariables.html">LiveVariables</a>* LV;
+<a name="l00057"></a>00057     <a class="code" href="classllvm_1_1SlotIndexes.html">SlotIndexes</a>* Indexes;
+<a name="l00058"></a>00058     <a class="code" href="classllvm_1_1MachineDominatorTree.html">MachineDominatorTree</a> *DomTree;
+<a name="l00059"></a>00059     <a class="code" href="classllvm_1_1LiveRangeCalc.html">LiveRangeCalc</a> *LRCalc;
+<a name="l00060"></a>00060 <span class="comment"></span>
+<a name="l00061"></a>00061 <span class="comment">    /// Special pool allocator for VNInfo's (LiveInterval val#).</span>
+<a name="l00062"></a>00062 <span class="comment">    ///</span>
+<a name="l00063"></a>00063 <span class="comment"></span>    <a class="code" href="classllvm_1_1BumpPtrAllocator.html">VNInfo::Allocator</a> VNInfoAllocator;
+<a name="l00064"></a>00064 <span class="comment"></span>
+<a name="l00065"></a>00065 <span class="comment">    /// Live interval pointers for all the virtual registers.</span>
+<a name="l00066"></a>00066 <span class="comment"></span>    <a class="code" href="classllvm_1_1IndexedMap.html">IndexedMap<LiveInterval*, VirtReg2IndexFunctor></a> VirtRegIntervals;
+<a name="l00067"></a>00067 <span class="comment"></span>
+<a name="l00068"></a>00068 <span class="comment">    /// RegMaskSlots - Sorted list of instructions with register mask operands.</span>
+<a name="l00069"></a>00069 <span class="comment">    /// Always use the 'r' slot, RegMasks are normal clobbers, not early</span>
+<a name="l00070"></a>00070 <span class="comment">    /// clobbers.</span>
+<a name="l00071"></a>00071 <span class="comment"></span>    <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<SlotIndex, 8></a> RegMaskSlots;
+<a name="l00072"></a>00072 <span class="comment"></span>
+<a name="l00073"></a>00073 <span class="comment">    /// RegMaskBits - This vector is parallel to RegMaskSlots, it holds a</span>
+<a name="l00074"></a>00074 <span class="comment">    /// pointer to the corresponding register mask.  This pointer can be</span>
+<a name="l00075"></a>00075 <span class="comment">    /// recomputed as:</span>
+<a name="l00076"></a>00076 <span class="comment">    ///</span>
+<a name="l00077"></a>00077 <span class="comment">    ///   MI = Indexes->getInstructionFromIndex(RegMaskSlot[N]);</span>
+<a name="l00078"></a>00078 <span class="comment">    ///   unsigned OpNum = findRegMaskOperand(MI);</span>
+<a name="l00079"></a>00079 <span class="comment">    ///   RegMaskBits[N] = MI->getOperand(OpNum).getRegMask();</span>
+<a name="l00080"></a>00080 <span class="comment">    ///</span>
+<a name="l00081"></a>00081 <span class="comment">    /// This is kept in a separate vector partly because some standard</span>
+<a name="l00082"></a>00082 <span class="comment">    /// libraries don't support lower_bound() with mixed objects, partly to</span>
+<a name="l00083"></a>00083 <span class="comment">    /// improve locality when searching in RegMaskSlots.</span>
+<a name="l00084"></a>00084 <span class="comment">    /// Also see the comment in LiveInterval::find().</span>
+<a name="l00085"></a>00085 <span class="comment"></span>    <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<const uint32_t*, 8></a> RegMaskBits;
+<a name="l00086"></a>00086 <span class="comment"></span>
+<a name="l00087"></a>00087 <span class="comment">    /// For each basic block number, keep (begin, size) pairs indexing into the</span>
+<a name="l00088"></a>00088 <span class="comment">    /// RegMaskSlots and RegMaskBits arrays.</span>
+<a name="l00089"></a>00089 <span class="comment">    /// Note that basic block numbers may not be layout contiguous, that's why</span>
+<a name="l00090"></a>00090 <span class="comment">    /// we can't just keep track of the first register mask in each basic</span>
+<a name="l00091"></a>00091 <span class="comment">    /// block.</span>
+<a name="l00092"></a>00092 <span class="comment"></span>    <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<std::pair<unsigned, unsigned></a>, 8> RegMaskBlocks;
+<a name="l00093"></a>00093 <span class="comment"></span>
+<a name="l00094"></a>00094 <span class="comment">    /// RegUnitIntervals - Keep a live interval for each register unit as a way</span>
+<a name="l00095"></a>00095 <span class="comment">    /// of tracking fixed physreg interference.</span>
+<a name="l00096"></a>00096 <span class="comment"></span>    <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<LiveInterval*, 0></a> RegUnitIntervals;
+<a name="l00097"></a>00097 
+<a name="l00098"></a>00098   <span class="keyword">public</span>:
+<a name="l00099"></a><a class="code" href="classllvm_1_1LiveIntervals.html#ada20152edd7591ed264952fd22045f60">00099</a>     <span class="keyword">static</span> <span class="keywordtype">char</span> <a class="code" href="classllvm_1_1LiveIntervals.html#ada20152edd7591ed264952fd22045f60">ID</a>; <span class="comment">// Pass identification, replacement for typeid</span>
+<a name="l00100"></a>00100     <a class="code" href="classllvm_1_1LiveIntervals.html#abb1809844bac2664d50ac8b85dffb3a1">LiveIntervals</a>();
+<a name="l00101"></a>00101     <span class="keyword">virtual</span> <a class="code" href="classllvm_1_1LiveIntervals.html#a051abd547aad728ae7aeb43f0a7b25bf">~LiveIntervals</a>();
+<a name="l00102"></a>00102 
+<a name="l00103"></a>00103     <span class="comment">// Calculate the spill weight to assign to a single instruction.</span>
+<a name="l00104"></a>00104     <span class="keyword">static</span> <span class="keywordtype">float</span> <a class="code" href="classllvm_1_1LiveIntervals.html#a4800a53f818eac9ad6eae1043849e646">getSpillWeight</a>(<span class="keywordtype">bool</span> isDef, <span class="keywordtype">bool</span> isUse, <span class="keywordtype">unsigned</span> loopDepth);
+<a name="l00105"></a>00105 
+<a name="l00106"></a><a class="code" href="classllvm_1_1LiveIntervals.html#a70cf6a51b043dc9f8ae683c266d5d9c4">00106</a>     <a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a> &<a class="code" href="classllvm_1_1LiveIntervals.html#a70cf6a51b043dc9f8ae683c266d5d9c4">getInterval</a>(<span class="keywordtype">unsigned</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>) {
+<a name="l00107"></a>00107       <a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a> *<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a> = VirtRegIntervals[<a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>];
+<a name="l00108"></a>00108       assert(LI && <span class="stringliteral">"Interval does not exist for virtual register"</span>);
+<a name="l00109"></a>00109       <span class="keywordflow">return</span> *<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>;
+<a name="l00110"></a>00110     }
+<a name="l00111"></a>00111 
+<a name="l00112"></a><a class="code" href="classllvm_1_1LiveIntervals.html#a5110a6619d324d40724a922417e82610">00112</a>     <span class="keyword">const</span> <a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a> &<a class="code" href="classllvm_1_1LiveIntervals.html#a5110a6619d324d40724a922417e82610">getInterval</a>(<span class="keywordtype">unsigned</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>)<span class="keyword"> const </span>{
+<a name="l00113"></a>00113       <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classllvm_1_1LiveIntervals.html">LiveIntervals</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classllvm_1_1LiveIntervals.html#a70cf6a51b043dc9f8ae683c266d5d9c4">getInterval</a>(Reg);
+<a name="l00114"></a>00114     }
+<a name="l00115"></a>00115 
+<a name="l00116"></a><a class="code" href="classllvm_1_1LiveIntervals.html#a658add65ad8e7c1421fbe79179559121">00116</a>     <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1LiveIntervals.html#a658add65ad8e7c1421fbe79179559121">hasInterval</a>(<span class="keywordtype">unsigned</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>)<span class="keyword"> const </span>{
+<a name="l00117"></a>00117       <span class="keywordflow">return</span> VirtRegIntervals.<a class="code" href="classllvm_1_1IndexedMap.html#a4f6616201a89f276cfb638222b8b24fa">inBounds</a>(Reg) && VirtRegIntervals[<a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>];
+<a name="l00118"></a>00118     }
+<a name="l00119"></a>00119 
+<a name="l00120"></a>00120     <span class="comment">// Interval creation.</span>
+<a name="l00121"></a><a class="code" href="classllvm_1_1LiveIntervals.html#ac8441e16ee37948d991fccfeabc55f95">00121</a>     <a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a> &<a class="code" href="classllvm_1_1LiveIntervals.html#ac8441e16ee37948d991fccfeabc55f95">getOrCreateInterval</a>(<span class="keywordtype">unsigned</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>) {
+<a name="l00122"></a>00122       <span class="keywordflow">if</span> (!<a class="code" href="classllvm_1_1LiveIntervals.html#a658add65ad8e7c1421fbe79179559121">hasInterval</a>(Reg)) {
+<a name="l00123"></a>00123         VirtRegIntervals.<a class="code" href="classllvm_1_1IndexedMap.html#a5e822b0690502a04b87125e63dbc8316">grow</a>(Reg);
+<a name="l00124"></a>00124         VirtRegIntervals[<a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>] = createInterval(Reg);
+<a name="l00125"></a>00125       }
+<a name="l00126"></a>00126       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1LiveIntervals.html#a70cf6a51b043dc9f8ae683c266d5d9c4">getInterval</a>(Reg);
+<a name="l00127"></a>00127     }
+<a name="l00128"></a>00128 
+<a name="l00129"></a>00129     <span class="comment">// Interval removal.</span>
+<a name="l00130"></a><a class="code" href="classllvm_1_1LiveIntervals.html#a6050096eb05dbe34cd1ba47c03f5031f">00130</a>     <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1LiveIntervals.html#a6050096eb05dbe34cd1ba47c03f5031f">removeInterval</a>(<span class="keywordtype">unsigned</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>) {
+<a name="l00131"></a>00131       <span class="keyword">delete</span> VirtRegIntervals[<a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>];
+<a name="l00132"></a>00132       VirtRegIntervals[<a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>] = 0;
+<a name="l00133"></a>00133     }
+<a name="l00134"></a>00134 <span class="comment"></span>
+<a name="l00135"></a>00135 <span class="comment">    /// addLiveRangeToEndOfBlock - Given a register and an instruction,</span>
+<a name="l00136"></a>00136 <span class="comment">    /// adds a live range from that instruction to the end of its MBB.</span>
+<a name="l00137"></a>00137 <span class="comment"></span>    <a class="code" href="structllvm_1_1LiveRange.html">LiveRange</a> <a class="code" href="classllvm_1_1LiveIntervals.html#a16c5fa7180693f87ca8a777162facefe">addLiveRangeToEndOfBlock</a>(<span class="keywordtype">unsigned</span> reg,
+<a name="l00138"></a>00138                                        <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a>* startInst);
+<a name="l00139"></a>00139 <span class="comment"></span>
+<a name="l00140"></a>00140 <span class="comment">    /// shrinkToUses - After removing some uses of a register, shrink its live</span>
+<a name="l00141"></a>00141 <span class="comment">    /// range to just the remaining uses. This method does not compute reaching</span>
+<a name="l00142"></a>00142 <span class="comment">    /// defs for new uses, and it doesn't remove dead defs.</span>
+<a name="l00143"></a>00143 <span class="comment">    /// Dead PHIDef values are marked as unused.</span>
+<a name="l00144"></a>00144 <span class="comment">    /// New dead machine instructions are added to the dead vector.</span>
+<a name="l00145"></a>00145 <span class="comment">    /// Return true if the interval may have been separated into multiple</span>
+<a name="l00146"></a>00146 <span class="comment">    /// connected components.</span>
+<a name="l00147"></a>00147 <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1LiveIntervals.html#a530d0ce3a2552ac48611da73df279550">shrinkToUses</a>(<a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a> *li,
+<a name="l00148"></a>00148                       <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<MachineInstr*></a> *dead = 0);
+<a name="l00149"></a>00149 <span class="comment"></span>
+<a name="l00150"></a>00150 <span class="comment">    /// extendToIndices - Extend the live range of LI to reach all points in</span>
+<a name="l00151"></a>00151 <span class="comment">    /// Indices. The points in the Indices array must be jointly dominated by</span>
+<a name="l00152"></a>00152 <span class="comment">    /// existing defs in LI. PHI-defs are added as needed to maintain SSA form.</span>
+<a name="l00153"></a>00153 <span class="comment">    ///</span>
+<a name="l00154"></a>00154 <span class="comment">    /// If a SlotIndex in Indices is the end index of a basic block, LI will be</span>
+<a name="l00155"></a>00155 <span class="comment">    /// extended to be live out of the basic block.</span>
+<a name="l00156"></a>00156 <span class="comment">    ///</span>
+<a name="l00157"></a>00157 <span class="comment">    /// See also LiveRangeCalc::extend().</span>
+<a name="l00158"></a>00158 <span class="comment"></span>    <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1LiveIntervals.html#aa0ac255bd2b91f9f899cbd24d520c4fc">extendToIndices</a>(<a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a> *<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>, <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<SlotIndex></a> Indices);
+<a name="l00159"></a>00159 <span class="comment"></span>
+<a name="l00160"></a>00160 <span class="comment">    /// pruneValue - If an LI value is live at Kill, prune its live range by</span>
+<a name="l00161"></a>00161 <span class="comment">    /// removing any liveness reachable from Kill. Add live range end points to</span>
+<a name="l00162"></a>00162 <span class="comment">    /// EndPoints such that extendToIndices(LI, EndPoints) will reconstruct the</span>
+<a name="l00163"></a>00163 <span class="comment">    /// value's live range.</span>
+<a name="l00164"></a>00164 <span class="comment">    ///</span>
+<a name="l00165"></a>00165 <span class="comment">    /// Calling pruneValue() and extendToIndices() can be used to reconstruct</span>
+<a name="l00166"></a>00166 <span class="comment">    /// SSA form after adding defs to a virtual register.</span>
+<a name="l00167"></a>00167 <span class="comment"></span>    <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1LiveIntervals.html#afe20dede23e3347980cae42cfde98813">pruneValue</a>(<a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a> *<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>, <a class="code" href="classllvm_1_1SlotIndex.html" title="SlotIndex - An opaque wrapper around machine indexes.">SlotIndex</a> <a class="code" href="namespacellvm_1_1RegState.html#a079b254e749130fbe5d740f314ca92daa9ddde91ef09476d28a088fe57f8e2921">Kill</a>,
+<a name="l00168"></a>00168                     <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<SlotIndex></a> *EndPoints);
+<a name="l00169"></a>00169 
+<a name="l00170"></a><a class="code" href="classllvm_1_1LiveIntervals.html#a6b0174feb4134d914c5fea4c2df057dd">00170</a>     <a class="code" href="classllvm_1_1SlotIndexes.html">SlotIndexes</a> *<a class="code" href="classllvm_1_1LiveIntervals.html#a6b0174feb4134d914c5fea4c2df057dd">getSlotIndexes</a>()<span class="keyword"> const </span>{
+<a name="l00171"></a>00171       <span class="keywordflow">return</span> Indexes;
+<a name="l00172"></a>00172     }
+<a name="l00173"></a>00173 
+<a name="l00174"></a><a class="code" href="classllvm_1_1LiveIntervals.html#acd5964aa0630b0bec8ec23f5bec5820d">00174</a>     <a class="code" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a> *<a class="code" href="classllvm_1_1LiveIntervals.html#acd5964aa0630b0bec8ec23f5bec5820d">getAliasAnalysis</a>()<span class="keyword"> const </span>{
+<a name="l00175"></a>00175       <span class="keywordflow">return</span> AA;
+<a name="l00176"></a>00176     }
+<a name="l00177"></a>00177 <span class="comment"></span>
+<a name="l00178"></a>00178 <span class="comment">    /// isNotInMIMap - returns true if the specified machine instr has been</span>
+<a name="l00179"></a>00179 <span class="comment">    /// removed or was never entered in the map.</span>
+<a name="l00180"></a><a class="code" href="classllvm_1_1LiveIntervals.html#a3062313f82fcbec8f1b226181989ece6">00180</a> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1LiveIntervals.html#a3062313f82fcbec8f1b226181989ece6">isNotInMIMap</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a>* Instr)<span class="keyword"> const </span>{
+<a name="l00181"></a>00181       <span class="keywordflow">return</span> !Indexes-><a class="code" href="classllvm_1_1SlotIndexes.html#a96ac309d73360f85d1a132eb4abf674e">hasIndex</a>(Instr);
+<a name="l00182"></a>00182     }
+<a name="l00183"></a>00183 <span class="comment"></span>
+<a name="l00184"></a>00184 <span class="comment">    /// Returns the base index of the given instruction.</span>
+<a name="l00185"></a><a class="code" href="classllvm_1_1LiveIntervals.html#a6bbcfa1e19c409a905ffc0356c060bd4">00185</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1SlotIndex.html" title="SlotIndex - An opaque wrapper around machine indexes.">SlotIndex</a> <a class="code" href="classllvm_1_1LiveIntervals.html#a6bbcfa1e19c409a905ffc0356c060bd4" title="Returns the base index of the given instruction.">getInstructionIndex</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *instr)<span class="keyword"> const </span>{
+<a name="l00186"></a>00186       <span class="keywordflow">return</span> Indexes-><a class="code" href="classllvm_1_1SlotIndexes.html#ada895ec8deba28c17ee5d45cddf1882d" title="Returns the base index for the given instruction.">getInstructionIndex</a>(instr);
+<a name="l00187"></a>00187     }
+<a name="l00188"></a>00188 <span class="comment"></span>
+<a name="l00189"></a>00189 <span class="comment">    /// Returns the instruction associated with the given index.</span>
+<a name="l00190"></a><a class="code" href="classllvm_1_1LiveIntervals.html#ab306d0d7e986cc18578a5150c44a9f7a">00190</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a>* <a class="code" href="classllvm_1_1LiveIntervals.html#ab306d0d7e986cc18578a5150c44a9f7a" title="Returns the instruction associated with the given index.">getInstructionFromIndex</a>(<a class="code" href="classllvm_1_1SlotIndex.html" title="SlotIndex - An opaque wrapper around machine indexes.">SlotIndex</a> index)<span class="keyword"> const </span>{
+<a name="l00191"></a>00191       <span class="keywordflow">return</span> Indexes-><a class="code" href="classllvm_1_1SlotIndexes.html#a80461fac9933c96d5ffbeae0fccfd916">getInstructionFromIndex</a>(index);
+<a name="l00192"></a>00192     }
+<a name="l00193"></a>00193 <span class="comment"></span>
+<a name="l00194"></a>00194 <span class="comment">    /// Return the first index in the given basic block.</span>
+<a name="l00195"></a><a class="code" href="classllvm_1_1LiveIntervals.html#a0dba580f04fc2c2ba0662c459ad8c911">00195</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1SlotIndex.html" title="SlotIndex - An opaque wrapper around machine indexes.">SlotIndex</a> <a class="code" href="classllvm_1_1LiveIntervals.html#a0dba580f04fc2c2ba0662c459ad8c911" title="Return the first index in the given basic block.">getMBBStartIdx</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *mbb)<span class="keyword"> const </span>{
+<a name="l00196"></a>00196       <span class="keywordflow">return</span> Indexes-><a class="code" href="classllvm_1_1SlotIndexes.html#a7d9e911655267def875c265ae774cf68" title="Returns the first index in the given basic block number.">getMBBStartIdx</a>(mbb);
+<a name="l00197"></a>00197     }
+<a name="l00198"></a>00198 <span class="comment"></span>
+<a name="l00199"></a>00199 <span class="comment">    /// Return the last index in the given basic block.</span>
+<a name="l00200"></a><a class="code" href="classllvm_1_1LiveIntervals.html#a4ed1e0b18a1fa4219caac5e38e99286e">00200</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1SlotIndex.html" title="SlotIndex - An opaque wrapper around machine indexes.">SlotIndex</a> <a class="code" href="classllvm_1_1LiveIntervals.html#a4ed1e0b18a1fa4219caac5e38e99286e" title="Return the last index in the given basic block.">getMBBEndIdx</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *mbb)<span class="keyword"> const </span>{
+<a name="l00201"></a>00201       <span class="keywordflow">return</span> Indexes-><a class="code" href="classllvm_1_1SlotIndexes.html#a42c3b0bec1a7a288f0ef0540895484a1" title="Returns the last index in the given basic block number.">getMBBEndIdx</a>(mbb);
+<a name="l00202"></a>00202     }
+<a name="l00203"></a>00203 
+<a name="l00204"></a><a class="code" href="classllvm_1_1LiveIntervals.html#a7e6673cce25da2d67c9f5201d9afd463">00204</a>     <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1LiveIntervals.html#a7e6673cce25da2d67c9f5201d9afd463">isLiveInToMBB</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a> &li,
+<a name="l00205"></a>00205                        <span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *mbb)<span class="keyword"> const </span>{
+<a name="l00206"></a>00206       <span class="keywordflow">return</span> li.<a class="code" href="classllvm_1_1LiveInterval.html#a20b4ca166d96de74b1d5b3b22250bd3d">liveAt</a>(<a class="code" href="classllvm_1_1LiveIntervals.html#a0dba580f04fc2c2ba0662c459ad8c911" title="Return the first index in the given basic block.">getMBBStartIdx</a>(mbb));
+<a name="l00207"></a>00207     }
+<a name="l00208"></a>00208 
+<a name="l00209"></a><a class="code" href="classllvm_1_1LiveIntervals.html#aa7cfece92aade109a3eb57258a111003">00209</a>     <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1LiveIntervals.html#aa7cfece92aade109a3eb57258a111003">isLiveOutOfMBB</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a> &li,
+<a name="l00210"></a>00210                         <span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *mbb)<span class="keyword"> const </span>{
+<a name="l00211"></a>00211       <span class="keywordflow">return</span> li.<a class="code" href="classllvm_1_1LiveInterval.html#a20b4ca166d96de74b1d5b3b22250bd3d">liveAt</a>(<a class="code" href="classllvm_1_1LiveIntervals.html#a4ed1e0b18a1fa4219caac5e38e99286e" title="Return the last index in the given basic block.">getMBBEndIdx</a>(mbb).getPrevSlot());
+<a name="l00212"></a>00212     }
+<a name="l00213"></a>00213 
+<a name="l00214"></a><a class="code" href="classllvm_1_1LiveIntervals.html#a7948bdc0e257a3c8310ff82dfd3441d6">00214</a>     <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a>* <a class="code" href="classllvm_1_1LiveIntervals.html#a7948bdc0e257a3c8310ff82dfd3441d6">getMBBFromIndex</a>(<a class="code" href="classllvm_1_1SlotIndex.html" title="SlotIndex - An opaque wrapper around machine indexes.">SlotIndex</a> index)<span class="keyword"> const </span>{
+<a name="l00215"></a>00215       <span class="keywordflow">return</span> Indexes-><a class="code" href="classllvm_1_1SlotIndexes.html#af549feb46d63e1f1057375812fe14f04" title="Returns the basic block which the given index falls in.">getMBBFromIndex</a>(index);
+<a name="l00216"></a>00216     }
+<a name="l00217"></a>00217 
+<a name="l00218"></a><a class="code" href="classllvm_1_1LiveIntervals.html#a72032c8eefbf5b63bd37f24bdf2bbbe8">00218</a>     <a class="code" href="classllvm_1_1SlotIndex.html" title="SlotIndex - An opaque wrapper around machine indexes.">SlotIndex</a> <a class="code" href="classllvm_1_1LiveIntervals.html#a72032c8eefbf5b63bd37f24bdf2bbbe8">InsertMachineInstrInMaps</a>(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>) {
+<a name="l00219"></a>00219       <span class="keywordflow">return</span> Indexes-><a class="code" href="classllvm_1_1SlotIndexes.html#acb6fde19c2c5fefec8b31982c47495e7">insertMachineInstrInMaps</a>(MI);
+<a name="l00220"></a>00220     }
+<a name="l00221"></a>00221 
+<a name="l00222"></a><a class="code" href="classllvm_1_1LiveIntervals.html#a4913e06cfa1f22a3040d3090f924e4ed">00222</a>     <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1LiveIntervals.html#a4913e06cfa1f22a3040d3090f924e4ed">RemoveMachineInstrFromMaps</a>(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>) {
+<a name="l00223"></a>00223       Indexes-><a class="code" href="classllvm_1_1SlotIndexes.html#a99e8cb9990f0e6997bbb34fb092902d4" title="Remove the given machine instruction from the mapping.">removeMachineInstrFromMaps</a>(MI);
+<a name="l00224"></a>00224     }
+<a name="l00225"></a>00225 
+<a name="l00226"></a><a class="code" href="classllvm_1_1LiveIntervals.html#a403a7d7aa7ebd74f4bf85d036a247cc1">00226</a>     <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1LiveIntervals.html#a403a7d7aa7ebd74f4bf85d036a247cc1">ReplaceMachineInstrInMaps</a>(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>, <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *NewMI) {
+<a name="l00227"></a>00227       Indexes-><a class="code" href="classllvm_1_1SlotIndexes.html#a27fca2411e5d1501cf71c1afa6e20796">replaceMachineInstrInMaps</a>(MI, NewMI);
+<a name="l00228"></a>00228     }
+<a name="l00229"></a>00229 
+<a name="l00230"></a><a class="code" href="classllvm_1_1LiveIntervals.html#ad7efafe3c43a56f34a2b1cedc0c1d73e">00230</a>     <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1LiveIntervals.html#ad7efafe3c43a56f34a2b1cedc0c1d73e">findLiveInMBBs</a>(<a class="code" href="classllvm_1_1SlotIndex.html" title="SlotIndex - An opaque wrapper around machine indexes.">SlotIndex</a> Start, <a class="code" href="classllvm_1_1SlotIndex.html" title="SlotIndex - An opaque wrapper around machine indexes.">SlotIndex</a> End,
+<a name="l00231"></a>00231                         <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<MachineBasicBlock*></a> &MBBs)<span class="keyword"> const </span>{
+<a name="l00232"></a>00232       <span class="keywordflow">return</span> Indexes-><a class="code" href="classllvm_1_1SlotIndexes.html#a4432f09307aedc9d2a1dd532bfc14260">findLiveInMBBs</a>(Start, End, MBBs);
+<a name="l00233"></a>00233     }
+<a name="l00234"></a>00234 
+<a name="l00235"></a><a class="code" href="classllvm_1_1LiveIntervals.html#a11b78aceef1db7dddc7ca575c395ddaf">00235</a>     <a class="code" href="classllvm_1_1BumpPtrAllocator.html">VNInfo::Allocator</a>& <a class="code" href="classllvm_1_1LiveIntervals.html#a11b78aceef1db7dddc7ca575c395ddaf">getVNInfoAllocator</a>() { <span class="keywordflow">return</span> VNInfoAllocator; }
+<a name="l00236"></a>00236 
+<a name="l00237"></a>00237     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1LiveIntervals.html#a8901c9daf119e70623f22905b4066305">getAnalysisUsage</a>(<a class="code" href="classllvm_1_1AnalysisUsage.html">AnalysisUsage</a> &AU) <span class="keyword">const</span>;
+<a name="l00238"></a>00238     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1LiveIntervals.html#a1d07d9d81506cd9aa328236b3de7974d">releaseMemory</a>();
+<a name="l00239"></a>00239 <span class="comment"></span>
+<a name="l00240"></a>00240 <span class="comment">    /// runOnMachineFunction - pass entry point</span>
+<a name="l00241"></a>00241 <span class="comment"></span>    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1LiveIntervals.html#a5c4ad3a3c5be8ed406e28b90d27353b9" title="runOnMachineFunction - pass entry point">runOnMachineFunction</a>(<a class="code" href="classllvm_1_1MachineFunction.html">MachineFunction</a>&);
+<a name="l00242"></a>00242 <span class="comment"></span>
+<a name="l00243"></a>00243 <span class="comment">    /// print - Implement the dump method.</span>
+<a name="l00244"></a>00244 <span class="comment"></span>    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1LiveIntervals.html#a0b1bc41fafd88e3a895d44f64cc2ef7a" title="print - Implement the dump method.">print</a>(<a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O, <span class="keyword">const</span> <a class="code" href="classllvm_1_1Module.html" title="The main container class for the LLVM Intermediate Representation.">Module</a>* = 0) <span class="keyword">const</span>;
+<a name="l00245"></a>00245 <span class="comment"></span>
+<a name="l00246"></a>00246 <span class="comment">    /// intervalIsInOneMBB - If LI is confined to a single basic block, return</span>
+<a name="l00247"></a>00247 <span class="comment">    /// a pointer to that block.  If LI is live in to or out of any block,</span>
+<a name="l00248"></a>00248 <span class="comment">    /// return NULL.</span>
+<a name="l00249"></a>00249 <span class="comment"></span>    <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *<a class="code" href="classllvm_1_1LiveIntervals.html#a33c530a347219feffbfaa5d708337925">intervalIsInOneMBB</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a> &<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>) <span class="keyword">const</span>;
+<a name="l00250"></a>00250 <span class="comment"></span>
+<a name="l00251"></a>00251 <span class="comment">    /// Returns true if VNI is killed by any PHI-def values in LI.</span>
+<a name="l00252"></a>00252 <span class="comment">    /// This may conservatively return true to avoid expensive computations.</span>
+<a name="l00253"></a>00253 <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1LiveIntervals.html#af17f37dfd45231deffe4576e0e416804">hasPHIKill</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a> &<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>, <span class="keyword">const</span> <a class="code" href="classllvm_1_1VNInfo.html">VNInfo</a> *VNI) <span class="keyword">const</span>;
+<a name="l00254"></a>00254 <span class="comment"></span>
+<a name="l00255"></a>00255 <span class="comment">    /// addKillFlags - Add kill flags to any instruction that kills a virtual</span>
+<a name="l00256"></a>00256 <span class="comment">    /// register.</span>
+<a name="l00257"></a>00257 <span class="comment"></span>    <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1LiveIntervals.html#a6e3886e9084257e74b5db4a8951d36e0">addKillFlags</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1VirtRegMap.html">VirtRegMap</a>*);
+<a name="l00258"></a>00258 <span class="comment"></span>
+<a name="l00259"></a>00259 <span class="comment">    /// handleMove - call this method to notify LiveIntervals that</span>
+<a name="l00260"></a>00260 <span class="comment">    /// instruction 'mi' has been moved within a basic block. This will update</span>
+<a name="l00261"></a>00261 <span class="comment">    /// the live intervals for all operands of mi. Moves between basic blocks</span>
+<a name="l00262"></a>00262 <span class="comment">    /// are not supported.</span>
+<a name="l00263"></a>00263 <span class="comment">    ///</span>
+<a name="l00264"></a>00264 <span class="comment">    /// \param UpdateFlags Update live intervals for nonallocatable physregs.</span>
+<a name="l00265"></a>00265 <span class="comment"></span>    <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1LiveIntervals.html#a2d45135c7d66356b77f681aa542d86ba">handleMove</a>(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a>* <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>, <span class="keywordtype">bool</span> UpdateFlags = <span class="keyword">false</span>);
+<a name="l00266"></a>00266 <span class="comment"></span>
+<a name="l00267"></a>00267 <span class="comment">    /// moveIntoBundle - Update intervals for operands of MI so that they</span>
+<a name="l00268"></a>00268 <span class="comment">    /// begin/end on the SlotIndex for BundleStart.</span>
+<a name="l00269"></a>00269 <span class="comment">    ///</span>
+<a name="l00270"></a>00270 <span class="comment">    /// \param UpdateFlags Update live intervals for nonallocatable physregs.</span>
+<a name="l00271"></a>00271 <span class="comment">    ///</span>
+<a name="l00272"></a>00272 <span class="comment">    /// Requires MI and BundleStart to have SlotIndexes, and assumes</span>
+<a name="l00273"></a>00273 <span class="comment">    /// existing liveness is accurate. BundleStart should be the first</span>
+<a name="l00274"></a>00274 <span class="comment">    /// instruction in the Bundle.</span>
+<a name="l00275"></a>00275 <span class="comment"></span>    <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1LiveIntervals.html#a05737e81844e37bda855bb9f35c59fe1">handleMoveIntoBundle</a>(<a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a>* <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>, <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a>* BundleStart,
+<a name="l00276"></a>00276                               <span class="keywordtype">bool</span> UpdateFlags = <span class="keyword">false</span>);
+<a name="l00277"></a>00277 
+<a name="l00278"></a>00278     <span class="comment">// Register mask functions.</span>
+<a name="l00279"></a>00279     <span class="comment">//</span>
+<a name="l00280"></a>00280     <span class="comment">// Machine instructions may use a register mask operand to indicate that a</span>
+<a name="l00281"></a>00281     <span class="comment">// large number of registers are clobbered by the instruction.  This is</span>
+<a name="l00282"></a>00282     <span class="comment">// typically used for calls.</span>
+<a name="l00283"></a>00283     <span class="comment">//</span>
+<a name="l00284"></a>00284     <span class="comment">// For compile time performance reasons, these clobbers are not recorded in</span>
+<a name="l00285"></a>00285     <span class="comment">// the live intervals for individual physical registers.  Instead,</span>
+<a name="l00286"></a>00286     <span class="comment">// LiveIntervalAnalysis maintains a sorted list of instructions with</span>
+<a name="l00287"></a>00287     <span class="comment">// register mask operands.</span>
+<a name="l00288"></a>00288 <span class="comment"></span>
+<a name="l00289"></a>00289 <span class="comment">    /// getRegMaskSlots - Returns a sorted array of slot indices of all</span>
+<a name="l00290"></a>00290 <span class="comment">    /// instructions with register mask operands.</span>
+<a name="l00291"></a><a class="code" href="classllvm_1_1LiveIntervals.html#a53ac43c5265860fcbc6c514f89f04718">00291</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<SlotIndex></a> <a class="code" href="classllvm_1_1LiveIntervals.html#a53ac43c5265860fcbc6c514f89f04718">getRegMaskSlots</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RegMaskSlots; }
+<a name="l00292"></a>00292 <span class="comment"></span>
+<a name="l00293"></a>00293 <span class="comment">    /// getRegMaskSlotsInBlock - Returns a sorted array of slot indices of all</span>
+<a name="l00294"></a>00294 <span class="comment">    /// instructions with register mask operands in the basic block numbered</span>
+<a name="l00295"></a>00295 <span class="comment">    /// MBBNum.</span>
+<a name="l00296"></a><a class="code" href="classllvm_1_1LiveIntervals.html#ae4c5ed6ae63766d072e1077c3f470080">00296</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<SlotIndex></a> <a class="code" href="classllvm_1_1LiveIntervals.html#ae4c5ed6ae63766d072e1077c3f470080">getRegMaskSlotsInBlock</a>(<span class="keywordtype">unsigned</span> MBBNum)<span class="keyword"> const </span>{
+<a name="l00297"></a>00297       std::pair<unsigned, unsigned> P = RegMaskBlocks[MBBNum];
+<a name="l00298"></a>00298       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1LiveIntervals.html#a53ac43c5265860fcbc6c514f89f04718">getRegMaskSlots</a>().slice(P.first, P.second);
+<a name="l00299"></a>00299     }
+<a name="l00300"></a>00300 <span class="comment"></span>
+<a name="l00301"></a>00301 <span class="comment">    /// getRegMaskBits() - Returns an array of register mask pointers</span>
+<a name="l00302"></a>00302 <span class="comment">    /// corresponding to getRegMaskSlots().</span>
+<a name="l00303"></a><a class="code" href="classllvm_1_1LiveIntervals.html#a3592af5b9bc935f14079c68ae4d0e7b5">00303</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<const uint32_t*></a> <a class="code" href="classllvm_1_1LiveIntervals.html#a3592af5b9bc935f14079c68ae4d0e7b5">getRegMaskBits</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RegMaskBits; }
+<a name="l00304"></a>00304 <span class="comment"></span>
+<a name="l00305"></a>00305 <span class="comment">    /// getRegMaskBitsInBlock - Returns an array of mask pointers corresponding</span>
+<a name="l00306"></a>00306 <span class="comment">    /// to getRegMaskSlotsInBlock(MBBNum).</span>
+<a name="l00307"></a><a class="code" href="classllvm_1_1LiveIntervals.html#ade5f53c1933d9f90b3cc1682a598ba07">00307</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<const uint32_t*></a> <a class="code" href="classllvm_1_1LiveIntervals.html#ade5f53c1933d9f90b3cc1682a598ba07">getRegMaskBitsInBlock</a>(<span class="keywordtype">unsigned</span> MBBNum)<span class="keyword"> const </span>{
+<a name="l00308"></a>00308       std::pair<unsigned, unsigned> P = RegMaskBlocks[MBBNum];
+<a name="l00309"></a>00309       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1LiveIntervals.html#a3592af5b9bc935f14079c68ae4d0e7b5">getRegMaskBits</a>().slice(P.first, P.second);
+<a name="l00310"></a>00310     }
+<a name="l00311"></a>00311 <span class="comment"></span>
+<a name="l00312"></a>00312 <span class="comment">    /// checkRegMaskInterference - Test if LI is live across any register mask</span>
+<a name="l00313"></a>00313 <span class="comment">    /// instructions, and compute a bit mask of physical registers that are not</span>
+<a name="l00314"></a>00314 <span class="comment">    /// clobbered by any of them.</span>
+<a name="l00315"></a>00315 <span class="comment">    ///</span>
+<a name="l00316"></a>00316 <span class="comment">    /// Returns false if LI doesn't cross any register mask instructions. In</span>
+<a name="l00317"></a>00317 <span class="comment">    /// that case, the bit vector is not filled in.</span>
+<a name="l00318"></a>00318 <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1LiveIntervals.html#a044210fc5bff20b7f2a6814b877891ca">checkRegMaskInterference</a>(<a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a> &<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>,
+<a name="l00319"></a>00319                                   <a class="code" href="classllvm_1_1BitVector.html">BitVector</a> &UsableRegs);
+<a name="l00320"></a>00320 
+<a name="l00321"></a>00321     <span class="comment">// Register unit functions.</span>
+<a name="l00322"></a>00322     <span class="comment">//</span>
+<a name="l00323"></a>00323     <span class="comment">// Fixed interference occurs when MachineInstrs use physregs directly</span>
+<a name="l00324"></a>00324     <span class="comment">// instead of virtual registers. This typically happens when passing</span>
+<a name="l00325"></a>00325     <span class="comment">// arguments to a function call, or when instructions require operands in</span>
+<a name="l00326"></a>00326     <span class="comment">// fixed registers.</span>
+<a name="l00327"></a>00327     <span class="comment">//</span>
+<a name="l00328"></a>00328     <span class="comment">// Each physreg has one or more register units, see MCRegisterInfo. We</span>
+<a name="l00329"></a>00329     <span class="comment">// track liveness per register unit to handle aliasing registers more</span>
+<a name="l00330"></a>00330     <span class="comment">// efficiently.</span>
+<a name="l00331"></a>00331 <span class="comment"></span>
+<a name="l00332"></a>00332 <span class="comment">    /// getRegUnit - Return the live range for Unit.</span>
+<a name="l00333"></a>00333 <span class="comment">    /// It will be computed if it doesn't exist.</span>
+<a name="l00334"></a><a class="code" href="classllvm_1_1LiveIntervals.html#aa92af8f5e4caed62c97b566f498cd708">00334</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a> &<a class="code" href="classllvm_1_1LiveIntervals.html#aa92af8f5e4caed62c97b566f498cd708">getRegUnit</a>(<span class="keywordtype">unsigned</span> Unit) {
+<a name="l00335"></a>00335       <a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a> *<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a> = RegUnitIntervals[Unit];
+<a name="l00336"></a>00336       <span class="keywordflow">if</span> (!LI) {
+<a name="l00337"></a>00337         <span class="comment">// Compute missing ranges on demand.</span>
+<a name="l00338"></a>00338         RegUnitIntervals[Unit] = LI = <span class="keyword">new</span> <a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a>(Unit, <a class="code" href="DataTypes_8h.html#acd69981d54c27fe0ff514645dbfc6359">HUGE_VALF</a>);
+<a name="l00339"></a>00339         computeRegUnitInterval(LI);
+<a name="l00340"></a>00340       }
+<a name="l00341"></a>00341       <span class="keywordflow">return</span> *<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>;
+<a name="l00342"></a>00342     }
+<a name="l00343"></a>00343 <span class="comment"></span>
+<a name="l00344"></a>00344 <span class="comment">    /// getCachedRegUnit - Return the live range for Unit if it has already</span>
+<a name="l00345"></a>00345 <span class="comment">    /// been computed, or NULL if it hasn't been computed yet.</span>
+<a name="l00346"></a><a class="code" href="classllvm_1_1LiveIntervals.html#ad19d27290d01b0a97f4832da06193fd8">00346</a> <span class="comment"></span>    <a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a> *<a class="code" href="classllvm_1_1LiveIntervals.html#ad19d27290d01b0a97f4832da06193fd8">getCachedRegUnit</a>(<span class="keywordtype">unsigned</span> Unit) {
+<a name="l00347"></a>00347       <span class="keywordflow">return</span> RegUnitIntervals[Unit];
+<a name="l00348"></a>00348     }
+<a name="l00349"></a>00349 
+<a name="l00350"></a>00350   <span class="keyword">private</span>:<span class="comment"></span>
+<a name="l00351"></a>00351 <span class="comment">    /// computeIntervals - Compute live intervals.</span>
+<a name="l00352"></a>00352 <span class="comment"></span>    <span class="keywordtype">void</span> computeIntervals();
+<a name="l00353"></a>00353 <span class="comment"></span>
+<a name="l00354"></a>00354 <span class="comment">    /// Compute live intervals for all virtual registers.</span>
+<a name="l00355"></a>00355 <span class="comment"></span>    <span class="keywordtype">void</span> computeVirtRegs();
+<a name="l00356"></a>00356 <span class="comment"></span>
+<a name="l00357"></a>00357 <span class="comment">    /// Compute RegMaskSlots and RegMaskBits.</span>
+<a name="l00358"></a>00358 <span class="comment"></span>    <span class="keywordtype">void</span> computeRegMasks();
+<a name="l00359"></a>00359 <span class="comment"></span>
+<a name="l00360"></a>00360 <span class="comment">    /// handleRegisterDef - update intervals for a register def</span>
+<a name="l00361"></a>00361 <span class="comment">    /// (calls handleVirtualRegisterDef)</span>
+<a name="l00362"></a>00362 <span class="comment"></span>    <span class="keywordtype">void</span> handleRegisterDef(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *MBB,
+<a name="l00363"></a>00363                            <a class="code" href="classllvm_1_1MachineBasicBlock_1_1bundle__iterator.html">MachineBasicBlock::iterator</a> <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>,
+<a name="l00364"></a>00364                            <a class="code" href="classllvm_1_1SlotIndex.html" title="SlotIndex - An opaque wrapper around machine indexes.">SlotIndex</a> MIIdx,
+<a name="l00365"></a>00365                            <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a>& MO, <span class="keywordtype">unsigned</span> MOIdx);
+<a name="l00366"></a>00366 <span class="comment"></span>
+<a name="l00367"></a>00367 <span class="comment">    /// isPartialRedef - Return true if the specified def at the specific index</span>
+<a name="l00368"></a>00368 <span class="comment">    /// is partially re-defining the specified live interval. A common case of</span>
+<a name="l00369"></a>00369 <span class="comment">    /// this is a definition of the sub-register.</span>
+<a name="l00370"></a>00370 <span class="comment"></span>    <span class="keywordtype">bool</span> isPartialRedef(<a class="code" href="classllvm_1_1SlotIndex.html" title="SlotIndex - An opaque wrapper around machine indexes.">SlotIndex</a> MIIdx, <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &MO,
+<a name="l00371"></a>00371                         <a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a> &interval);
+<a name="l00372"></a>00372 <span class="comment"></span>
+<a name="l00373"></a>00373 <span class="comment">    /// handleVirtualRegisterDef - update intervals for a virtual</span>
+<a name="l00374"></a>00374 <span class="comment">    /// register def</span>
+<a name="l00375"></a>00375 <span class="comment"></span>    <span class="keywordtype">void</span> handleVirtualRegisterDef(<a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *MBB,
+<a name="l00376"></a>00376                                   <a class="code" href="classllvm_1_1MachineBasicBlock_1_1bundle__iterator.html">MachineBasicBlock::iterator</a> <a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>,
+<a name="l00377"></a>00377                                   <a class="code" href="classllvm_1_1SlotIndex.html" title="SlotIndex - An opaque wrapper around machine indexes.">SlotIndex</a> MIIdx, <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a>& MO,
+<a name="l00378"></a>00378                                   <span class="keywordtype">unsigned</span> MOIdx,
+<a name="l00379"></a>00379                                   <a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a>& interval);
+<a name="l00380"></a>00380 
+<a name="l00381"></a>00381     <span class="keyword">static</span> <a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a>* createInterval(<span class="keywordtype">unsigned</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>);
+<a name="l00382"></a>00382 
+<a name="l00383"></a>00383     <span class="keywordtype">void</span> printInstrs(<a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O) <span class="keyword">const</span>;
+<a name="l00384"></a>00384     <span class="keywordtype">void</span> dumpInstrs() <span class="keyword">const</span>;
+<a name="l00385"></a>00385 
+<a name="l00386"></a>00386     <span class="keywordtype">void</span> computeLiveInRegUnits();
+<a name="l00387"></a>00387     <span class="keywordtype">void</span> computeRegUnitInterval(<a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a>*);
+<a name="l00388"></a>00388     <span class="keywordtype">void</span> computeVirtRegInterval(<a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a>*);
+<a name="l00389"></a>00389 
+<a name="l00390"></a>00390     <span class="keyword">class </span>HMEditor;
+<a name="l00391"></a>00391   };
+<a name="l00392"></a>00392 } <span class="comment">// End llvm namespace</span>
+<a name="l00393"></a>00393 
+<a name="l00394"></a>00394 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:35:10 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/LiveIntervalUnion_8h__dep__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LiveIntervalUnion_8h__dep__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LiveIntervalUnion_8h__dep__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LiveIntervalUnion_8h__dep__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,11 @@
+<map id="G" name="G">
+<area shape="rect" href="$InterferenceCache_8h.html" title="InterferenceCache.h" alt="" coords="215,84,364,111"/>
+<area shape="rect" href="$LiveIntervalUnion_8cpp.html" title="LiveIntervalUnion.cpp" alt="" coords="673,84,831,111"/>
+<area shape="rect" href="$LiveRegMatrix_8h.html" title="LiveRegMatrix.h" alt="" coords="388,84,508,111"/>
+<area shape="rect" href="$RegAllocBase_8h.html" title="RegAllocBase.h" alt="" coords="532,84,649,111"/>
+<area shape="rect" href="$InterferenceCache_8cpp.html" title="InterferenceCache.cpp" alt="" coords="5,161,171,188"/>
+<area shape="rect" href="$RegAllocGreedy_8cpp.html" title="RegAllocGreedy.cpp" alt="" coords="355,161,499,188"/>
+<area shape="rect" href="$LiveRegMatrix_8cpp.html" title="LiveRegMatrix.cpp" alt="" coords="195,161,331,188"/>
+<area shape="rect" href="$RegAllocBase_8cpp.html" title="RegAllocBase.cpp" alt="" coords="683,161,816,188"/>
+<area shape="rect" href="$RegAllocBasic_8cpp.html" title="RegAllocBasic.cpp" alt="" coords="523,161,659,188"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/LiveInterval_8cpp__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LiveInterval_8cpp__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LiveInterval_8cpp__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LiveInterval_8cpp__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,38 @@
+<map id="G" name="G">
+<area shape="rect" href="$LiveInterval_8h.html" title="llvm/CodeGen/LiveInterval.h" alt="" coords="411,161,608,188"/>
+<area shape="rect" href="$STLExtras_8h.html" title="llvm/ADT/STLExtras.h" alt="" coords="2760,548,2915,575"/>
+<area shape="rect" href="$DenseMap_8h.html" title="llvm/ADT/DenseMap.h" alt="" coords="999,548,1159,575"/>
+<area shape="rect" href="$LiveIntervalAnalysis_8h.html" title="llvm/CodeGen/LiveIntervalAnalysis.h" alt="" coords="1609,84,1860,111"/>
+<area shape="rect" href="$TargetRegisterInfo_8h.html" title="llvm/Target/TargetRegisterInfo.h" alt="" coords="2563,316,2781,343"/>
+<area shape="rect" href="$MachineRegisterInfo_8h.html" title="llvm/CodeGen/MachineRegisterInfo.h" alt="" coords="2949,239,3203,265"/>
+<area shape="rect" href="$SmallSet_8h.html" title="llvm/ADT/SmallSet.h" alt="" coords="2076,548,2228,575"/>
+<area shape="rect" href="$Debug_8h.html" title="llvm/Support/Debug.h" alt="" coords="3328,84,3488,111"/>
+<area shape="rect" href="$raw__ostream_8h.html" title="llvm/Support/raw_ostream.h" alt="" coords="3344,548,3544,575"/>
+<area shape="rect" href="$RegisterCoalescer_8h.html" title="RegisterCoalescer.h" alt="" coords="3563,84,3709,111"/>
+<area shape="rect" href="$IntEqClasses_8h.html" title="llvm/ADT/IntEqClasses.h" alt="" coords="876,393,1049,420"/>
+<area shape="rect" href="$AlignOf_8h.html" title="llvm/Support/AlignOf.h" alt="" coords="212,703,375,729"/>
+<area shape="rect" href="$Allocator_8h.html" title="llvm/Support/Allocator.h" alt="" coords="195,625,368,652"/>
+<area shape="rect" href="$SlotIndexes_8h.html" title="llvm/CodeGen/SlotIndexes.h" alt="" coords="1108,239,1308,265"/>
+<area shape="rect" href="$SmallVector_8h.html" title="llvm/ADT/SmallVector.h" alt="" coords="1280,625,1448,652"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="1004,780,1177,807"/>
+<area shape="rect" href="$type__traits_8h.html" title="llvm/Support/type_traits.h" alt="" coords="1456,703,1643,729"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="2191,780,2375,807"/>
+<area shape="rect" href="$MathExtras_8h.html" title="llvm/Support/MathExtras.h" alt="" coords="864,703,1053,729"/>
+<area shape="rect" href="$MachineInstrBundle_8h.html" title="llvm/CodeGen/MachineInstrBundle.h" alt="" coords="2123,316,2373,343"/>
+<area shape="rect" href="$ilist_8h.html" title="llvm/ADT/ilist.h" alt="" coords="544,625,659,652"/>
+<area shape="rect" href="$MachineFunction_8h.html" title="llvm/CodeGen/MachineFunction.h" alt="" coords="799,316,1031,343"/>
+<area shape="rect" href="$MachineFunctionPass_8h.html" title="llvm/CodeGen/MachineFunctionPass.h" alt="" coords="1335,316,1596,343"/>
+<area shape="rect" href="$PointerIntPair_8h.html" title="llvm/ADT/PointerIntPair.h" alt="" coords="1832,625,2008,652"/>
+<area shape="rect" href="$MachineBasicBlock_8h.html" title="llvm/CodeGen/MachineBasicBlock.h" alt="" coords="2336,393,2584,420"/>
+<area shape="rect" href="$MachineInstr_8h.html" title="llvm/CodeGen/MachineInstr.h" alt="" coords="2379,471,2584,497"/>
+<area shape="rect" href="$ArrayRef_8h.html" title="llvm/ADT/ArrayRef.h" alt="" coords="2491,548,2635,575"/>
+<area shape="rect" href="$StringRef_8h.html" title="llvm/ADT/StringRef.h" alt="" coords="2491,625,2640,652"/>
+<area shape="rect" href="$DenseMapInfo_8h.html" title="llvm/ADT/DenseMapInfo.h" alt="" coords="1573,625,1757,652"/>
+<area shape="rect" href="$PointerLikeTypeTraits_8h.html" title="llvm/Support/PointerLikeTypeTraits.h" alt="" coords="1667,703,1915,729"/>
+<area shape="rect" href="$BitVector_8h.html" title="llvm/ADT/BitVector.h" alt="" coords="955,625,1104,652"/>
+<area shape="rect" href="$IndexedMap_8h.html" title="llvm/ADT/IndexedMap.h" alt="" coords="2959,471,3129,497"/>
+<area shape="rect" href="$SmallPtrSet_8h.html" title="llvm/ADT/SmallPtrSet.h" alt="" coords="2083,625,2251,652"/>
+<area shape="rect" href="$MCRegisterInfo_8h.html" title="llvm/MC/MCRegisterInfo.h" alt="" coords="2123,471,2304,497"/>
+<area shape="rect" href="$ValueTypes_8h.html" title="llvm/CodeGen/ValueTypes.h" alt="" coords="2715,625,2909,652"/>
+<area shape="rect" href="$CallingConv_8h.html" title="llvm/CallingConv.h" alt="" coords="2760,393,2896,420"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/LiveInterval_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LiveInterval_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LiveInterval_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LiveInterval_8h__dep__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,119 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="LiveInterval.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="LiveIntervalAnalysis.h",height=0.2,width=0.4,color="black",URL="$LiveIntervalAnalysis_8h.html"];
+  Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="CalcSpillWeights.cpp",height=0.2,width=0.4,color="black",URL="$CalcSpillWeights_8cpp.html"];
+  Node2 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="InlineSpiller.cpp",height=0.2,width=0.4,color="black",URL="$InlineSpiller_8cpp.html"];
+  Node2 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="InterferenceCache.cpp",height=0.2,width=0.4,color="black",URL="$InterferenceCache_8cpp.html"];
+  Node2 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="LiveDebugVariables.cpp",height=0.2,width=0.4,color="black",URL="$LiveDebugVariables_8cpp.html"];
+  Node2 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="LiveInterval.cpp",height=0.2,width=0.4,color="black",URL="$LiveInterval_8cpp.html"];
+  Node2 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="LiveIntervalAnalysis.cpp",height=0.2,width=0.4,color="black",URL="$LiveIntervalAnalysis_8cpp.html"];
+  Node2 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="LiveRangeEdit.cpp",height=0.2,width=0.4,color="black",URL="$LiveRangeEdit_8cpp.html"];
+  Node2 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="LiveRegMatrix.cpp",height=0.2,width=0.4,color="black",URL="$LiveRegMatrix_8cpp.html"];
+  Node2 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="LiveStackAnalysis.cpp",height=0.2,width=0.4,color="black",URL="$LiveStackAnalysis_8cpp.html"];
+  Node2 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="MachineScheduler.cpp",height=0.2,width=0.4,color="black",URL="$MachineScheduler_8cpp.html"];
+  Node2 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="MachineVerifier.cpp",height=0.2,width=0.4,color="black",URL="$MachineVerifier_8cpp.html"];
+  Node2 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="RegAllocBase.cpp",height=0.2,width=0.4,color="black",URL="$RegAllocBase_8cpp.html"];
+  Node2 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="RegAllocBasic.cpp",height=0.2,width=0.4,color="black",URL="$RegAllocBasic_8cpp.html"];
+  Node2 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="RegAllocGreedy.cpp",height=0.2,width=0.4,color="black",URL="$RegAllocGreedy_8cpp.html"];
+  Node2 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="RegAllocPBQP.cpp",height=0.2,width=0.4,color="black",URL="$RegAllocPBQP_8cpp.html"];
+  Node2 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="RegisterCoalescer.cpp",height=0.2,width=0.4,color="black",URL="$RegisterCoalescer_8cpp.html"];
+  Node2 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="RegisterPressure.cpp",height=0.2,width=0.4,color="black",URL="$RegisterPressure_8cpp.html"];
+  Node2 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="ScheduleDAGInstrs.cpp",height=0.2,width=0.4,color="black",URL="$ScheduleDAGInstrs_8cpp.html"];
+  Node2 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="Spiller.cpp",height=0.2,width=0.4,color="black",URL="$Spiller_8cpp.html"];
+  Node2 -> Node22 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="SpillPlacement.cpp",height=0.2,width=0.4,color="black",URL="$SpillPlacement_8cpp.html"];
+  Node2 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="SplitKit.cpp",height=0.2,width=0.4,color="black",URL="$SplitKit_8cpp.html"];
+  Node2 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="StackSlotColoring.cpp",height=0.2,width=0.4,color="black",URL="$StackSlotColoring_8cpp.html"];
+  Node2 -> Node25 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="StrongPHIElimination.cpp",height=0.2,width=0.4,color="black",URL="$StrongPHIElimination_8cpp.html"];
+  Node2 -> Node26 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="TwoAddressInstructionPass.cpp",height=0.2,width=0.4,color="black",URL="$TwoAddressInstructionPass_8cpp.html"];
+  Node2 -> Node27 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="VirtRegMap.cpp",height=0.2,width=0.4,color="black",URL="$VirtRegMap_8cpp.html"];
+  Node2 -> Node28 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="HexagonMachineScheduler.h",height=0.2,width=0.4,color="black",URL="$HexagonMachineScheduler_8h.html"];
+  Node28 -> Node29 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="HexagonMachineScheduler.cpp",height=0.2,width=0.4,color="black",URL="$HexagonMachineScheduler_8cpp.html"];
+  Node28 -> Node30 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="HexagonTargetMachine.cpp",height=0.2,width=0.4,color="black",URL="$HexagonTargetMachine_8cpp.html"];
+  Node1 -> Node31 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="LiveRangeEdit.h",height=0.2,width=0.4,color="black",URL="$LiveRangeEdit_8h.html"];
+  Node31 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node32 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="LiveStackAnalysis.h",height=0.2,width=0.4,color="black",URL="$LiveStackAnalysis_8h.html"];
+  Node32 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node27 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node33 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="LiveIntervalUnion.h",height=0.2,width=0.4,color="black",URL="$LiveIntervalUnion_8h.html"];
+  Node33 -> Node34 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="InterferenceCache.h",height=0.2,width=0.4,color="black",URL="$InterferenceCache_8h.html"];
+  Node34 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node35 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="LiveIntervalUnion.cpp",height=0.2,width=0.4,color="black",URL="$LiveIntervalUnion_8cpp.html"];
+  Node33 -> Node36 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="LiveRegMatrix.h",height=0.2,width=0.4,color="black",URL="$LiveRegMatrix_8h.html"];
+  Node36 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node37 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="RegAllocBase.h",height=0.2,width=0.4,color="black",URL="$RegAllocBase_8h.html"];
+  Node37 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node38 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="LiveRangeCalc.h",height=0.2,width=0.4,color="black",URL="$LiveRangeCalc_8h.html"];
+  Node38 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node39 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="LiveRangeCalc.cpp",height=0.2,width=0.4,color="black",URL="$LiveRangeCalc_8cpp.html"];
+  Node38 -> Node40 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="SplitKit.h",height=0.2,width=0.4,color="black",URL="$SplitKit_8h.html"];
+  Node40 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node41 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="StackColoring.cpp",height=0.2,width=0.4,color="black",URL="$StackColoring_8cpp.html"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/LiveRangeCalc_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LiveRangeCalc_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LiveRangeCalc_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LiveRangeCalc_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,85 @@
+<!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: LiveRangeCalc.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_f2244d21cf8bec63d11bfc1ad661d96f.html">CodeGen</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">LiveRangeCalc.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="BitVector_8h_source.html">llvm/ADT/BitVector.h</a>"</code><br/>
+<code>#include "<a class="el" href="IndexedMap_8h_source.html">llvm/ADT/IndexedMap.h</a>"</code><br/>
+<code>#include "<a class="el" href="LiveInterval_8h_source.html">llvm/CodeGen/LiveInterval.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for LiveRangeCalc.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="LiveRangeCalc_8h__incl.png" border="0" usemap="#LiveRangeCalc_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="LiveRangeCalc_8h__dep__incl.png" border="0" usemap="#LiveRangeCalc_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="LiveRangeCalc_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_1LiveRangeCalc.html">llvm::LiveRangeCalc</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><b>llvm::LiveRangeCalc::LiveInBlock</b></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:31 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/LiveRangeCalc_8h__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LiveRangeCalc_8h__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LiveRangeCalc_8h__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LiveRangeCalc_8h__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,33 @@
+<map id="G" name="G">
+<area shape="rect" href="$BitVector_8h.html" title="llvm/ADT/BitVector.h" alt="" coords="3159,316,3308,343"/>
+<area shape="rect" href="$IndexedMap_8h.html" title="llvm/ADT/IndexedMap.h" alt="" coords="195,393,365,420"/>
+<area shape="rect" href="$LiveInterval_8h.html" title="llvm/CodeGen/LiveInterval.h" alt="" coords="2389,84,2587,111"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="2835,548,3008,575"/>
+<area shape="rect" href="$ErrorHandling_8h.html" title="llvm/Support/ErrorHandling.h" alt="" coords="2585,393,2791,420"/>
+<area shape="rect" href="$MathExtras_8h.html" title="llvm/Support/MathExtras.h" alt="" coords="3275,471,3464,497"/>
+<area shape="rect" href="$StringRef_8h.html" title="llvm/ADT/StringRef.h" alt="" coords="2048,471,2197,497"/>
+<area shape="rect" href="$type__traits_8h.html" title="llvm/Support/type_traits.h" alt="" coords="1859,548,2045,575"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="1860,625,2044,652"/>
+<area shape="rect" href="$SwapByteOrder_8h.html" title="llvm/Support/SwapByteOrder.h" alt="" coords="3275,548,3491,575"/>
+<area shape="rect" href="$STLExtras_8h.html" title="llvm/ADT/STLExtras.h" alt="" coords="160,471,315,497"/>
+<area shape="rect" href="$IntEqClasses_8h.html" title="llvm/ADT/IntEqClasses.h" alt="" coords="1455,161,1628,188"/>
+<area shape="rect" href="$AlignOf_8h.html" title="llvm/Support/AlignOf.h" alt="" coords="2987,471,3149,497"/>
+<area shape="rect" href="$Allocator_8h.html" title="llvm/Support/Allocator.h" alt="" coords="2865,393,3039,420"/>
+<area shape="rect" href="$SlotIndexes_8h.html" title="llvm/CodeGen/SlotIndexes.h" alt="" coords="2001,161,2201,188"/>
+<area shape="rect" href="$SmallVector_8h.html" title="llvm/ADT/SmallVector.h" alt="" coords="1703,393,1871,420"/>
+<area shape="rect" href="$MachineInstrBundle_8h.html" title="llvm/CodeGen/MachineInstrBundle.h" alt="" coords="768,239,1019,265"/>
+<area shape="rect" href="$ilist_8h.html" title="llvm/ADT/ilist.h" alt="" coords="2424,471,2539,497"/>
+<area shape="rect" href="$MachineFunction_8h.html" title="llvm/CodeGen/MachineFunction.h" alt="" coords="2139,239,2371,265"/>
+<area shape="rect" href="$MachineFunctionPass_8h.html" title="llvm/CodeGen/MachineFunctionPass.h" alt="" coords="1803,239,2064,265"/>
+<area shape="rect" href="$PointerIntPair_8h.html" title="llvm/ADT/PointerIntPair.h" alt="" coords="1285,471,1461,497"/>
+<area shape="rect" href="$DenseMap_8h.html" title="llvm/ADT/DenseMap.h" alt="" coords="2057,393,2217,420"/>
+<area shape="rect" href="$MachineBasicBlock_8h.html" title="llvm/CodeGen/MachineBasicBlock.h" alt="" coords="633,316,881,343"/>
+<area shape="rect" href="$MachineInstr_8h.html" title="llvm/CodeGen/MachineInstr.h" alt="" coords="848,393,1053,420"/>
+<area shape="rect" href="$GraphTraits_8h.html" title="llvm/ADT/GraphTraits.h" alt="" coords="440,393,605,420"/>
+<area shape="rect" href="$DenseMapInfo_8h.html" title="llvm/ADT/DenseMapInfo.h" alt="" coords="1587,471,1771,497"/>
+<area shape="rect" href="$DebugLoc_8h.html" title="llvm/Support/DebugLoc.h" alt="" coords="525,471,707,497"/>
+<area shape="rect" href="$PointerLikeTypeTraits_8h.html" title="llvm/Support/PointerLikeTypeTraits.h" alt="" coords="1587,548,1835,575"/>
+<area shape="rect" href="$Recycler_8h.html" title="llvm/Support/Recycler.h" alt="" coords="2292,316,2460,343"/>
+<area shape="rect" href="$Pass_8h.html" title="llvm/Pass.h" alt="" coords="1888,316,1979,343"/>
+<area shape="rect" href="$PassSupport_8h.html" title="llvm/PassSupport.h" alt="" coords="629,393,773,420"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/LiveRangeCalc_8h__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LiveRangeCalc_8h__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/LiveRangeCalc_8h__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/LiveRangeEdit_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LiveRangeEdit_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LiveRangeEdit_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LiveRangeEdit_8h__dep__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,25 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="LiveRangeEdit.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="InlineSpiller.cpp",height=0.2,width=0.4,color="black",URL="$InlineSpiller_8cpp.html"];
+  Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="LiveRangeEdit.cpp",height=0.2,width=0.4,color="black",URL="$LiveRangeEdit_8cpp.html"];
+  Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="RegAllocBase.cpp",height=0.2,width=0.4,color="black",URL="$RegAllocBase_8cpp.html"];
+  Node1 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="RegAllocBasic.cpp",height=0.2,width=0.4,color="black",URL="$RegAllocBasic_8cpp.html"];
+  Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="RegAllocGreedy.cpp",height=0.2,width=0.4,color="black",URL="$RegAllocGreedy_8cpp.html"];
+  Node1 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="RegAllocPBQP.cpp",height=0.2,width=0.4,color="black",URL="$RegAllocPBQP_8cpp.html"];
+  Node1 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="RegisterCoalescer.cpp",height=0.2,width=0.4,color="black",URL="$RegisterCoalescer_8cpp.html"];
+  Node1 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="Spiller.cpp",height=0.2,width=0.4,color="black",URL="$Spiller_8cpp.html"];
+  Node1 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="SplitKit.cpp",height=0.2,width=0.4,color="black",URL="$SplitKit_8cpp.html"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/LiveRegMatrix_8h__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LiveRegMatrix_8h__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/LiveRegMatrix_8h__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/LiveStackAnalysis_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LiveStackAnalysis_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LiveStackAnalysis_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LiveStackAnalysis_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,155 @@
+<!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: LiveStackAnalysis.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">LiveStackAnalysis.h</div>  </div>
+</div>
+<div class="contents">
+<a href="LiveStackAnalysis_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- LiveStackAnalysis.h - Live Stack Slot Analysis ----------*- 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 implements the live stack slot analysis pass. It is analogous to</span>
+<a name="l00011"></a>00011 <span class="comment">// live interval analysis except it's analyzing liveness of stack slots rather</span>
+<a name="l00012"></a>00012 <span class="comment">// than registers.</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_LIVESTACK_ANALYSIS_H</span>
+<a name="l00017"></a>00017 <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CODEGEN_LIVESTACK_ANALYSIS_H</span>
+<a name="l00018"></a>00018 <span class="preprocessor"></span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="MachineFunctionPass_8h.html">llvm/CodeGen/MachineFunctionPass.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="LiveInterval_8h.html">llvm/CodeGen/LiveInterval.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="TargetRegisterInfo_8h.html">llvm/Target/TargetRegisterInfo.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="Allocator_8h.html">llvm/Support/Allocator.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include <map></span>
+<a name="l00024"></a>00024 
+<a name="l00025"></a>00025 <span class="keyword">namespace </span>llvm {
+<a name="l00026"></a>00026 
+<a name="l00027"></a><a class="code" href="classllvm_1_1LiveStacks.html">00027</a>   <span class="keyword">class </span><a class="code" href="classllvm_1_1LiveStacks.html">LiveStacks</a> : <span class="keyword">public</span> <a class="code" href="classllvm_1_1MachineFunctionPass.html">MachineFunctionPass</a> {
+<a name="l00028"></a>00028     <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetRegisterInfo.html">TargetRegisterInfo</a> *TRI;
+<a name="l00029"></a>00029 <span class="comment"></span>
+<a name="l00030"></a>00030 <span class="comment">    /// Special pool allocator for VNInfo's (LiveInterval val#).</span>
+<a name="l00031"></a>00031 <span class="comment">    ///</span>
+<a name="l00032"></a>00032 <span class="comment"></span>    <a class="code" href="classllvm_1_1BumpPtrAllocator.html">VNInfo::Allocator</a> VNInfoAllocator;
+<a name="l00033"></a>00033 <span class="comment"></span>
+<a name="l00034"></a>00034 <span class="comment">    /// S2IMap - Stack slot indices to live interval mapping.</span>
+<a name="l00035"></a>00035 <span class="comment">    ///</span>
+<a name="l00036"></a>00036 <span class="comment"></span>    <span class="keyword">typedef</span> std::map<int, LiveInterval> SS2IntervalMap;
+<a name="l00037"></a>00037     SS2IntervalMap S2IMap;
+<a name="l00038"></a>00038 <span class="comment"></span>
+<a name="l00039"></a>00039 <span class="comment">    /// S2RCMap - Stack slot indices to register class mapping.</span>
+<a name="l00040"></a>00040 <span class="comment"></span>    std::map<int, const TargetRegisterClass*> S2RCMap;
+<a name="l00041"></a>00041     
+<a name="l00042"></a>00042   <span class="keyword">public</span>:
+<a name="l00043"></a><a class="code" href="classllvm_1_1LiveStacks.html#af65273491b9ceb20bb9dac2e61a4acf8">00043</a>     <span class="keyword">static</span> <span class="keywordtype">char</span> <a class="code" href="classllvm_1_1LiveStacks.html#af65273491b9ceb20bb9dac2e61a4acf8">ID</a>; <span class="comment">// Pass identification, replacement for typeid</span>
+<a name="l00044"></a><a class="code" href="classllvm_1_1LiveStacks.html#a7428f9d9864a965c1fba7f202ce51cad">00044</a>     <a class="code" href="classllvm_1_1LiveStacks.html#a7428f9d9864a965c1fba7f202ce51cad">LiveStacks</a>() : <a class="code" href="classllvm_1_1MachineFunctionPass.html">MachineFunctionPass</a>(<a class="code" href="classllvm_1_1LiveStacks.html#af65273491b9ceb20bb9dac2e61a4acf8">ID</a>) {
+<a name="l00045"></a>00045       <a class="code" href="namespacellvm.html#a7aeb11cd960ff18ae0b12e678dfcae57">initializeLiveStacksPass</a>(*<a class="code" href="classllvm_1_1PassRegistry.html#a05a729900b76c89e808c6c3094921b2f">PassRegistry::getPassRegistry</a>());
+<a name="l00046"></a>00046     }
+<a name="l00047"></a>00047 
+<a name="l00048"></a><a class="code" href="classllvm_1_1LiveStacks.html#a42a122c825a90b3f8bdd0bb3201a52d9">00048</a>     <span class="keyword">typedef</span> SS2IntervalMap::iterator <a class="code" href="classllvm_1_1LiveStacks.html#a42a122c825a90b3f8bdd0bb3201a52d9">iterator</a>;
+<a name="l00049"></a><a class="code" href="classllvm_1_1LiveStacks.html#ac29e9bf050907fde9ab791c91dbf307e">00049</a>     <span class="keyword">typedef</span> SS2IntervalMap::const_iterator <a class="code" href="classllvm_1_1LiveStacks.html#ac29e9bf050907fde9ab791c91dbf307e">const_iterator</a>;
+<a name="l00050"></a><a class="code" href="classllvm_1_1LiveStacks.html#a6ef737b6c220027ec4edecf55a1e79c7">00050</a>     <a class="code" href="classllvm_1_1LiveStacks.html#ac29e9bf050907fde9ab791c91dbf307e">const_iterator</a> <a class="code" href="classllvm_1_1LiveStacks.html#a6ef737b6c220027ec4edecf55a1e79c7">begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> S2IMap.begin(); }
+<a name="l00051"></a><a class="code" href="classllvm_1_1LiveStacks.html#a4868971c12f1b09616a9753a43978ca5">00051</a>     <a class="code" href="classllvm_1_1LiveStacks.html#ac29e9bf050907fde9ab791c91dbf307e">const_iterator</a> <a class="code" href="classllvm_1_1LiveStacks.html#a4868971c12f1b09616a9753a43978ca5">end</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> S2IMap.end(); }
+<a name="l00052"></a><a class="code" href="classllvm_1_1LiveStacks.html#a0e69fa21c01f7c2571b99b47bedb5ccd">00052</a>     <a class="code" href="classllvm_1_1LiveStacks.html#a42a122c825a90b3f8bdd0bb3201a52d9">iterator</a> <a class="code" href="classllvm_1_1LiveStacks.html#a0e69fa21c01f7c2571b99b47bedb5ccd">begin</a>() { <span class="keywordflow">return</span> S2IMap.begin(); }
+<a name="l00053"></a><a class="code" href="classllvm_1_1LiveStacks.html#ad039fdec31aa75e29c260f6b81a414d0">00053</a>     <a class="code" href="classllvm_1_1LiveStacks.html#a42a122c825a90b3f8bdd0bb3201a52d9">iterator</a> <a class="code" href="classllvm_1_1LiveStacks.html#ad039fdec31aa75e29c260f6b81a414d0">end</a>() { <span class="keywordflow">return</span> S2IMap.end(); }
+<a name="l00054"></a>00054 
+<a name="l00055"></a><a class="code" href="classllvm_1_1LiveStacks.html#a87a54a9a6bb40a99de73287405f67c3c">00055</a>     <span class="keywordtype">unsigned</span> <a class="code" href="classllvm_1_1LiveStacks.html#a87a54a9a6bb40a99de73287405f67c3c">getNumIntervals</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (<span class="keywordtype">unsigned</span>)S2IMap.size(); }
+<a name="l00056"></a>00056 
+<a name="l00057"></a>00057     <a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a> &<a class="code" href="classllvm_1_1LiveStacks.html#a77ec673a7fde73e91e8fa6be83a82b01">getOrCreateInterval</a>(<span class="keywordtype">int</span> Slot, <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetRegisterClass.html">TargetRegisterClass</a> *RC);
+<a name="l00058"></a>00058 
+<a name="l00059"></a><a class="code" href="classllvm_1_1LiveStacks.html#a33b374130efdc910ad7daa9e54eef8f2">00059</a>     <a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a> &<a class="code" href="classllvm_1_1LiveStacks.html#a33b374130efdc910ad7daa9e54eef8f2">getInterval</a>(<span class="keywordtype">int</span> Slot) {
+<a name="l00060"></a>00060       assert(Slot >= 0 && <span class="stringliteral">"Spill slot indice must be >= 0"</span>);
+<a name="l00061"></a>00061       SS2IntervalMap::iterator <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = S2IMap.find(Slot);
+<a name="l00062"></a>00062       assert(I != S2IMap.end() && <span class="stringliteral">"Interval does not exist for stack slot"</span>);
+<a name="l00063"></a>00063       <span class="keywordflow">return</span> I->second;
+<a name="l00064"></a>00064     }
+<a name="l00065"></a>00065 
+<a name="l00066"></a><a class="code" href="classllvm_1_1LiveStacks.html#a1e44cb1b123dbe3e229f0b6cc3ca2e3a">00066</a>     <span class="keyword">const</span> <a class="code" href="classllvm_1_1LiveInterval.html">LiveInterval</a> &<a class="code" href="classllvm_1_1LiveStacks.html#a1e44cb1b123dbe3e229f0b6cc3ca2e3a">getInterval</a>(<span class="keywordtype">int</span> Slot)<span class="keyword"> const </span>{
+<a name="l00067"></a>00067       assert(Slot >= 0 && <span class="stringliteral">"Spill slot indice must be >= 0"</span>);
+<a name="l00068"></a>00068       SS2IntervalMap::const_iterator <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = S2IMap.find(Slot);
+<a name="l00069"></a>00069       assert(I != S2IMap.end() && <span class="stringliteral">"Interval does not exist for stack slot"</span>);
+<a name="l00070"></a>00070       <span class="keywordflow">return</span> I->second;
+<a name="l00071"></a>00071     }
+<a name="l00072"></a>00072 
+<a name="l00073"></a><a class="code" href="classllvm_1_1LiveStacks.html#a6655937b78b0d74e62953b69f7365fe7">00073</a>     <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1LiveStacks.html#a6655937b78b0d74e62953b69f7365fe7">hasInterval</a>(<span class="keywordtype">int</span> Slot)<span class="keyword"> const </span>{
+<a name="l00074"></a>00074       <span class="keywordflow">return</span> S2IMap.count(Slot);
+<a name="l00075"></a>00075     }
+<a name="l00076"></a>00076 
+<a name="l00077"></a><a class="code" href="classllvm_1_1LiveStacks.html#a5714439036657113fcd26cb5b02952fe">00077</a>     <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetRegisterClass.html">TargetRegisterClass</a> *<a class="code" href="classllvm_1_1LiveStacks.html#a5714439036657113fcd26cb5b02952fe">getIntervalRegClass</a>(<span class="keywordtype">int</span> Slot)<span class="keyword"> const </span>{
+<a name="l00078"></a>00078       assert(Slot >= 0 && <span class="stringliteral">"Spill slot indice must be >= 0"</span>);
+<a name="l00079"></a>00079       std::map<int, const TargetRegisterClass*>::const_iterator
+<a name="l00080"></a>00080         <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = S2RCMap.find(Slot);
+<a name="l00081"></a>00081       assert(I != S2RCMap.end() &&
+<a name="l00082"></a>00082              <span class="stringliteral">"Register class info does not exist for stack slot"</span>);
+<a name="l00083"></a>00083       <span class="keywordflow">return</span> I->second;
+<a name="l00084"></a>00084     }
+<a name="l00085"></a>00085 
+<a name="l00086"></a><a class="code" href="classllvm_1_1LiveStacks.html#a776c2d304a03130488c07e56f496c0b0">00086</a>     <a class="code" href="classllvm_1_1BumpPtrAllocator.html">VNInfo::Allocator</a>& <a class="code" href="classllvm_1_1LiveStacks.html#a776c2d304a03130488c07e56f496c0b0">getVNInfoAllocator</a>() { <span class="keywordflow">return</span> VNInfoAllocator; }
+<a name="l00087"></a>00087 
+<a name="l00088"></a>00088     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1LiveStacks.html#a1a314ea34a733db129d11308dad6fe29">getAnalysisUsage</a>(<a class="code" href="classllvm_1_1AnalysisUsage.html">AnalysisUsage</a> &AU) <span class="keyword">const</span>;
+<a name="l00089"></a>00089     <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1LiveStacks.html#afa35a4ac060fbfd13a7e839b3c08732a">releaseMemory</a>();
+<a name="l00090"></a>00090 <span class="comment"></span>
+<a name="l00091"></a>00091 <span class="comment">    /// runOnMachineFunction - pass entry point</span>
+<a name="l00092"></a>00092 <span class="comment"></span>    <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classllvm_1_1LiveStacks.html#a0490ec29433e1cad9b0bc742f56501ed" title="runOnMachineFunction - pass entry point">runOnMachineFunction</a>(<a class="code" href="classllvm_1_1MachineFunction.html">MachineFunction</a>&);
+<a name="l00093"></a>00093 <span class="comment"></span>
+<a name="l00094"></a>00094 <span class="comment">    /// print - Implement the dump method.</span>
+<a name="l00095"></a>00095 <span class="comment"></span>    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1LiveStacks.html#af27c315ed1a116d49f82c99eb5b7cd55" title="print - Implement the dump method.">print</a>(<a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O, <span class="keyword">const</span> <a class="code" href="classllvm_1_1Module.html" title="The main container class for the LLVM Intermediate Representation.">Module</a>* = 0) <span class="keyword">const</span>;
+<a name="l00096"></a>00096   };
+<a name="l00097"></a>00097 }
+<a name="l00098"></a>00098 
+<a name="l00099"></a>00099 <span class="preprocessor">#endif </span><span class="comment">/* LLVM_CODEGEN_LIVESTACK_ANALYSIS_H */</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:35:11 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/LiveVariables_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LiveVariables_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LiveVariables_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LiveVariables_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,180 @@
+<!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: LiveVariables.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_f2244d21cf8bec63d11bfc1ad661d96f.html">CodeGen</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a> |
+<a href="#var-members">Variables</a>  </div>
+  <div class="headertitle">
+<div class="title">LiveVariables.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="LiveVariables_8h_source.html">llvm/CodeGen/LiveVariables.h</a>"</code><br/>
+<code>#include "<a class="el" href="MachineInstr_8h_source.html">llvm/CodeGen/MachineInstr.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="CodeGen_2Passes_8h_source.html">llvm/CodeGen/Passes.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="TargetInstrInfo_8h_source.html">llvm/Target/TargetInstrInfo.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="ErrorHandling_8h_source.html">llvm/Support/ErrorHandling.h</a>"</code><br/>
+<code>#include "<a class="el" href="DepthFirstIterator_8h_source.html">llvm/ADT/DepthFirstIterator.h</a>"</code><br/>
+<code>#include "<a class="el" href="SmallPtrSet_8h_source.html">llvm/ADT/SmallPtrSet.h</a>"</code><br/>
+<code>#include "<a class="el" href="SmallSet_8h_source.html">llvm/ADT/SmallSet.h</a>"</code><br/>
+<code>#include "<a class="el" href="STLExtras_8h_source.html">llvm/ADT/STLExtras.h</a>"</code><br/>
+<code>#include <algorithm></code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for LiveVariables.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="LiveVariables_8cpp__incl.png" border="0" usemap="#LiveVariables_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="LiveVariables_8cpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<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="LiveVariables_8cpp.html#a1d311f531910aa3c3638cc12b49a3068">INITIALIZE_PASS_BEGIN</a> (<a class="el" href="classllvm_1_1LiveVariables.html">LiveVariables</a>,"livevars","Live Variable Analysis", false, <a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a>) INITIALIZE_PASS_END(<a class="el" href="classllvm_1_1LiveVariables.html">LiveVariables</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"> </td><td class="memItemRight" valign="bottom"><a class="el" href="LiveVariables_8cpp.html#a5bcde61f356a5d1dd5eed019a43749b6">livevars</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">Live Variable </td><td class="memItemRight" valign="bottom"><a class="el" href="LiveVariables_8cpp.html#a1c1026418988cb4fbcd5df72bb6a50b5">Analysis</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">Live Variable </td><td class="memItemRight" valign="bottom"><a class="el" href="LiveVariables_8cpp.html#a111028ee6e53149a3833407cd624160b">false</a></td></tr>
+</table>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a1d311f531910aa3c3638cc12b49a3068"></a><!-- doxytag: member="LiveVariables.cpp::INITIALIZE_PASS_BEGIN" ref="a1d311f531910aa3c3638cc12b49a3068" args="(LiveVariables,"livevars","Live Variable Analysis", false, false) INITIALIZE_PASS_END(LiveVariables" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">INITIALIZE_PASS_BEGIN </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1LiveVariables.html">LiveVariables</a> </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"livevars" </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Live Variable Analysis" </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a> </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a> </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="a1c1026418988cb4fbcd5df72bb6a50b5"></a><!-- doxytag: member="LiveVariables.cpp::Analysis" ref="a1c1026418988cb4fbcd5df72bb6a50b5" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">Live Variable Analysis</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="LiveVariables_8cpp_source.html#l00049">49</a> of file <a class="el" href="LiveVariables_8cpp_source.html">LiveVariables.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a111028ee6e53149a3833407cd624160b"></a><!-- doxytag: member="LiveVariables.cpp::false" ref="a111028ee6e53149a3833407cd624160b" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">Live Variable <a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="LiveVariables_8cpp_source.html#l00049">49</a> of file <a class="el" href="LiveVariables_8cpp_source.html">LiveVariables.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5bcde61f356a5d1dd5eed019a43749b6"></a><!-- doxytag: member="LiveVariables.cpp::livevars" ref="a5bcde61f356a5d1dd5eed019a43749b6" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="LiveVariables_8cpp.html#a5bcde61f356a5d1dd5eed019a43749b6">livevars</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="LiveVariables_8cpp_source.html#l00049">49</a> of file <a class="el" href="LiveVariables_8cpp_source.html">LiveVariables.cpp</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:31 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/LiveVariables_8cpp__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LiveVariables_8cpp__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LiveVariables_8cpp__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LiveVariables_8cpp__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,46 @@
+<map id="G" name="G">
+<area shape="rect" href="$LiveVariables_8h.html" title="llvm/CodeGen/LiveVariables.h" alt="" coords="1847,84,2055,111"/>
+<area shape="rect" href="$MachineInstr_8h.html" title="llvm/CodeGen/MachineInstr.h" alt="" coords="1116,316,1321,343"/>
+<area shape="rect" href="$STLExtras_8h.html" title="llvm/ADT/STLExtras.h" alt="" coords="93,393,248,420"/>
+<area shape="rect" href="$ErrorHandling_8h.html" title="llvm/Support/ErrorHandling.h" alt="" coords="2005,393,2211,420"/>
+<area shape="rect" href="$SmallSet_8h.html" title="llvm/ADT/SmallSet.h" alt="" coords="2584,239,2736,265"/>
+<area shape="rect" href="$SmallPtrSet_8h.html" title="llvm/ADT/SmallPtrSet.h" alt="" coords="3544,393,3712,420"/>
+<area shape="rect" href="$MachineRegisterInfo_8h.html" title="llvm/CodeGen/MachineRegisterInfo.h" alt="" coords="508,84,761,111"/>
+<area shape="rect" href="$CodeGen_2Passes_8h.html" title="llvm/CodeGen/Passes.h" alt="" coords="3895,161,4065,188"/>
+<area shape="rect" href="$Target_2TargetMachine_8h.html" title="llvm/Target/TargetMachine.h" alt="" coords="3887,239,4084,265"/>
+<area shape="rect" href="$Debug_8h.html" title="llvm/Support/Debug.h" alt="" coords="3648,84,3808,111"/>
+<area shape="rect" href="$TargetInstrInfo_8h.html" title="llvm/Target/TargetInstrInfo.h" alt="" coords="2332,84,2527,111"/>
+<area shape="rect" href="$DepthFirstIterator_8h.html" title="llvm/ADT/DepthFirstIterator.h" alt="" coords="3269,316,3472,343"/>
+<area shape="rect" href="$MachineBasicBlock_8h.html" title="llvm/CodeGen/MachineBasicBlock.h" alt="" coords="1691,239,1939,265"/>
+<area shape="rect" href="$SmallVector_8h.html" title="llvm/ADT/SmallVector.h" alt="" coords="499,471,667,497"/>
+<area shape="rect" href="$MachineFunctionPass_8h.html" title="llvm/CodeGen/MachineFunctionPass.h" alt="" coords="3188,239,3449,265"/>
+<area shape="rect" href="$TargetRegisterInfo_8h.html" title="llvm/Target/TargetRegisterInfo.h" alt="" coords="452,161,671,188"/>
+<area shape="rect" href="$BitVector_8h.html" title="llvm/ADT/BitVector.h" alt="" coords="1403,316,1552,343"/>
+<area shape="rect" href="$DenseMap_8h.html" title="llvm/ADT/DenseMap.h" alt="" coords="2687,316,2847,343"/>
+<area shape="rect" href="$IndexedMap_8h.html" title="llvm/ADT/IndexedMap.h" alt="" coords="128,316,299,343"/>
+<area shape="rect" href="$SparseBitVector_8h.html" title="llvm/ADT/SparseBitVector.h" alt="" coords="1904,316,2099,343"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="2652,548,2836,575"/>
+<area shape="rect" href="$GraphTraits_8h.html" title="llvm/ADT/GraphTraits.h" alt="" coords="2989,393,3155,420"/>
+<area shape="rect" href="$MachineOperand_8h.html" title="llvm/CodeGen/MachineOperand.h" alt="" coords="1955,471,2189,497"/>
+<area shape="rect" href="$MCInstrDesc_8h.html" title="llvm/MC/MCInstrDesc.h" alt="" coords="2235,393,2403,420"/>
+<area shape="rect" href="$TargetOpcodes_8h.html" title="llvm/Target/TargetOpcodes.h" alt="" coords="744,393,944,420"/>
+<area shape="rect" href="$ArrayRef_8h.html" title="llvm/ADT/ArrayRef.h" alt="" coords="525,393,669,420"/>
+<area shape="rect" href="$ilist_8h.html" title="llvm/ADT/ilist.h" alt="" coords="1536,471,1651,497"/>
+<area shape="rect" href="$ilist__node_8h.html" title="llvm/ADT/ilist_node.h" alt="" coords="1627,393,1779,420"/>
+<area shape="rect" href="$StringRef_8h.html" title="llvm/ADT/StringRef.h" alt="" coords="1680,471,1829,497"/>
+<area shape="rect" href="$DenseMapInfo_8h.html" title="llvm/ADT/DenseMapInfo.h" alt="" coords="2731,393,2915,420"/>
+<area shape="rect" href="$InlineAsm_8h.html" title="llvm/InlineAsm.h" alt="" coords="1019,393,1144,420"/>
+<area shape="rect" href="$DebugLoc_8h.html" title="llvm/Support/DebugLoc.h" alt="" coords="1219,393,1400,420"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="2191,548,2364,575"/>
+<area shape="rect" href="$PointerLikeTypeTraits_8h.html" title="llvm/Support/PointerLikeTypeTraits.h" alt="" coords="2832,471,3080,497"/>
+<area shape="rect" href="$Pass_8h.html" title="llvm/Pass.h" alt="" coords="3780,471,3871,497"/>
+<area shape="rect" href="$MachineInstrBundle_8h.html" title="llvm/CodeGen/MachineInstrBundle.h" alt="" coords="1663,161,1913,188"/>
+<area shape="rect" href="$CodeGen_8h.html" title="llvm/Support/CodeGen.h" alt="" coords="4147,316,4323,343"/>
+<area shape="rect" href="$TargetOptions_8h.html" title="llvm/Target/TargetOptions.h" alt="" coords="4364,471,4559,497"/>
+<area shape="rect" href="$TargetTransformInfo_8h.html" title="llvm/TargetTransformInfo.h" alt="" coords="3900,393,4087,420"/>
+<area shape="rect" href="$TargetTransformImpl_8h.html" title="llvm/Target/TargetTransformImpl.h" alt="" coords="3888,316,4123,343"/>
+<area shape="rect" href="$MCInstrInfo_8h.html" title="llvm/MC/MCInstrInfo.h" alt="" coords="2412,316,2569,343"/>
+<area shape="rect" href="$DFAPacketizer_8h.html" title="llvm/CodeGen/DFAPacketizer.h" alt="" coords="2224,161,2440,188"/>
+<area shape="rect" href="$MachineFunction_8h.html" title="llvm/CodeGen/MachineFunction.h" alt="" coords="1407,161,1639,188"/>
+<area shape="rect" href="$PointerIntPair_8h.html" title="llvm/ADT/PointerIntPair.h" alt="" coords="3280,393,3456,420"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/Loads_8h__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Loads_8h__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Loads_8h__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Loads_8h__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,90 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="Loads.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/BasicBlock.h",height=0.2,width=0.4,color="black",URL="$BasicBlock_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/Instruction.h",height=0.2,width=0.4,color="black",URL="$Instruction_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/User.h",height=0.2,width=0.4,color="black",URL="$User_8h.html"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="llvm/Support/ErrorHandling.h",height=0.2,width=0.4,color="black",URL="$ErrorHandling_8h.html"];
+  Node5 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node5 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="llvm/ADT/StringRef.h",height=0.2,width=0.4,color="black",URL="$StringRef_8h.html"];
+  Node7 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="black",URL="$type__traits_8h.html"];
+  Node8 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="black",URL="$DataTypes_8h.html"];
+  Node9 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+  Node8 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="cstddef",height=0.2,width=0.4,color="grey75"];
+  Node8 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="utility",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="cstring",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="limits",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node7 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="llvm/Value.h",height=0.2,width=0.4,color="black",URL="$Value_8h.html"];
+  Node21 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="llvm/Use.h",height=0.2,width=0.4,color="black",URL="$Use_8h.html"];
+  Node22 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="llvm/ADT/PointerIntPair.h",height=0.2,width=0.4,color="black",URL="$PointerIntPair_8h.html"];
+  Node23 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="llvm/Support/PointerLikeTypeTraits.h",height=0.2,width=0.4,color="black",URL="$PointerLikeTypeTraits_8h.html"];
+  Node24 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node21 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/Support/Casting.h",height=0.2,width=0.4,color="black",URL="$Casting_8h.html"];
+  Node26 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/ADT/ilist_node.h",height=0.2,width=0.4,color="black",URL="$ilist__node_8h.html"];
+  Node3 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/Support/DebugLoc.h",height=0.2,width=0.4,color="black",URL="$DebugLoc_8h.html"];
+  Node3 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/Instruction.def",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/SymbolTableListTraits.h",height=0.2,width=0.4,color="black",URL="$SymbolTableListTraits_8h.html"];
+  Node30 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/ADT/ilist.h",height=0.2,width=0.4,color="black",URL="$ilist_8h.html"];
+  Node31 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/ADT/Twine.h",height=0.2,width=0.4,color="black",URL="$Twine_8h.html"];
+  Node32 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/Local_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Local_8h_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Local_8h_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Local_8h_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,314 @@
+<!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: Local.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_5c61f109262ee79315cb0ac1a5e1be6f.html">Transforms</a>      </li>
+      <li class="navelem"><a class="el" href="dir_281a58b14cc8f76e4a094a720e66e337.html">Utils</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">Local.h</div>  </div>
+</div>
+<div class="contents">
+<a href="Local_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- Local.h - Functions to perform local transformations ----*- 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 family of functions perform various local transformations to the</span>
+<a name="l00011"></a>00011 <span class="comment">// program.</span>
+<a name="l00012"></a>00012 <span class="comment">//</span>
+<a name="l00013"></a>00013 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00014"></a>00014 
+<a name="l00015"></a>00015 <span class="preprocessor">#ifndef LLVM_TRANSFORMS_UTILS_LOCAL_H</span>
+<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define LLVM_TRANSFORMS_UTILS_LOCAL_H</span>
+<a name="l00017"></a>00017 <span class="preprocessor"></span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="IRBuilder_8h.html">llvm/IRBuilder.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="Operator_8h.html">llvm/Operator.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="GetElementPtrTypeIterator_8h.html">llvm/Support/GetElementPtrTypeIterator.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="DataLayout_8h.html">llvm/DataLayout.h</a>"</span>
+<a name="l00022"></a>00022 
+<a name="l00023"></a>00023 <span class="keyword">namespace </span>llvm {
+<a name="l00024"></a>00024 
+<a name="l00025"></a>00025 <span class="keyword">class </span>User;
+<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>Function;
+<a name="l00028"></a>00028 <span class="keyword">class </span>BranchInst;
+<a name="l00029"></a>00029 <span class="keyword">class </span>Instruction;
+<a name="l00030"></a>00030 <span class="keyword">class </span>DbgDeclareInst;
+<a name="l00031"></a>00031 <span class="keyword">class </span>StoreInst;
+<a name="l00032"></a>00032 <span class="keyword">class </span>LoadInst;
+<a name="l00033"></a>00033 <span class="keyword">class </span>Value;
+<a name="l00034"></a>00034 <span class="keyword">class </span>Pass;
+<a name="l00035"></a>00035 <span class="keyword">class </span>PHINode;
+<a name="l00036"></a>00036 <span class="keyword">class </span>AllocaInst;
+<a name="l00037"></a>00037 <span class="keyword">class </span>ConstantExpr;
+<a name="l00038"></a>00038 <span class="keyword">class </span>DataLayout;
+<a name="l00039"></a>00039 <span class="keyword">class </span>TargetLibraryInfo;
+<a name="l00040"></a>00040 <span class="keyword">class </span>TargetTransformInfo;
+<a name="l00041"></a>00041 <span class="keyword">class </span>DIBuilder;
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043 <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">class </span>SmallVectorImpl;
+<a name="l00044"></a>00044   
+<a name="l00045"></a>00045 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00046"></a>00046 <span class="comment">//  Local constant propagation.</span>
+<a name="l00047"></a>00047 <span class="comment">//</span>
+<a name="l00048"></a>00048 <span class="comment"></span>
+<a name="l00049"></a>00049 <span class="comment">/// ConstantFoldTerminator - If a terminator instruction is predicated on a</span>
+<a name="l00050"></a>00050 <span class="comment">/// constant value, convert it into an unconditional branch to the constant</span>
+<a name="l00051"></a>00051 <span class="comment">/// destination.  This is a nontrivial operation because the successors of this</span>
+<a name="l00052"></a>00052 <span class="comment">/// basic block must have their PHI nodes updated.</span>
+<a name="l00053"></a>00053 <span class="comment">/// Also calls RecursivelyDeleteTriviallyDeadInstructions() on any branch/switch</span>
+<a name="l00054"></a>00054 <span class="comment">/// conditions and indirectbr addresses this might make dead if</span>
+<a name="l00055"></a>00055 <span class="comment">/// DeleteDeadConditions is true.</span>
+<a name="l00056"></a>00056 <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#a78ab69092404fc83d77ccb06b3f7138d">ConstantFoldTerminator</a>(<a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *BB, <span class="keywordtype">bool</span> DeleteDeadConditions = <span class="keyword">false</span>,
+<a name="l00057"></a>00057                             <span class="keyword">const</span> TargetLibraryInfo *TLI = 0);
+<a name="l00058"></a>00058 
+<a name="l00059"></a>00059 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00060"></a>00060 <span class="comment">//  Local dead code elimination.</span>
+<a name="l00061"></a>00061 <span class="comment">//</span>
+<a name="l00062"></a>00062 <span class="comment"></span>
+<a name="l00063"></a>00063 <span class="comment">/// isInstructionTriviallyDead - Return true if the result produced by the</span>
+<a name="l00064"></a>00064 <span class="comment">/// instruction is not used, and the instruction has no side effects.</span>
+<a name="l00065"></a>00065 <span class="comment">///</span>
+<a name="l00066"></a>00066 <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#abe283966f269761ee387642061c4451e">isInstructionTriviallyDead</a>(Instruction *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>, <span class="keyword">const</span> TargetLibraryInfo *TLI=0);
+<a name="l00067"></a>00067 <span class="comment"></span>
+<a name="l00068"></a>00068 <span class="comment">/// RecursivelyDeleteTriviallyDeadInstructions - If the specified value is a</span>
+<a name="l00069"></a>00069 <span class="comment">/// trivially dead instruction, delete it.  If that makes any of its operands</span>
+<a name="l00070"></a>00070 <span class="comment">/// trivially dead, delete them too, recursively.  Return true if any</span>
+<a name="l00071"></a>00071 <span class="comment">/// instructions were deleted.</span>
+<a name="l00072"></a>00072 <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#a23b3753cc662a87b599913814ccf2444">RecursivelyDeleteTriviallyDeadInstructions</a>(Value *V,
+<a name="l00073"></a>00073                                                 <span class="keyword">const</span> TargetLibraryInfo *TLI=0);
+<a name="l00074"></a>00074 <span class="comment"></span>
+<a name="l00075"></a>00075 <span class="comment">/// RecursivelyDeleteDeadPHINode - If the specified value is an effectively</span>
+<a name="l00076"></a>00076 <span class="comment">/// dead PHI node, due to being a def-use chain of single-use nodes that</span>
+<a name="l00077"></a>00077 <span class="comment">/// either forms a cycle or is terminated by a trivially dead instruction,</span>
+<a name="l00078"></a>00078 <span class="comment">/// delete it.  If that makes any of its operands trivially dead, delete them</span>
+<a name="l00079"></a>00079 <span class="comment">/// too, recursively.  Return true if a change was made.</span>
+<a name="l00080"></a>00080 <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#a99dd30fd2667233bb86f5aeda794deea">RecursivelyDeleteDeadPHINode</a>(PHINode *PN, <span class="keyword">const</span> TargetLibraryInfo *TLI=0);
+<a name="l00081"></a>00081 
+<a name="l00082"></a>00082   <span class="comment"></span>
+<a name="l00083"></a>00083 <span class="comment">/// SimplifyInstructionsInBlock - Scan the specified basic block and try to</span>
+<a name="l00084"></a>00084 <span class="comment">/// simplify any instructions in it and recursively delete dead instructions.</span>
+<a name="l00085"></a>00085 <span class="comment">///</span>
+<a name="l00086"></a>00086 <span class="comment">/// This returns true if it changed the code, note that it can delete</span>
+<a name="l00087"></a>00087 <span class="comment">/// instructions in other blocks as well in this block.</span>
+<a name="l00088"></a>00088 <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#ad5b5ed1a0de8792e2ebf2eba3ba712fd">SimplifyInstructionsInBlock</a>(<a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *BB, <span class="keyword">const</span> DataLayout *TD = 0,
+<a name="l00089"></a>00089                                  <span class="keyword">const</span> TargetLibraryInfo *TLI = 0);
+<a name="l00090"></a>00090     
+<a name="l00091"></a>00091 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00092"></a>00092 <span class="comment">//  Control Flow Graph Restructuring.</span>
+<a name="l00093"></a>00093 <span class="comment">//</span>
+<a name="l00094"></a>00094 <span class="comment"></span>
+<a name="l00095"></a>00095 <span class="comment">/// RemovePredecessorAndSimplify - Like BasicBlock::removePredecessor, this</span>
+<a name="l00096"></a>00096 <span class="comment">/// method is called when we're about to delete Pred as a predecessor of BB.  If</span>
+<a name="l00097"></a>00097 <span class="comment">/// BB contains any PHI nodes, this drops the entries in the PHI nodes for Pred.</span>
+<a name="l00098"></a>00098 <span class="comment">///</span>
+<a name="l00099"></a>00099 <span class="comment">/// Unlike the removePredecessor method, this attempts to simplify uses of PHI</span>
+<a name="l00100"></a>00100 <span class="comment">/// nodes that collapse into identity values.  For example, if we have:</span>
+<a name="l00101"></a>00101 <span class="comment">///   x = phi(1, 0, 0, 0)</span>
+<a name="l00102"></a>00102 <span class="comment">///   y = and x, z</span>
+<a name="l00103"></a>00103 <span class="comment">///</span>
+<a name="l00104"></a>00104 <span class="comment">/// .. and delete the predecessor corresponding to the '1', this will attempt to</span>
+<a name="l00105"></a>00105 <span class="comment">/// recursively fold the 'and' to 0.</span>
+<a name="l00106"></a>00106 <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="namespacellvm.html#ae51038023f0a6cbfc42085cfa71f9754">RemovePredecessorAndSimplify</a>(<a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *BB, <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *Pred,
+<a name="l00107"></a>00107                                   DataLayout *TD = 0);
+<a name="l00108"></a>00108     
+<a name="l00109"></a>00109   <span class="comment"></span>
+<a name="l00110"></a>00110 <span class="comment">/// MergeBasicBlockIntoOnlyPred - BB is a block with one predecessor and its</span>
+<a name="l00111"></a>00111 <span class="comment">/// predecessor is known to have one successor (BB!).  Eliminate the edge</span>
+<a name="l00112"></a>00112 <span class="comment">/// between them, moving the instructions in the predecessor into BB.  This</span>
+<a name="l00113"></a>00113 <span class="comment">/// deletes the predecessor block.</span>
+<a name="l00114"></a>00114 <span class="comment">///</span>
+<a name="l00115"></a>00115 <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="namespacellvm.html#a02b5336d71826082af53837f2ffe6128">MergeBasicBlockIntoOnlyPred</a>(<a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *BB, Pass *P = 0);
+<a name="l00116"></a>00116     
+<a name="l00117"></a>00117 <span class="comment"></span>
+<a name="l00118"></a>00118 <span class="comment">/// TryToSimplifyUncondBranchFromEmptyBlock - BB is known to contain an</span>
+<a name="l00119"></a>00119 <span class="comment">/// unconditional branch, and contains no instructions other than PHI nodes,</span>
+<a name="l00120"></a>00120 <span class="comment">/// potential debug intrinsics and the branch.  If possible, eliminate BB by</span>
+<a name="l00121"></a>00121 <span class="comment">/// rewriting all the predecessors to branch to the successor block and return</span>
+<a name="l00122"></a>00122 <span class="comment">/// true.  If we can't transform, return false.</span>
+<a name="l00123"></a>00123 <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#a599000eece6fb1addb05b6b2c36be28c">TryToSimplifyUncondBranchFromEmptyBlock</a>(<a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *BB);
+<a name="l00124"></a>00124 <span class="comment"></span>
+<a name="l00125"></a>00125 <span class="comment">/// EliminateDuplicatePHINodes - Check for and eliminate duplicate PHI</span>
+<a name="l00126"></a>00126 <span class="comment">/// nodes in this block. This doesn't try to be clever about PHI nodes</span>
+<a name="l00127"></a>00127 <span class="comment">/// which differ only in the order of the incoming values, but instcombine</span>
+<a name="l00128"></a>00128 <span class="comment">/// orders them so it usually won't matter.</span>
+<a name="l00129"></a>00129 <span class="comment">///</span>
+<a name="l00130"></a>00130 <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#aed498f056a09006219c59ee9fab0450f">EliminateDuplicatePHINodes</a>(<a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *BB);
+<a name="l00131"></a>00131 <span class="comment"></span>
+<a name="l00132"></a>00132 <span class="comment">/// SimplifyCFG - This function is used to do simplification of a CFG.  For</span>
+<a name="l00133"></a>00133 <span class="comment">/// example, it adjusts branches to branches to eliminate the extra hop, it</span>
+<a name="l00134"></a>00134 <span class="comment">/// eliminates unreachable basic blocks, and does other "peephole" optimization</span>
+<a name="l00135"></a>00135 <span class="comment">/// of the CFG.  It returns true if a modification was made, possibly deleting</span>
+<a name="l00136"></a>00136 <span class="comment">/// the basic block that was pointed to.</span>
+<a name="l00137"></a>00137 <span class="comment">///</span>
+<a name="l00138"></a>00138 <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#ac26bdfa13d91caad2c676c35398abb1c">SimplifyCFG</a>(<a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a8472e46f9e4db168c5610ecdfb05dbaf" title="Various leaf nodes.">BasicBlock</a> *BB, <span class="keyword">const</span> DataLayout *TD = 0,
+<a name="l00139"></a>00139                  <span class="keyword">const</span> TargetTransformInfo *TTI = 0);
+<a name="l00140"></a>00140 <span class="comment"></span>
+<a name="l00141"></a>00141 <span class="comment">/// FoldBranchToCommonDest - If this basic block is ONLY a setcc and a branch,</span>
+<a name="l00142"></a>00142 <span class="comment">/// and if a predecessor branches to us and one of our successors, fold the</span>
+<a name="l00143"></a>00143 <span class="comment">/// setcc into the predecessor and use logical operations to pick the right</span>
+<a name="l00144"></a>00144 <span class="comment">/// destination.</span>
+<a name="l00145"></a>00145 <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#ab75560d250028c3c4e54556421109b9d">FoldBranchToCommonDest</a>(BranchInst *BI);
+<a name="l00146"></a>00146 <span class="comment"></span>
+<a name="l00147"></a>00147 <span class="comment">/// DemoteRegToStack - This function takes a virtual register computed by an</span>
+<a name="l00148"></a>00148 <span class="comment">/// Instruction and replaces it with a slot in the stack frame, allocated via</span>
+<a name="l00149"></a>00149 <span class="comment">/// alloca.  This allows the CFG to be changed around without fear of</span>
+<a name="l00150"></a>00150 <span class="comment">/// invalidating the SSA information for the value.  It returns the pointer to</span>
+<a name="l00151"></a>00151 <span class="comment">/// the alloca inserted to create a stack slot for X.</span>
+<a name="l00152"></a>00152 <span class="comment">///</span>
+<a name="l00153"></a>00153 <span class="comment"></span>AllocaInst *<a class="code" href="namespacellvm.html#ab70de4869abc35aca0ed6d28408285df">DemoteRegToStack</a>(Instruction &<a class="code" href="namespacellvm.html#a6569d00d31a5d74e563e2f39f82271ab">X</a>,
+<a name="l00154"></a>00154                              <span class="keywordtype">bool</span> VolatileLoads = <span class="keyword">false</span>,
+<a name="l00155"></a>00155                              Instruction *AllocaPoint = 0);
+<a name="l00156"></a>00156 <span class="comment"></span>
+<a name="l00157"></a>00157 <span class="comment">/// DemotePHIToStack - This function takes a virtual register computed by a phi</span>
+<a name="l00158"></a>00158 <span class="comment">/// node and replaces it with a slot in the stack frame, allocated via alloca.</span>
+<a name="l00159"></a>00159 <span class="comment">/// The phi node is deleted and it returns the pointer to the alloca inserted. </span>
+<a name="l00160"></a>00160 <span class="comment"></span>AllocaInst *<a class="code" href="namespacellvm.html#ac9fde0e3f7fcfc1cf6a4c7b8decacac5">DemotePHIToStack</a>(PHINode *P, Instruction *AllocaPoint = 0);
+<a name="l00161"></a>00161 <span class="comment"></span>
+<a name="l00162"></a>00162 <span class="comment">/// getOrEnforceKnownAlignment - If the specified pointer has an alignment that</span>
+<a name="l00163"></a>00163 <span class="comment">/// we can determine, return it, otherwise return 0.  If PrefAlign is specified,</span>
+<a name="l00164"></a>00164 <span class="comment">/// and it is more than the alignment of the ultimate object, see if we can</span>
+<a name="l00165"></a>00165 <span class="comment">/// increase the alignment of the ultimate object, making this check succeed.</span>
+<a name="l00166"></a>00166 <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="namespacellvm.html#a3dd948f1535b4b28f2a7d45a5c11a34a">getOrEnforceKnownAlignment</a>(Value *V, <span class="keywordtype">unsigned</span> PrefAlign,
+<a name="l00167"></a>00167                                     <span class="keyword">const</span> DataLayout *TD = 0);
+<a name="l00168"></a>00168 <span class="comment"></span>
+<a name="l00169"></a>00169 <span class="comment">/// getKnownAlignment - Try to infer an alignment for the specified pointer.</span>
+<a name="l00170"></a><a class="code" href="namespacellvm.html#a43b09383874e62945e0050480bf3d641">00170</a> <span class="comment"></span><span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <a class="code" href="namespacellvm.html#a43b09383874e62945e0050480bf3d641" title="getKnownAlignment - Try to infer an alignment for the specified pointer.">getKnownAlignment</a>(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *V, <span class="keyword">const</span> <a class="code" href="classllvm_1_1DataLayout.html">DataLayout</a> *TD = 0) {
+<a name="l00171"></a>00171   <span class="keywordflow">return</span> <a class="code" href="namespacellvm.html#a3dd948f1535b4b28f2a7d45a5c11a34a">getOrEnforceKnownAlignment</a>(V, 0, TD);
+<a name="l00172"></a>00172 }
+<a name="l00173"></a>00173 <span class="comment"></span>
+<a name="l00174"></a>00174 <span class="comment">/// EmitGEPOffset - Given a getelementptr instruction/constantexpr, emit the</span>
+<a name="l00175"></a>00175 <span class="comment">/// code necessary to compute the offset from the base pointer (without adding</span>
+<a name="l00176"></a>00176 <span class="comment">/// in the base pointer).  Return the result as a signed integer of intptr size.</span>
+<a name="l00177"></a>00177 <span class="comment">/// When NoAssumptions is true, no assumptions about index computation not</span>
+<a name="l00178"></a>00178 <span class="comment">/// overflowing is made.</span>
+<a name="l00179"></a>00179 <span class="comment"></span><span class="keyword">template</span><<span class="keyword">typename</span> IRBuilderTy>
+<a name="l00180"></a><a class="code" href="namespacellvm.html#a87a909169e4e5de59bb72705c1d7d026">00180</a> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *<a class="code" href="namespacellvm.html#a87a909169e4e5de59bb72705c1d7d026">EmitGEPOffset</a>(IRBuilderTy *Builder, <span class="keyword">const</span> <a class="code" href="classllvm_1_1DataLayout.html">DataLayout</a> &TD, <a class="code" href="classllvm_1_1User.html">User</a> *GEP,
+<a name="l00181"></a>00181                      <span class="keywordtype">bool</span> NoAssumptions = <span class="keyword">false</span>) {
+<a name="l00182"></a>00182   <a class="code" href="classllvm_1_1generic__gep__type__iterator.html">gep_type_iterator</a> GTI = <a class="code" href="namespacellvm.html#ac828b9b52935f87659a4adf237f820a3">gep_type_begin</a>(GEP);
+<a name="l00183"></a>00183   <a class="code" href="classllvm_1_1Type.html">Type</a> *IntPtrTy = TD.<a class="code" href="classllvm_1_1DataLayout.html#ae84bb2408dfffa4e8b5fe2ce0714a3bd">getIntPtrType</a>(GEP-><a class="code" href="classllvm_1_1Value.html#af85a4828b6b5a8de7fc0a55cc0e5b52f" title="All values hold a context through their type.">getContext</a>());
+<a name="l00184"></a>00184   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Result = <a class="code" href="classllvm_1_1Constant.html#aa6574d526b3e38a28f688a7bb4325c2c">Constant::getNullValue</a>(IntPtrTy);
+<a name="l00185"></a>00185 
+<a name="l00186"></a>00186   <span class="comment">// If the GEP is inbounds, we know that none of the addressing operations will</span>
+<a name="l00187"></a>00187   <span class="comment">// overflow in an unsigned sense.</span>
+<a name="l00188"></a>00188   <span class="keywordtype">bool</span> isInBounds = cast<GEPOperator>(GEP)->isInBounds() && !NoAssumptions;
+<a name="l00189"></a>00189 
+<a name="l00190"></a>00190   <span class="comment">// Build a mask for high order bits.</span>
+<a name="l00191"></a>00191   <span class="keywordtype">unsigned</span> IntPtrWidth = TD.<a class="code" href="classllvm_1_1DataLayout.html#a9cb015699ac01dfa6ebb3cc4ce5a6a93">getPointerSizeInBits</a>();
+<a name="l00192"></a>00192   uint64_t PtrSizeMask = ~0ULL >> (64-IntPtrWidth);
+<a name="l00193"></a>00193 
+<a name="l00194"></a>00194   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1Use.html">User::op_iterator</a> i = GEP-><a class="code" href="classllvm_1_1User.html#a2eeb1c7ed1cfe403f2ae0470e36c07e2">op_begin</a>() + 1, e = GEP-><a class="code" href="classllvm_1_1User.html#af41f58e730804d10b91fcff39b035f74">op_end</a>(); i != e;
+<a name="l00195"></a>00195        ++i, ++GTI) {
+<a name="l00196"></a>00196     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Op = *i;
+<a name="l00197"></a>00197     uint64_t Size = TD.<a class="code" href="classllvm_1_1DataLayout.html#a1d6fcc02e91ba24510aba42660c90e29">getTypeAllocSize</a>(GTI.<a class="code" href="classllvm_1_1generic__gep__type__iterator.html#aa9576aea404b156a949122affc839777">getIndexedType</a>()) & PtrSizeMask;
+<a name="l00198"></a>00198     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *OpC = dyn_cast<ConstantInt>(Op)) {
+<a name="l00199"></a>00199       <span class="keywordflow">if</span> (OpC->isZero()) <span class="keywordflow">continue</span>;
+<a name="l00200"></a>00200 
+<a name="l00201"></a>00201       <span class="comment">// Handle a struct index, which adds its field offset to the pointer.</span>
+<a name="l00202"></a>00202       <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1StructType.html">StructType</a> *STy = dyn_cast<StructType>(*GTI)) {
+<a name="l00203"></a>00203         Size = TD.<a class="code" href="classllvm_1_1DataLayout.html#a35c840104f32575e0d91422cf1ef3ce4">getStructLayout</a>(STy)-><a class="code" href="classllvm_1_1StructLayout.html#ae10c4483372a357a0d3411b3d64be10c">getElementOffset</a>(OpC->getZExtValue());
+<a name="l00204"></a>00204 
+<a name="l00205"></a>00205         <span class="keywordflow">if</span> (Size)
+<a name="l00206"></a>00206           Result = Builder->CreateAdd(Result, <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(IntPtrTy, Size),
+<a name="l00207"></a>00207                                       GEP-><a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>()+<span class="stringliteral">".offs"</span>);
+<a name="l00208"></a>00208         <span class="keywordflow">continue</span>;
+<a name="l00209"></a>00209       }
+<a name="l00210"></a>00210 
+<a name="l00211"></a>00211       <a class="code" href="classllvm_1_1Constant.html" title="LLVM Constant Representation.">Constant</a> *Scale = <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(IntPtrTy, Size);
+<a name="l00212"></a>00212       <a class="code" href="classllvm_1_1Constant.html" title="LLVM Constant Representation.">Constant</a> *OC = <a class="code" href="classllvm_1_1ConstantExpr.html#a81ad2fffd14e2df92cad4f631ae76480" title="Create a ZExt, Bitcast or Trunc for integer -> integer casts.">ConstantExpr::getIntegerCast</a>(OpC, IntPtrTy, <span class="keyword">true</span> <span class="comment">/*SExt*/</span>);
+<a name="l00213"></a>00213       Scale = <a class="code" href="classllvm_1_1ConstantExpr.html#aa3e1005525fe79e631f1fe5bd91fdf3c">ConstantExpr::getMul</a>(OC, Scale, isInBounds<span class="comment">/*NUW*/</span>);
+<a name="l00214"></a>00214       <span class="comment">// Emit an add instruction.</span>
+<a name="l00215"></a>00215       Result = Builder->CreateAdd(Result, Scale, GEP-><a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>()+<span class="stringliteral">".offs"</span>);
+<a name="l00216"></a>00216       <span class="keywordflow">continue</span>;
+<a name="l00217"></a>00217     }
+<a name="l00218"></a>00218     <span class="comment">// Convert to correct type.</span>
+<a name="l00219"></a>00219     <span class="keywordflow">if</span> (Op-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>() != IntPtrTy)
+<a name="l00220"></a>00220       Op = Builder->CreateIntCast(Op, IntPtrTy, <span class="keyword">true</span>, Op-><a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>()+<span class="stringliteral">".c"</span>);
+<a name="l00221"></a>00221     <span class="keywordflow">if</span> (Size != 1) {
+<a name="l00222"></a>00222       <span class="comment">// We'll let instcombine(mul) convert this to a shl if possible.</span>
+<a name="l00223"></a>00223       Op = Builder->CreateMul(Op, <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(IntPtrTy, Size),
+<a name="l00224"></a>00224                               GEP-><a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>()+<span class="stringliteral">".idx"</span>, isInBounds <span class="comment">/*NUW*/</span>);
+<a name="l00225"></a>00225     }
+<a name="l00226"></a>00226 
+<a name="l00227"></a>00227     <span class="comment">// Emit an add instruction.</span>
+<a name="l00228"></a>00228     Result = Builder->CreateAdd(Op, Result, GEP-><a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>()+<span class="stringliteral">".offs"</span>);
+<a name="l00229"></a>00229   }
+<a name="l00230"></a>00230   <span class="keywordflow">return</span> Result;
+<a name="l00231"></a>00231 }
+<a name="l00232"></a>00232 <span class="comment"></span>
+<a name="l00233"></a>00233 <span class="comment">///===---------------------------------------------------------------------===//</span>
+<a name="l00234"></a>00234 <span class="comment">///  Dbg Intrinsic utilities</span>
+<a name="l00235"></a>00235 <span class="comment">///</span>
+<a name="l00236"></a>00236 <span class="comment"></span><span class="comment"></span>
+<a name="l00237"></a>00237 <span class="comment">/// Inserts a llvm.dbg.value instrinsic before the stores to an alloca'd value</span>
+<a name="l00238"></a>00238 <span class="comment">/// that has an associated llvm.dbg.decl intrinsic.</span>
+<a name="l00239"></a>00239 <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#ab3d313ef442aae5b5bebf03c923506d0">ConvertDebugDeclareToDebugValue</a>(DbgDeclareInst *DDI,
+<a name="l00240"></a>00240                                      StoreInst *SI, DIBuilder &Builder);
+<a name="l00241"></a>00241 <span class="comment"></span>
+<a name="l00242"></a>00242 <span class="comment">/// Inserts a llvm.dbg.value instrinsic before the stores to an alloca'd value</span>
+<a name="l00243"></a>00243 <span class="comment">/// that has an associated llvm.dbg.decl intrinsic.</span>
+<a name="l00244"></a>00244 <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#ab3d313ef442aae5b5bebf03c923506d0">ConvertDebugDeclareToDebugValue</a>(DbgDeclareInst *DDI,
+<a name="l00245"></a>00245                                      LoadInst *<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>, DIBuilder &Builder);
+<a name="l00246"></a>00246 <span class="comment"></span>
+<a name="l00247"></a>00247 <span class="comment">/// LowerDbgDeclare - Lowers llvm.dbg.declare intrinsics into appropriate set</span>
+<a name="l00248"></a>00248 <span class="comment">/// of llvm.dbg.value intrinsics.</span>
+<a name="l00249"></a>00249 <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#a7994fd7ca0d8f8fcf2a9d18d151d0988">LowerDbgDeclare</a>(Function &<a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>);
+<a name="l00250"></a>00250 <span class="comment"></span>
+<a name="l00251"></a>00251 <span class="comment">/// FindAllocaDbgDeclare - Finds the llvm.dbg.declare intrinsic corresponding to</span>
+<a name="l00252"></a>00252 <span class="comment">/// an alloca, if any.</span>
+<a name="l00253"></a>00253 <span class="comment"></span>DbgDeclareInst *<a class="code" href="namespacellvm.html#aabf35a012f84ad0dab49cd5b7dec7965">FindAllocaDbgDeclare</a>(Value *V);
+<a name="l00254"></a>00254 
+<a name="l00255"></a>00255 } <span class="comment">// End llvm namespace</span>
+<a name="l00256"></a>00256 
+<a name="l00257"></a>00257 <span class="preprocessor">#endif</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:35:20 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/LocaleGeneric_8inc__dep__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LocaleGeneric_8inc__dep__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LocaleGeneric_8inc__dep__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LocaleGeneric_8inc__dep__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,3 @@
+<map id="G" name="G">
+<area shape="rect" href="$Locale_8cpp.html" title="Locale.cpp" alt="" coords="28,84,116,111"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/LocaleGeneric_8inc__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LocaleGeneric_8inc__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LocaleGeneric_8inc__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LocaleGeneric_8inc__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,2 @@
+<map id="G" name="G">
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/Locale_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/Locale_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/Locale_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/Locale_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,86 @@
+<!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: Locale.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="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">Locale.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="StringRef_8h_source.html">llvm/ADT/StringRef.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for Locale.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="Locale_8h__incl.png" border="0" usemap="#Locale_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="Locale_8h__dep__incl.png" border="0" usemap="#Locale_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="Locale_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 class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys_1_1locale.html">llvm::sys::locale</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">int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1sys_1_1locale.html#a5ae394643b3722606e9daf0ca8157f52">llvm::sys::locale::columnWidth</a> (StringRef s)</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_1_1locale.html#ad17f6a9a55a75115ee7099f6c615b336">llvm::sys::locale::isPrint</a> (int c)</td></tr>
+</table>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:31 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/LockFileManager_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LockFileManager_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LockFileManager_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LockFileManager_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,88 @@
+<!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: LockFileManager.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="#nested-classes">Classes</a> |
+<a href="#namespaces">Namespaces</a>  </div>
+  <div class="headertitle">
+<div class="title">LockFileManager.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="Optional_8h_source.html">llvm/ADT/Optional.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="StringRef_8h_source.html">llvm/ADT/StringRef.h</a>"</code><br/>
+<code>#include "<a class="el" href="system__error_8h_source.html">llvm/Support/system_error.h</a>"</code><br/>
+<code>#include <utility></code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for LockFileManager.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="LockFileManager_8h__incl.png" border="0" usemap="#LockFileManager_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="LockFileManager_8h__dep__incl.png" border="0" usemap="#LockFileManager_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="LockFileManager_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_1LockFileManager.html">llvm::LockFileManager</a></td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">Class that manages the creation of a lock file to aid implicit coordination between different processes.  <a href="classllvm_1_1LockFileManager.html#details">More...</a><br/></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:31 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/LockFileManager_8h__dep__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LockFileManager_8h__dep__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LockFileManager_8h__dep__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LockFileManager_8h__dep__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,3 @@
+<map id="G" name="G">
+<area shape="rect" href="$LockFileManager_8cpp.html" title="LockFileManager.cpp" alt="" coords="5,84,157,111"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/LoopExtractor_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LoopExtractor_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LoopExtractor_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LoopExtractor_8cpp__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,188 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="LoopExtractor.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="llvm/Transforms/IPO.h",height=0.2,width=0.4,color="black",URL="$Transforms_2IPO_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/Instructions.h",height=0.2,width=0.4,color="black",URL="$Instructions_8h.html"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="llvm/InstrTypes.h",height=0.2,width=0.4,color="red",URL="$InstrTypes_8h.html"];
+  Node5 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="llvm/DerivedTypes.h",height=0.2,width=0.4,color="red",URL="$DerivedTypes_8h.html"];
+  Node6 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="red",URL="$DataTypes_8h.html"];
+  Node6 -> 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"];
+  Node5 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="llvm/ADT/Twine.h",height=0.2,width=0.4,color="red",URL="$Twine_8h.html"];
+  Node9 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="llvm/Support/ErrorHandling.h",height=0.2,width=0.4,color="red",URL="$ErrorHandling_8h.html"];
+  Node10 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node9 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="llvm/Attributes.h",height=0.2,width=0.4,color="red",URL="$Attributes_8h.html"];
+  Node13 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="llvm/ADT/ArrayRef.h",height=0.2,width=0.4,color="black",URL="$ArrayRef_8h.html"];
+  Node14 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="red",URL="$SmallVector_8h.html"];
+  Node15 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="red",URL="$type__traits_8h.html"];
+  Node16 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node15 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node14 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="llvm/CallingConv.h",height=0.2,width=0.4,color="black",URL="$CallingConv_8h.html"];
+  Node4 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="llvm/Support/IntegersSubset.h",height=0.2,width=0.4,color="red",URL="$IntegersSubset_8h.html"];
+  Node20 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="llvm/Support/IntegersSubsetMapping.h",height=0.2,width=0.4,color="red",URL="$IntegersSubsetMapping_8h.html"];
+  Node21 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="llvm/Module.h",height=0.2,width=0.4,color="black",URL="$Module_8h.html"];
+  Node22 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="llvm/Function.h",height=0.2,width=0.4,color="red",URL="$Function_8h.html"];
+  Node23 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="llvm/GlobalVariable.h",height=0.2,width=0.4,color="red",URL="$GlobalVariable_8h.html"];
+  Node24 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/GlobalAlias.h",height=0.2,width=0.4,color="red",URL="$GlobalAlias_8h.html"];
+  Node25 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/Metadata.h",height=0.2,width=0.4,color="red",URL="$Metadata_8h.html"];
+  Node26 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/ADT/OwningPtr.h",height=0.2,width=0.4,color="red",URL="$OwningPtr_8h.html"];
+  Node27 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/Pass.h",height=0.2,width=0.4,color="black",URL="$Pass_8h.html"];
+  Node28 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/PassSupport.h",height=0.2,width=0.4,color="red",URL="$PassSupport_8h.html"];
+  Node29 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/PassAnalysisSupport.h",height=0.2,width=0.4,color="red",URL="$PassAnalysisSupport_8h.html"];
+  Node30 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/Analysis/Dominators.h",height=0.2,width=0.4,color="black",URL="$Dominators_8h.html"];
+  Node31 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/ADT/DenseMap.h",height=0.2,width=0.4,color="red",URL="$DenseMap_8h.html"];
+  Node32 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="climits",height=0.2,width=0.4,color="grey75"];
+  Node31 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/ADT/DepthFirstIterator.h",height=0.2,width=0.4,color="red",URL="$DepthFirstIterator_8h.html"];
+  Node34 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="llvm/ADT/GraphTraits.h",height=0.2,width=0.4,color="black",URL="$GraphTraits_8h.html"];
+  Node34 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="llvm/ADT/SmallPtrSet.h",height=0.2,width=0.4,color="red",URL="$SmallPtrSet_8h.html"];
+  Node36 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="set",height=0.2,width=0.4,color="grey75"];
+  Node34 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/Support/CFG.h",height=0.2,width=0.4,color="black",URL="$CFG_8h.html"];
+  Node38 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/Support/raw_ostream.h",height=0.2,width=0.4,color="red",URL="$raw__ostream_8h.html"];
+  Node39 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="llvm/Analysis/LoopPass.h",height=0.2,width=0.4,color="black",URL="$LoopPass_8h.html"];
+  Node40 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="llvm/Analysis/LoopInfo.h",height=0.2,width=0.4,color="red",URL="$LoopInfo_8h.html"];
+  Node41 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="llvm/PassManagers.h",height=0.2,width=0.4,color="red",URL="$PassManagers_8h.html"];
+  Node42 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="deque",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="llvm/Support/CommandLine.h",height=0.2,width=0.4,color="red",URL="$CommandLine_8h.html"];
+  Node44 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="cstdarg",height=0.2,width=0.4,color="grey75"];
+  Node44 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/Transforms/Scalar.h",height=0.2,width=0.4,color="black",URL="$Transforms_2Scalar_8h.html"];
+  Node1 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="llvm/Transforms/Utils/BasicBlockUtils.h",height=0.2,width=0.4,color="red",URL="$BasicBlockUtils_8h.html"];
+  Node47 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="llvm/Transforms/Utils/CodeExtractor.h",height=0.2,width=0.4,color="red",URL="$CodeExtractor_8h.html"];
+  Node48 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="llvm/ADT/Statistic.h",height=0.2,width=0.4,color="red",URL="$Statistic_8h.html"];
+  Node1 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="fstream",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/LoopExtractor_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LoopExtractor_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LoopExtractor_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LoopExtractor_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,360 @@
+<!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: LoopExtractor.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_a5a75fb0df8cea8d1a0a6c9d8a132571.html">IPO</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">LoopExtractor.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="LoopExtractor_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===- LoopExtractor.cpp - Extract each loop into a new function ----------===//</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">// A pass wrapper around the ExtractLoop() scalar transformation to extract each</span>
+<a name="l00011"></a>00011 <span class="comment">// top-level loop into its own new function. If the loop is the ONLY loop in a</span>
+<a name="l00012"></a>00012 <span class="comment">// given function, it is not touched. This is a pass most useful for debugging</span>
+<a name="l00013"></a>00013 <span class="comment">// via bugpoint.</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><a class="code" href="LoopExtractor_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">00017</a> <span class="preprocessor">#define DEBUG_TYPE "loop-extract"</span>
+<a name="l00018"></a>00018 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="Transforms_2IPO_8h.html">llvm/Transforms/IPO.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="Instructions_8h.html">llvm/Instructions.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="Module_8h.html">llvm/Module.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="Pass_8h.html">llvm/Pass.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="Dominators_8h.html">llvm/Analysis/Dominators.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="LoopPass_8h.html">llvm/Analysis/LoopPass.h</a>"</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="CommandLine_8h.html">llvm/Support/CommandLine.h</a>"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="Transforms_2Scalar_8h.html">llvm/Transforms/Scalar.h</a>"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="BasicBlockUtils_8h.html">llvm/Transforms/Utils/BasicBlockUtils.h</a>"</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="CodeExtractor_8h.html">llvm/Transforms/Utils/CodeExtractor.h</a>"</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="Statistic_8h.html">llvm/ADT/Statistic.h</a>"</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include <fstream></span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include <set></span>
+<a name="l00031"></a>00031 <span class="keyword">using namespace </span>llvm;
+<a name="l00032"></a>00032 
+<a name="l00033"></a>00033 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(NumExtracted, <span class="stringliteral">"Number of loops extracted"</span>);
+<a name="l00034"></a>00034 
+<a name="l00035"></a>00035 <span class="keyword">namespace </span>{
+<a name="l00036"></a>00036   <span class="keyword">struct </span>LoopExtractor : <span class="keyword">public</span> <a class="code" href="classllvm_1_1LoopPass.html">LoopPass</a> {
+<a name="l00037"></a>00037     <span class="keyword">static</span> <span class="keywordtype">char</span> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>; <span class="comment">// Pass identification, replacement for typeid</span>
+<a name="l00038"></a>00038     <span class="keywordtype">unsigned</span> NumLoops;
+<a name="l00039"></a>00039 
+<a name="l00040"></a>00040     <span class="keyword">explicit</span> LoopExtractor(<span class="keywordtype">unsigned</span> numLoops = ~0) 
+<a name="l00041"></a>00041       : <a class="code" href="classllvm_1_1LoopPass.html">LoopPass</a>(<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>), NumLoops(numLoops) {
+<a name="l00042"></a>00042         <a class="code" href="namespacellvm.html#ab03ad850aabb274f9cba09a2c6c05d67">initializeLoopExtractorPass</a>(*<a class="code" href="classllvm_1_1PassRegistry.html#a05a729900b76c89e808c6c3094921b2f">PassRegistry::getPassRegistry</a>());
+<a name="l00043"></a>00043       }
+<a name="l00044"></a>00044 
+<a name="l00045"></a>00045     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> runOnLoop(<a class="code" href="classllvm_1_1Loop.html">Loop</a> *L, <a class="code" href="classllvm_1_1LPPassManager.html">LPPassManager</a> &LPM);
+<a name="l00046"></a>00046 
+<a name="l00047"></a>00047     <span class="keyword">virtual</span> <span class="keywordtype">void</span> getAnalysisUsage(<a class="code" href="classllvm_1_1AnalysisUsage.html">AnalysisUsage</a> &AU)<span class="keyword"> const </span>{
+<a name="l00048"></a>00048       AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#a053677ebc731b47a534f841b11b5cf0c">addRequiredID</a>(<a class="code" href="namespacellvm.html#ac39b40d3d53e73764f8328bc22eea839">BreakCriticalEdgesID</a>);
+<a name="l00049"></a>00049       AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#a053677ebc731b47a534f841b11b5cf0c">addRequiredID</a>(<a class="code" href="namespacellvm.html#a472515fc67a5fb572afeb00aa2609cca">LoopSimplifyID</a>);
+<a name="l00050"></a>00050       AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#ae5c60fd282ee894c87ea02c3f0fcb6d0">addRequired</a><<a class="code" href="classllvm_1_1DominatorTree.html">DominatorTree</a>>();
+<a name="l00051"></a>00051     }
+<a name="l00052"></a>00052   };
+<a name="l00053"></a>00053 }
+<a name="l00054"></a>00054 
+<a name="l00055"></a>00055 <span class="keywordtype">char</span> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">LoopExtractor::ID</a> = 0;
+<a name="l00056"></a>00056 <a class="code" href="PassSupport_8h.html#aaa970fc931c1c63037a8182e028d04b1">INITIALIZE_PASS_BEGIN</a>(LoopExtractor, <span class="stringliteral">"loop-extract"</span>,
+<a name="l00057"></a>00057                       <span class="stringliteral">"Extract loops into new functions"</span>, <span class="keyword">false</span>, <span class="keyword">false</span>)
+<a name="l00058"></a>00058 <a class="code" href="PassSupport_8h.html#a14724f1ccf528e73bb29bc9230737967">INITIALIZE_PASS_DEPENDENCY</a>(BreakCriticalEdges)
+<a name="l00059"></a>00059 <a class="code" href="PassSupport_8h.html#a14724f1ccf528e73bb29bc9230737967">INITIALIZE_PASS_DEPENDENCY</a>(LoopSimplify)
+<a name="l00060"></a>00060 <a class="code" href="PassSupport_8h.html#a14724f1ccf528e73bb29bc9230737967">INITIALIZE_PASS_DEPENDENCY</a>(<a class="code" href="classllvm_1_1DominatorTree.html">DominatorTree</a>)
+<a name="l00061"></a><a class="code" href="LoopExtractor_8cpp.html#ac6229e61e0214888a5ad66ac60cb36ec">00061</a> <a class="code" href="PassSupport_8h.html#a74ce8276b89067e806f67c45a6d92575">INITIALIZE_PASS_END</a>(LoopExtractor, "loop-<a class="code" href="LoopExtractor_8cpp.html#a84dff14934298a71113ab11312c243f6">extract</a>",
+<a name="l00062"></a>00062                     "Extract <a class="code" href="MachineLoopInfo_8cpp.html#a59aa69fa39ee55438427bfc39852b9e6">loops</a> into new <a class="code" href="InlineAlways_8cpp.html#a2d8a8f47affac13913c407ee9714d994">functions</a>", <a class="code" href="AliasAnalysisEvaluator_8cpp.html#a3898a228575af19a9b2052f2b3677dce">false</a>, false)
+<a name="l00063"></a>00063 
+<a name="l00064"></a>00064 namespace {<span class="comment"></span>
+<a name="l00065"></a>00065 <span class="comment">  /// SingleLoopExtractor - For bugpoint.</span>
+<a name="l00066"></a><a class="code" href="structfalse_1_1SingleLoopExtractor.html">00066</a> <span class="comment"></span>  <span class="keyword">struct </span><a class="code" href="structfalse_1_1SingleLoopExtractor.html" title="SingleLoopExtractor - For bugpoint.">SingleLoopExtractor</a> : <span class="keyword">public</span> LoopExtractor {
+<a name="l00067"></a><a class="code" href="structfalse_1_1SingleLoopExtractor.html#a406a2f4f0b1368371ebb49fd575fc031">00067</a>     <span class="keyword">static</span> <span class="keywordtype">char</span> <a class="code" href="structfalse_1_1SingleLoopExtractor.html#a406a2f4f0b1368371ebb49fd575fc031">ID</a>; <span class="comment">// Pass identification, replacement for typeid</span>
+<a name="l00068"></a><a class="code" href="structfalse_1_1SingleLoopExtractor.html#a5680ae1a3654be3ef4626c16d3ff4d57">00068</a>     <a class="code" href="structfalse_1_1SingleLoopExtractor.html#a5680ae1a3654be3ef4626c16d3ff4d57">SingleLoopExtractor</a>() : LoopExtractor(1) {}
+<a name="l00069"></a>00069   };
+<a name="l00070"></a>00070 } <span class="comment">// End anonymous namespace</span>
+<a name="l00071"></a>00071 
+<a name="l00072"></a>00072 <span class="keywordtype">char</span> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">SingleLoopExtractor::ID</a> = 0;
+<a name="l00073"></a><a class="code" href="LoopExtractor_8cpp.html#a81f3020164e89fac7139946107edda10">00073</a> <a class="code" href="PassSupport_8h.html#af807c9595d50b45c0008924c4679c85c">INITIALIZE_PASS</a>(SingleLoopExtractor, <span class="stringliteral">"loop-extract-single"</span>,
+<a name="l00074"></a>00074                 <span class="stringliteral">"Extract at most one loop into a new function"</span>, <span class="keyword">false</span>, <span class="keyword">false</span>)
+<a name="l00075"></a>00075 
+<a name="l00076"></a>00076 <span class="comment">// createLoopExtractorPass - This pass extracts all natural loops from the</span>
+<a name="l00077"></a>00077 <span class="comment">// program into a function if it can.</span>
+<a name="l00078"></a>00078 <span class="comment">//</span>
+<a name="l00079"></a>00079 <a class="code" href="classllvm_1_1Pass.html">Pass</a> *llvm::<a class="code" href="namespacellvm.html#a45daa1faaa514ebb714262a6bd7f90da">createLoopExtractorPass</a>() { <span class="keywordflow">return</span> <span class="keyword">new</span> LoopExtractor(); }
+<a name="l00080"></a>00080 
+<a name="l00081"></a>00081 <span class="keywordtype">bool</span> LoopExtractor::runOnLoop(<a class="code" href="classllvm_1_1Loop.html">Loop</a> *L, <a class="code" href="classllvm_1_1LPPassManager.html">LPPassManager</a> &LPM) {
+<a name="l00082"></a>00082   <span class="comment">// Only visit top-level loops.</span>
+<a name="l00083"></a>00083   <span class="keywordflow">if</span> (L-><a class="code" href="classllvm_1_1LoopBase.html#a1431766de798501f107d9031821f311e">getParentLoop</a>())
+<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="comment">// If LoopSimplify form is not available, stay out of trouble.</span>
+<a name="l00087"></a>00087   <span class="keywordflow">if</span> (!L-><a class="code" href="classllvm_1_1Loop.html#a1d4445ebce66137e57fbaa967a19d7e9">isLoopSimplifyForm</a>())
+<a name="l00088"></a>00088     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00089"></a>00089 
+<a name="l00090"></a>00090   <a class="code" href="classllvm_1_1DominatorTree.html">DominatorTree</a> &DT = getAnalysis<DominatorTree>();
+<a name="l00091"></a>00091   <span class="keywordtype">bool</span> Changed = <span class="keyword">false</span>;
+<a name="l00092"></a>00092 
+<a name="l00093"></a>00093   <span class="comment">// If there is more than one top-level loop in this function, extract all of</span>
+<a name="l00094"></a>00094   <span class="comment">// the loops. Otherwise there is exactly one top-level loop; in this case if</span>
+<a name="l00095"></a>00095   <span class="comment">// this function is more than a minimal wrapper around the loop, extract</span>
+<a name="l00096"></a>00096   <span class="comment">// the loop.</span>
+<a name="l00097"></a>00097   <span class="keywordtype">bool</span> ShouldExtractLoop = <span class="keyword">false</span>;
+<a name="l00098"></a>00098 
+<a name="l00099"></a>00099   <span class="comment">// Extract the loop if the entry block doesn't branch to the loop header.</span>
+<a name="l00100"></a>00100   <a class="code" href="classllvm_1_1TerminatorInst.html">TerminatorInst</a> *EntryTI =
+<a name="l00101"></a>00101     L-><a class="code" href="classllvm_1_1LoopBase.html#ac4f141a355e5898255f2cbc57c5b54c3">getHeader</a>()-><a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>()-><a class="code" href="classllvm_1_1Function.html#a30f2c362631e3728d2f47a8203071ade">getEntryBlock</a>().<a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>();
+<a name="l00102"></a>00102   <span class="keywordflow">if</span> (!isa<BranchInst>(EntryTI) ||
+<a name="l00103"></a>00103       !cast<BranchInst>(EntryTI)->isUnconditional() ||
+<a name="l00104"></a>00104       EntryTI-><a class="code" href="classllvm_1_1TerminatorInst.html#a3aac3b6c36415a2b08f65ead9e3e51e7">getSuccessor</a>(0) != L-><a class="code" href="classllvm_1_1LoopBase.html#ac4f141a355e5898255f2cbc57c5b54c3">getHeader</a>()) {
+<a name="l00105"></a>00105     ShouldExtractLoop = <span class="keyword">true</span>;
+<a name="l00106"></a>00106   } <span class="keywordflow">else</span> {
+<a name="l00107"></a>00107     <span class="comment">// Check to see if any exits from the loop are more than just return</span>
+<a name="l00108"></a>00108     <span class="comment">// blocks.</span>
+<a name="l00109"></a>00109     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<BasicBlock*, 8></a> ExitBlocks;
+<a name="l00110"></a>00110     L-><a class="code" href="classllvm_1_1LoopBase.html#a420d7b5cd4eebceaf8bc16326e07af9c">getExitBlocks</a>(ExitBlocks);
+<a name="l00111"></a>00111     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = ExitBlocks.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>(); i != e; ++i)
+<a name="l00112"></a>00112       <span class="keywordflow">if</span> (!isa<ReturnInst>(ExitBlocks[i]->getTerminator())) {
+<a name="l00113"></a>00113         ShouldExtractLoop = <span class="keyword">true</span>;
+<a name="l00114"></a>00114         <span class="keywordflow">break</span>;
+<a name="l00115"></a>00115       }
+<a name="l00116"></a>00116   }
+<a name="l00117"></a>00117 
+<a name="l00118"></a>00118   <span class="keywordflow">if</span> (ShouldExtractLoop) {
+<a name="l00119"></a>00119     <span class="comment">// We must omit landing pads. Landing pads must accompany the invoke</span>
+<a name="l00120"></a>00120     <span class="comment">// instruction. But this would result in a loop in the extracted</span>
+<a name="l00121"></a>00121     <span class="comment">// function. An infinite cycle occurs when it tries to extract that loop as</span>
+<a name="l00122"></a>00122     <span class="comment">// well.</span>
+<a name="l00123"></a>00123     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<BasicBlock*, 8></a> ExitBlocks;
+<a name="l00124"></a>00124     L-><a class="code" href="classllvm_1_1LoopBase.html#a420d7b5cd4eebceaf8bc16326e07af9c">getExitBlocks</a>(ExitBlocks);
+<a name="l00125"></a>00125     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = ExitBlocks.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>(); i != e; ++i)
+<a name="l00126"></a>00126       <span class="keywordflow">if</span> (ExitBlocks[i]->isLandingPad()) {
+<a name="l00127"></a>00127         ShouldExtractLoop = <span class="keyword">false</span>;
+<a name="l00128"></a>00128         <span class="keywordflow">break</span>;
+<a name="l00129"></a>00129       }
+<a name="l00130"></a>00130   }
+<a name="l00131"></a>00131 
+<a name="l00132"></a>00132   <span class="keywordflow">if</span> (ShouldExtractLoop) {
+<a name="l00133"></a>00133     <span class="keywordflow">if</span> (NumLoops == 0) <span class="keywordflow">return</span> Changed;
+<a name="l00134"></a>00134     --NumLoops;
+<a name="l00135"></a>00135     <a class="code" href="classllvm_1_1CodeExtractor.html" title="Utility class for extracting code into a new function.">CodeExtractor</a> Extractor(DT, *L);
+<a name="l00136"></a>00136     <span class="keywordflow">if</span> (Extractor.extractCodeRegion() != 0) {
+<a name="l00137"></a>00137       Changed = <span class="keyword">true</span>;
+<a name="l00138"></a>00138       <span class="comment">// After extraction, the loop is replaced by a function call, so</span>
+<a name="l00139"></a>00139       <span class="comment">// we shouldn't try to run any more loop passes on it.</span>
+<a name="l00140"></a>00140       LPM.<a class="code" href="classllvm_1_1LPPassManager.html#a6eaffd08c6bba495330624a07b42a470" title="Delete loop from the loop queue and loop hierarchy (LoopInfo).">deleteLoopFromQueue</a>(L);
+<a name="l00141"></a>00141     }
+<a name="l00142"></a>00142     ++NumExtracted;
+<a name="l00143"></a>00143   }
+<a name="l00144"></a>00144 
+<a name="l00145"></a>00145   <span class="keywordflow">return</span> Changed;
+<a name="l00146"></a>00146 }
+<a name="l00147"></a>00147 
+<a name="l00148"></a>00148 <span class="comment">// createSingleLoopExtractorPass - This pass extracts one natural loop from the</span>
+<a name="l00149"></a>00149 <span class="comment">// program into a function if it can.  This is used by bugpoint.</span>
+<a name="l00150"></a>00150 <span class="comment">//</span>
+<a name="l00151"></a><a class="code" href="namespacellvm.html#a7e59712594721d4fcfea4ffe36e942d4">00151</a> <a class="code" href="classllvm_1_1Pass.html">Pass</a> *<a class="code" href="namespacellvm.html#a7e59712594721d4fcfea4ffe36e942d4">llvm::createSingleLoopExtractorPass</a>() {
+<a name="l00152"></a>00152   <span class="keywordflow">return</span> <span class="keyword">new</span> SingleLoopExtractor();
+<a name="l00153"></a>00153 }
+<a name="l00154"></a>00154 
+<a name="l00155"></a>00155 
+<a name="l00156"></a>00156 <span class="comment">// BlockFile - A file which contains a list of blocks that should not be</span>
+<a name="l00157"></a>00157 <span class="comment">// extracted.</span>
+<a name="l00158"></a>00158 <span class="keyword">static</span> <a class="code" href="classllvm_1_1cl_1_1opt.html">cl::opt<std::string></a>
+<a name="l00159"></a>00159 <a class="code" href="LoopExtractor_8cpp.html#a136ea1505de002690b51a05f7b0aef56">BlockFile</a>(<span class="stringliteral">"extract-blocks-file"</span>, <a class="code" href="structllvm_1_1cl_1_1value__desc.html">cl::value_desc</a>(<span class="stringliteral">"filename"</span>),
+<a name="l00160"></a>00160           <a class="code" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>(<span class="stringliteral">"A file containing list of basic blocks to not extract"</span>),
+<a name="l00161"></a>00161           <a class="code" href="namespacellvm_1_1cl.html#a68075925a54790e71ca790e1d4f21a40a263ac008d8d31f13ce460395fc4cf7e6">cl::Hidden</a>);
+<a name="l00162"></a>00162 
+<a name="l00163"></a>00163 <span class="keyword">namespace </span>{<span class="comment"></span>
+<a name="l00164"></a>00164 <span class="comment">  /// BlockExtractorPass - This pass is used by bugpoint to extract all blocks</span>
+<a name="l00165"></a>00165 <span class="comment">  /// from the module into their own functions except for those specified by the</span>
+<a name="l00166"></a>00166 <span class="comment">  /// BlocksToNotExtract list.</span>
+<a name="l00167"></a>00167 <span class="comment"></span>  <span class="keyword">class </span>BlockExtractorPass : <span class="keyword">public</span> <a class="code" href="classllvm_1_1ModulePass.html">ModulePass</a> {
+<a name="l00168"></a>00168     <span class="keywordtype">void</span> LoadFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *Filename);
+<a name="l00169"></a>00169     <span class="keywordtype">void</span> SplitLandingPadPreds(<a class="code" href="classllvm_1_1Function.html">Function</a> *<a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>);
+<a name="l00170"></a>00170 
+<a name="l00171"></a>00171     std::vector<BasicBlock*> BlocksToNotExtract;
+<a name="l00172"></a>00172     std::vector<std::pair<std::string, std::string> > BlocksToNotExtractByName;
+<a name="l00173"></a>00173   <span class="keyword">public</span>:
+<a name="l00174"></a>00174     <span class="keyword">static</span> <span class="keywordtype">char</span> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>; <span class="comment">// Pass identification, replacement for typeid</span>
+<a name="l00175"></a>00175     BlockExtractorPass() : <a class="code" href="classllvm_1_1ModulePass.html">ModulePass</a>(<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>) {
+<a name="l00176"></a>00176       <span class="keywordflow">if</span> (!<a class="code" href="LoopExtractor_8cpp.html#a136ea1505de002690b51a05f7b0aef56">BlockFile</a>.empty())
+<a name="l00177"></a>00177         LoadFile(<a class="code" href="LoopExtractor_8cpp.html#a136ea1505de002690b51a05f7b0aef56">BlockFile</a>.c_str());
+<a name="l00178"></a>00178     }
+<a name="l00179"></a>00179 
+<a name="l00180"></a>00180     <span class="keywordtype">bool</span> runOnModule(<a class="code" href="classllvm_1_1Module.html" title="The main container class for the LLVM Intermediate Representation.">Module</a> &M);
+<a name="l00181"></a>00181   };
+<a name="l00182"></a>00182 }
+<a name="l00183"></a>00183 
+<a name="l00184"></a>00184 <span class="keywordtype">char</span> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">BlockExtractorPass::ID</a> = 0;
+<a name="l00185"></a><a class="code" href="LoopExtractor_8cpp.html#afb827cda3b0c4050f3c4aa538a5c0a96">00185</a> <a class="code" href="PassSupport_8h.html#af807c9595d50b45c0008924c4679c85c">INITIALIZE_PASS</a>(BlockExtractorPass, <span class="stringliteral">"extract-blocks"</span>,
+<a name="l00186"></a>00186                 <span class="stringliteral">"Extract Basic Blocks From Module (for bugpoint use)"</span>,
+<a name="l00187"></a>00187                 <span class="keyword">false</span>, <span class="keyword">false</span>)
+<a name="l00188"></a>00188 
+<a name="l00189"></a>00189 <span class="comment">// createBlockExtractorPass - This pass extracts all blocks (except those</span>
+<a name="l00190"></a>00190 <span class="comment">// specified in the argument list) from the functions in the module.</span>
+<a name="l00191"></a>00191 <span class="comment">//</span>
+<a name="l00192"></a>00192 <a class="code" href="classllvm_1_1ModulePass.html">ModulePass</a> *llvm::<a class="code" href="namespacellvm.html#aa00a3be162786535754940bf0adfc647">createBlockExtractorPass</a>() {
+<a name="l00193"></a>00193   <span class="keywordflow">return</span> <span class="keyword">new</span> BlockExtractorPass();
+<a name="l00194"></a>00194 }
+<a name="l00195"></a>00195 
+<a name="l00196"></a>00196 <span class="keywordtype">void</span> BlockExtractorPass::LoadFile(<span class="keyword">const</span> <span class="keywordtype">char</span> *Filename) {
+<a name="l00197"></a>00197   <span class="comment">// Load the BlockFile...</span>
+<a name="l00198"></a>00198   std::ifstream <a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5a5fa7b4069ef3bd1ceb9f2caa315cf5ac">In</a>(Filename);
+<a name="l00199"></a>00199   <span class="keywordflow">if</span> (!<a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5a5fa7b4069ef3bd1ceb9f2caa315cf5ac">In</a>.good()) {
+<a name="l00200"></a>00200     <a class="code" href="namespacellvm.html#ab8e34eca3b0817ef7a127913fbf6d9e4">errs</a>() << <span class="stringliteral">"WARNING: BlockExtractor couldn't load file '"</span> << Filename
+<a name="l00201"></a>00201            << <span class="stringliteral">"'!\n"</span>;
+<a name="l00202"></a>00202     <span class="keywordflow">return</span>;
+<a name="l00203"></a>00203   }
+<a name="l00204"></a>00204   <span class="keywordflow">while</span> (<a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5a5fa7b4069ef3bd1ceb9f2caa315cf5ac">In</a>) {
+<a name="l00205"></a>00205     std::string FunctionName, BlockName;
+<a name="l00206"></a>00206     <a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5a5fa7b4069ef3bd1ceb9f2caa315cf5ac">In</a> >> FunctionName;
+<a name="l00207"></a>00207     <a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5a5fa7b4069ef3bd1ceb9f2caa315cf5ac">In</a> >> BlockName;
+<a name="l00208"></a>00208     <span class="keywordflow">if</span> (!BlockName.empty())
+<a name="l00209"></a>00209       BlocksToNotExtractByName.push_back(
+<a name="l00210"></a>00210           std::make_pair(FunctionName, BlockName));
+<a name="l00211"></a>00211   }
+<a name="l00212"></a>00212 }
+<a name="l00213"></a>00213 <span class="comment"></span>
+<a name="l00214"></a>00214 <span class="comment">/// SplitLandingPadPreds - The landing pad needs to be extracted with the invoke</span>
+<a name="l00215"></a>00215 <span class="comment">/// instruction. The critical edge breaker will refuse to break critical edges</span>
+<a name="l00216"></a>00216 <span class="comment">/// to a landing pad. So do them here. After this method runs, all landing pads</span>
+<a name="l00217"></a>00217 <span class="comment">/// should have only one predecessor.</span>
+<a name="l00218"></a>00218 <span class="comment"></span><span class="keywordtype">void</span> BlockExtractorPass::SplitLandingPadPreds(<a class="code" href="classllvm_1_1Function.html">Function</a> *<a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>) {
+<a name="l00219"></a>00219   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">Function::iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = F-><a class="code" href="classllvm_1_1Function.html#a88a5e60837674780a9d812d661897ac5">begin</a>(), E = F-><a class="code" href="classllvm_1_1Function.html#ae4ca2261b8b901e415fda7feac5051ea">end</a>(); <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> != E; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l00220"></a>00220     <a class="code" href="classllvm_1_1InvokeInst.html">InvokeInst</a> *II = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1InvokeInst.html">InvokeInst</a>>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>);
+<a name="l00221"></a>00221     <span class="keywordflow">if</span> (!II) <span class="keywordflow">continue</span>;
+<a name="l00222"></a>00222     <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *Parent = II-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>();
+<a name="l00223"></a>00223     <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *LPad = II-><a class="code" href="classllvm_1_1InvokeInst.html#a90beee7a8da6a92791f0c59ccf03a002">getUnwindDest</a>();
+<a name="l00224"></a>00224 
+<a name="l00225"></a>00225     <span class="comment">// Look through the landing pad's predecessors. If one of them ends in an</span>
+<a name="l00226"></a>00226     <span class="comment">// 'invoke', then we want to split the landing pad.</span>
+<a name="l00227"></a>00227     <span class="keywordtype">bool</span> <a class="code" href="SubtargetFeature_8cpp.html#aea2f934ca74dd1ab539c92107416777e">Split</a> = <span class="keyword">false</span>;
+<a name="l00228"></a>00228     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1PredIterator.html">pred_iterator</a>
+<a name="l00229"></a>00229            PI = <a class="code" href="namespacellvm.html#a7e108932dc3da5294aed99a353aac9c4">pred_begin</a>(LPad), PE = <a class="code" href="namespacellvm.html#a5eeaf08e96168c2cac8960f87f0ef360">pred_end</a>(LPad); PI != PE; ++PI) {
+<a name="l00230"></a>00230       <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *BB = *PI;
+<a name="l00231"></a>00231       <span class="keywordflow">if</span> (BB-><a class="code" href="classllvm_1_1BasicBlock.html#a3075a9eef753018bed561df31f38dc23">isLandingPad</a>() && BB != Parent &&
+<a name="l00232"></a>00232           isa<InvokeInst>(Parent-><a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>())) {
+<a name="l00233"></a>00233         Split = <span class="keyword">true</span>;
+<a name="l00234"></a>00234         <span class="keywordflow">break</span>;
+<a name="l00235"></a>00235       }
+<a name="l00236"></a>00236     }
+<a name="l00237"></a>00237 
+<a name="l00238"></a>00238     <span class="keywordflow">if</span> (!Split) <span class="keywordflow">continue</span>;
+<a name="l00239"></a>00239 
+<a name="l00240"></a>00240     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<BasicBlock*, 2></a> NewBBs;
+<a name="l00241"></a>00241     <a class="code" href="namespacellvm.html#a02c38c380d809959819ff729cc158cee">SplitLandingPadPredecessors</a>(LPad, Parent, <span class="stringliteral">".1"</span>, <span class="stringliteral">".2"</span>, 0, NewBBs);
+<a name="l00242"></a>00242   }
+<a name="l00243"></a>00243 }
+<a name="l00244"></a>00244 
+<a name="l00245"></a>00245 <span class="keywordtype">bool</span> BlockExtractorPass::runOnModule(<a class="code" href="classllvm_1_1Module.html" title="The main container class for the LLVM Intermediate Representation.">Module</a> &M) {
+<a name="l00246"></a>00246   std::set<BasicBlock*> TranslatedBlocksToNotExtract;
+<a name="l00247"></a>00247   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = BlocksToNotExtract.size(); i != e; ++i) {
+<a name="l00248"></a>00248     <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *BB = BlocksToNotExtract[i];
+<a name="l00249"></a>00249     <a class="code" href="classllvm_1_1Function.html">Function</a> *F = BB-><a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>();
+<a name="l00250"></a>00250 
+<a name="l00251"></a>00251     <span class="comment">// Map the corresponding function in this module.</span>
+<a name="l00252"></a>00252     <a class="code" href="classllvm_1_1Function.html">Function</a> *MF = M.<a class="code" href="classllvm_1_1Module.html#a3f156c68d0efa530f05698ca15d66593">getFunction</a>(F-><a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>());
+<a name="l00253"></a>00253     assert(MF-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>() == F-><a class="code" href="classllvm_1_1Function.html#adf66d58e85fb4e46e9c1ae55186a6930">getFunctionType</a>() && <span class="stringliteral">"Wrong function?"</span>);
+<a name="l00254"></a>00254 
+<a name="l00255"></a>00255     <span class="comment">// Figure out which index the basic block is in its function.</span>
+<a name="l00256"></a>00256     <a class="code" href="classllvm_1_1ilist__iterator.html">Function::iterator</a> BBI = MF-><a class="code" href="classllvm_1_1Function.html#a88a5e60837674780a9d812d661897ac5">begin</a>();
+<a name="l00257"></a>00257     <a class="code" href="namespacellvm_1_1object.html#a77d2b12be43df06e7e80ed8c70b82709">std::advance</a>(BBI, std::distance(F-><a class="code" href="classllvm_1_1Function.html#a88a5e60837674780a9d812d661897ac5">begin</a>(), <a class="code" href="classllvm_1_1Function.html#a6742ba0740034550bed98bc80596f7ad">Function::iterator</a>(BB)));
+<a name="l00258"></a>00258     TranslatedBlocksToNotExtract.insert(BBI);
+<a name="l00259"></a>00259   }
+<a name="l00260"></a>00260 
+<a name="l00261"></a>00261   <span class="keywordflow">while</span> (!BlocksToNotExtractByName.empty()) {
+<a name="l00262"></a>00262     <span class="comment">// There's no way to find BBs by name without looking at every BB inside</span>
+<a name="l00263"></a>00263     <span class="comment">// every Function. Fortunately, this is always empty except when used by</span>
+<a name="l00264"></a>00264     <span class="comment">// bugpoint in which case correctness is more important than performance.</span>
+<a name="l00265"></a>00265 
+<a name="l00266"></a>00266     std::string &<a class="code" href="CPPBackend_8cpp.html#a42ec43d2298561e7465455e9574a229d">FuncName</a>  = BlocksToNotExtractByName.back().first;
+<a name="l00267"></a>00267     std::string &BlockName = BlocksToNotExtractByName.back().second;
+<a name="l00268"></a>00268 
+<a name="l00269"></a>00269     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">Module::iterator</a> FI = M.<a class="code" href="classllvm_1_1Module.html#a279174d137c1ef32aa5b627f5e06620f">begin</a>(), FE = M.<a class="code" href="classllvm_1_1Module.html#aa608a2d900dd6c15c18f4236b6548496">end</a>(); FI != FE; ++FI) {
+<a name="l00270"></a>00270       <a class="code" href="classllvm_1_1Function.html">Function</a> &F = *FI;
+<a name="l00271"></a>00271       <span class="keywordflow">if</span> (F.<a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>() != <a class="code" href="CPPBackend_8cpp.html#a42ec43d2298561e7465455e9574a229d">FuncName</a>) <span class="keywordflow">continue</span>;
+<a name="l00272"></a>00272 
+<a name="l00273"></a>00273       <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">Function::iterator</a> BI = F.<a class="code" href="classllvm_1_1Function.html#a88a5e60837674780a9d812d661897ac5">begin</a>(), BE = F.<a class="code" href="classllvm_1_1Function.html#ae4ca2261b8b901e415fda7feac5051ea">end</a>(); BI != BE; ++BI) {
+<a name="l00274"></a>00274         <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> &BB = *BI;
+<a name="l00275"></a>00275         <span class="keywordflow">if</span> (BB.<a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>() != BlockName) <span class="keywordflow">continue</span>;
+<a name="l00276"></a>00276 
+<a name="l00277"></a>00277         TranslatedBlocksToNotExtract.insert(BI);
+<a name="l00278"></a>00278       }
+<a name="l00279"></a>00279     }
+<a name="l00280"></a>00280 
+<a name="l00281"></a>00281     BlocksToNotExtractByName.pop_back();
+<a name="l00282"></a>00282   }
+<a name="l00283"></a>00283 
+<a name="l00284"></a>00284   <span class="comment">// Now that we know which blocks to not extract, figure out which ones we WANT</span>
+<a name="l00285"></a>00285   <span class="comment">// to extract.</span>
+<a name="l00286"></a>00286   std::vector<BasicBlock*> BlocksToExtract;
+<a name="l00287"></a>00287   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">Module::iterator</a> F = M.<a class="code" href="classllvm_1_1Module.html#a279174d137c1ef32aa5b627f5e06620f">begin</a>(), E = M.<a class="code" href="classllvm_1_1Module.html#aa608a2d900dd6c15c18f4236b6548496">end</a>(); F != E; ++<a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>) {
+<a name="l00288"></a>00288     SplitLandingPadPreds(&*F);
+<a name="l00289"></a>00289     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">Function::iterator</a> BB = F-><a class="code" href="classllvm_1_1Function.html#a88a5e60837674780a9d812d661897ac5">begin</a>(), E = F-><a class="code" href="classllvm_1_1Function.html#ae4ca2261b8b901e415fda7feac5051ea">end</a>(); BB != E; ++BB)
+<a name="l00290"></a>00290       <span class="keywordflow">if</span> (!TranslatedBlocksToNotExtract.count(BB))
+<a name="l00291"></a>00291         BlocksToExtract.push_back(BB);
+<a name="l00292"></a>00292   }
+<a name="l00293"></a>00293 
+<a name="l00294"></a>00294   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = BlocksToExtract.size(); i != e; ++i) {
+<a name="l00295"></a>00295     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<BasicBlock*, 2></a> BlocksToExtractVec;
+<a name="l00296"></a>00296     BlocksToExtractVec.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(BlocksToExtract[i]);
+<a name="l00297"></a>00297     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classllvm_1_1InvokeInst.html">InvokeInst</a> *II =
+<a name="l00298"></a>00298         dyn_cast<InvokeInst>(BlocksToExtract[i]->getTerminator()))
+<a name="l00299"></a>00299       BlocksToExtractVec.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(II-><a class="code" href="classllvm_1_1InvokeInst.html#a90beee7a8da6a92791f0c59ccf03a002">getUnwindDest</a>());
+<a name="l00300"></a>00300     <a class="code" href="classllvm_1_1CodeExtractor.html" title="Utility class for extracting code into a new function.">CodeExtractor</a>(BlocksToExtractVec).<a class="code" href="classllvm_1_1CodeExtractor.html#a4ce3ed11610e55cc7acff1d3b9a9921c" title="Perform the extraction, returning the new function.">extractCodeRegion</a>();
+<a name="l00301"></a>00301   }
+<a name="l00302"></a>00302 
+<a name="l00303"></a>00303   <span class="keywordflow">return</span> !BlocksToExtract.<a class="code" href="classllvm_1_1Function.html#a6a782b47efe4d6ad9a7a36b6525d9203">empty</a>();
+<a name="l00304"></a>00304 }
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:35:21 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/LoopInfoImpl_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LoopInfoImpl_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LoopInfoImpl_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LoopInfoImpl_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,133 @@
+<!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: LoopInfoImpl.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_a884da034f1b4859d4f2a35ae0ac2045.html">Analysis</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">LoopInfoImpl.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="LoopInfo_8h_source.html">llvm/Analysis/LoopInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="PostOrderIterator_8h_source.html">llvm/ADT/PostOrderIterator.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for LoopInfoImpl.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="LoopInfoImpl_8h__incl.png" border="0" usemap="#LoopInfoImpl_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="LoopInfoImpl_8h__dep__incl.png" border="0" usemap="#LoopInfoImpl_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="LoopInfoImpl_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="memTemplParams" colspan="2">template<class BlockT , class LoopT > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a7f9d937f58c5dd0b788e5a801d45e402">llvm::discoverAndMapSubloop</a> (LoopT *L, ArrayRef< BlockT * > Backedges, LoopInfoBase< BlockT, LoopT > *<a class="el" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>, DominatorTreeBase< BlockT > &DomTree)</td></tr>
+</table>
+<hr/><h2>Variable Documentation</h2>
+<a class="anchor" id="af53470571089093fd615a0453305add6"></a><!-- doxytag: member="LoopInfoImpl.h::DFSStack" ref="af53470571089093fd615a0453305add6" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">std::vector<std::pair<BlockT*, SuccIterTy> > <a class="el" href="LoopInfoImpl_8h.html#af53470571089093fd615a0453305add6">DFSStack</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="LoopInfoImpl_8h_source.html#l00432">432</a> of file <a class="el" href="LoopInfoImpl_8h_source.html">LoopInfoImpl.h</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab7b7f3fe4279386eae18cf924053d077"></a><!-- doxytag: member="LoopInfoImpl.h::LI" ref="ab7b7f3fe4279386eae18cf924053d077" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">LoopInfoBase<BlockT, LoopT>* <a class="el" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="LoopInfoImpl_8h_source.html#l00430">430</a> of file <a class="el" href="LoopInfoImpl_8h_source.html">LoopInfoImpl.h</a>.</p>
+
+<p>Referenced by <a class="el" href="AliasSetTracker_8cpp_source.html#l00352">llvm::AliasSetTracker::add()</a>, <a class="el" href="SCCP_8cpp_source.html#l01667">AddressIsTaken()</a>, <a class="el" href="RegisterPressure_8cpp_source.html#l00502">llvm::RegPressureTracker::advance()</a>, <a class="el" href="GlobalOpt_8cpp_source.html#l01306">AllGlobalLoadUsesSimpleEnoughForHeapSRA()</a>, <a class="el" href="GlobalOpt_8cpp_source.html#l00856">AllUsesOfLoadedValueWillTrapIfNull()</a>, <a class="el" href="MBlazeFrameLowering_8cpp_source.html#l00085">analyzeFrameIndexes()</a>, <a class="el" href="GlobalOpt_8cpp_source.html#l00196">AnalyzeGlobal()</a>, <a class="el" href="RegisterPressure_8cpp_source.html#l00756">llvm::RegPressureTracker::bumpDownwardPressure()</a>, <a class="el" href="GlobalOpt_8cpp_source.html#l00475">CleanupConstantGlobalUsers()</a>, <a class="el" href="ConstantFolding_8cpp_source.html#l00798">llvm::ConstantFoldInstruction()</a>, <a class="el" href="Local_8cpp_s
 ource.html#l00867">llvm::ConvertDebugDeclareToDebugValue()</a>, <a class="el" href="IRBuilder_8h_source.html#l00823">llvm::IRBuilder< true, TargetFolder >::CreateAlignedLoad()</a>, <a class="el" href="LiveRangeEdit_8cpp_source.html#l00034">llvm::LiveRangeEdit::createFrom()</a>, <a class="el" href="DependenceAnalysis_8cpp_source.html#l03201">llvm::DependenceAnalysis::depends()</a>, <a class="el" href="LiveInterval_8cpp_source.html#l00833">llvm::ConnectedVNInfoEqClasses::Distribute()</a>, <a class="el" href="GCOV_8cpp_source.html#l00196">llvm::GCOVBlock::dump()</a>, <a class="el" href="StringMatcher_8cpp_source.html#l00124">llvm::StringMatcher::Emit()</a>, <a class="el" href="PPCISelLowering_8cpp_source.html#l05786">llvm::PPCTargetLowering::EmitInstrWithCustomInserter()</a>, <a class="el" href="PPCISelLowering_8cpp_source.html#l05655">llvm::PPCTargetLowering::EmitPartwordAtomicBinary()</a>, <a class="el" href="AddrModeMatcher_8cpp_source.html#l00407">FindAllMemoryUses()<
 /a>, <a class="el" href="Loads_8cpp_source.html#l00168">llvm::FindAvailableLoadedValue()</a>, <a class="el" href="MachineLoopInfo_8h_source.html#l00086">llvm::MachineLoopInfo::getBase()</a>, <a class="el" href="LoopInfo_8h_source.html#l00561">llvm::LoopInfo::getBase()</a>, <a class="el" href="GlobalOpt_8cpp_source.html#l01355">GetHeapSROAValue()</a>, <a class="el" href="LiveIntervalAnalysis_8h_source.html#l00106">llvm::LiveIntervals::getInterval()</a>, <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html#l00119">GetLocation()</a>, <a class="el" href="MemoryDependenceAnalysis_8cpp_source.html#l00350">llvm::MemoryDependenceAnalysis::getPointerDependencyFrom()</a>, <a class="el" href="DependenceAnalysis_8cpp_source.html#l00655">getPointerOperand()</a>, <a class="el" href="LiveIntervalAnalysis_8h_source.html#l00334">llvm::LiveIntervals::getRegUnit()</a>, <a class="el" href="DependenceAnalysis_8cpp_source.html#l03606">llvm::DependenceAnalysis::getSplitIteration()</a>, <a
  class="el" href="Record_8cpp_source.html#l01789">llvm::Record::getValueAsListInit()</a>, <a class="el" href="PromoteMemoryToRegister_8cpp_source.html#l00082">llvm::isAllocaPromotable()</a>, <a class="el" href="ThreadSanitizer_8cpp_source.html#l00283">isAtomic()</a>, <a class="el" href="Instruction_8cpp_source.html#l00181">llvm::Instruction::isIdenticalToWhenDefined()</a>, <a class="el" href="IVUsers_8cpp_source.html#l00049">isInteresting()</a>, <a class="el" href="AddressSanitizer_8cpp_source.html#l00307">isInterestingMemoryAccess()</a>, <a class="el" href="DependenceAnalysis_8cpp_source.html#l00645">isLoadOrStore()</a>, <a class="el" href="ObjCARC_8cpp_source.html#l00517">IsObjCIdentifiedObject()</a>, <a class="el" href="InstCombineLoadStoreAlloca_8cpp_source.html#l00047">isOnlyCopiedFromConstantGlobal()</a>, <a class="el" href="ObjCARC_8cpp_source.html#l01882">IsPotentialUse()</a>, <a class="el" href="ScalarReplAggregates_8cpp_source.html#l01175">isSafePHIToSpeculate()</a
 >, <a class="el" href="ScalarReplAggregates_8cpp_source.html#l01137">isSafeSelectToSpeculate()</a>, <a class="el" href="Loads_8cpp_source.html#l00087">llvm::isSafeToLoadUnconditionally()</a>, <a class="el" href="ValueTracking_8cpp_source.html#l01853">llvm::isSafeToSpeculativelyExecute()</a>, <a class="el" href="Instruction_8cpp_source.html#l00243">llvm::Instruction::isSameOperationAs()</a>, <a class="el" href="Core_8cpp_source.html#l02118">LLVMGetVolatile()</a>, <a class="el" href="Core_8cpp_source.html#l02125">LLVMSetVolatile()</a>, <a class="el" href="SSAUpdater_8cpp_source.html#l00363">llvm::LoadAndStorePromoter::LoadAndStorePromoter()</a>, <a class="el" href="Local_8cpp_source.html#l00889">llvm::LowerDbgDeclare()</a>, <a class="el" href="BasicBlockUtils_8cpp_source.html#l00115">llvm::MergeBlockIntoPredecessor()</a>, <a class="el" href="GlobalOpt_8cpp_source.html#l00943">OptimizeAwayTrappingUsesOfLoads()</a>, <a class="el" href="GlobalOpt_8cpp_source.html#l00876">Optimize
 AwayTrappingUsesOfValue()</a>, <a class="el" href="GlobalOpt_8cpp_source.html#l01027">OptimizeGlobalAddressOfMalloc()</a>, <a class="el" href="SimplifyCFG_8cpp_source.html#l03866">passingValueIsAlwaysUndefined()</a>, <a class="el" href="GlobalOpt_8cpp_source.html#l01479">PerformHeapAllocSRoA()</a>, <a class="el" href="LiveIntervalAnalysis_8cpp_source.html#l00134">llvm::LiveIntervals::print()</a>, <a class="el" href="RegisterPressure_8cpp_source.html#l00420">llvm::RegPressureTracker::recede()</a>, <a class="el" href="AliasSetTracker_8cpp_source.html#l00469">llvm::AliasSetTracker::remove()</a>, <a class="el" href="Record_8cpp_source.html#l01289">llvm::VarInit::resolveListElementReference()</a>, <a class="el" href="Record_8cpp_source.html#l01463">llvm::FieldInit::resolveListElementReference()</a>, <a class="el" href="DependenceAnalysis_8cpp_source.html#l00126">llvm::DependenceAnalysis::runOnFunction()</a>, <a class="el" href="SelectionDAGISel_8cpp_source.html#l00336">llvm::Sele
 ctionDAGISel::runOnMachineFunction()</a>, <a class="el" href="MachineLoopInfo_8cpp_source.html#l00037">llvm::MachineLoopInfo::runOnMachineFunction()</a>, <a class="el" href="LiveVariables_8cpp_source.html#l00501">llvm::LiveVariables::runOnMachineFunction()</a>, <a class="el" href="InstructionSimplify_8cpp_source.html#l01636">SimplifyICmpInst()</a>, <a class="el" href="SimplifyIndVar_8cpp_source.html#l00373">llvm::simplifyUsersOfIV()</a>, <a class="el" href="InstCombineSelect_8cpp_source.html#l00289">SimplifyWithOpReplaced()</a>, <a class="el" href="BasicBlockUtils_8cpp_source.html#l00287">llvm::SplitBlock()</a>, <a class="el" href="BreakCriticalEdges_8cpp_source.html#l00174">llvm::SplitCriticalEdge()</a>, <a class="el" href="ScalarReplAggregates_8cpp_source.html#l01239">tryToMakeAllocaBePromotable()</a>, <a class="el" href="GlobalOpt_8cpp_source.html#l01804">TryToShrinkGlobalToBoolean()</a>, <a class="el" href="BasicBlockUtils_8cpp_source.html#l00319">UpdateAnalysisInformati
 on()</a>, <a class="el" href="InstCombineCompares_8cpp_source.html#l01020">llvm::InstCombiner::visitICmpInstWithInstAndIntCst()</a>, <a class="el" href="InstructionCombining_8cpp_source.html#l01763">llvm::InstCombiner::visitLandingPadInst()</a>, <a class="el" href="InstCombineLoadStoreAlloca_8cpp_source.html#l00355">llvm::InstCombiner::visitLoadInst()</a>, and <a class="el" href="InstCombineLoadStoreAlloca_8cpp_source.html#l00580">llvm::InstCombiner::visitStoreInst()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad7ab107a3378a69a26933a52012cedaf"></a><!-- doxytag: member="LoopInfoImpl.h::VisitedBlocks" ref="ad7ab107a3378a69a26933a52012cedaf" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">DenseSet<const BlockT *> <a class="el" href="LoopInfoImpl_8h.html#ad7ab107a3378a69a26933a52012cedaf">VisitedBlocks</a></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="LoopInfoImpl_8h_source.html#l00431">431</a> of file <a class="el" href="LoopInfoImpl_8h_source.html">LoopInfoImpl.h</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:31 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/LoopInfo_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LoopInfo_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LoopInfo_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LoopInfo_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,115 @@
+<!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: LoopInfo.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_59dd179f705c75b7b821c61754f4942c.html">Analysis</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#var-members">Variables</a>  </div>
+  <div class="headertitle">
+<div class="title">LoopInfo.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="LoopInfo_8h_source.html">llvm/Analysis/LoopInfo.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="Instructions_8h_source.html">llvm/Instructions.h</a>"</code><br/>
+<code>#include "<a class="el" href="Dominators_8h_source.html">llvm/Analysis/Dominators.h</a>"</code><br/>
+<code>#include "<a class="el" href="LoopInfoImpl_8h_source.html">llvm/Analysis/LoopInfoImpl.h</a>"</code><br/>
+<code>#include "<a class="el" href="LoopIterator_8h_source.html">llvm/Analysis/LoopIterator.h</a>"</code><br/>
+<code>#include "<a class="el" href="ValueTracking_8h_source.html">llvm/Analysis/ValueTracking.h</a>"</code><br/>
+<code>#include "<a class="el" href="Writer_8h_source.html">llvm/Assembly/Writer.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="CommandLine_8h_source.html">llvm/Support/CommandLine.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="DepthFirstIterator_8h_source.html">llvm/ADT/DepthFirstIterator.h</a>"</code><br/>
+<code>#include "<a class="el" href="SmallPtrSet_8h_source.html">llvm/ADT/SmallPtrSet.h</a>"</code><br/>
+<code>#include <algorithm></code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for LoopInfo.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="LoopInfo_8cpp__incl.png" border="0" usemap="#LoopInfo_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="LoopInfo_8cpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr><td colspan="2"><h2><a name="var-members"></a>
+Variables</h2></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="LoopInfo_8cpp.html#a1ff80086e715097195d6be22643f75c4">VerifyLoopInfo</a> = <a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1cl_1_1opt.html">cl::opt</a>< <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a>, <a class="el" href="LoopSimplify_8cpp.html#a13f020c6a40eb04f1b4f9ddfbb004ce0">true</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="LoopInfo_8cpp.html#ab42c29f5e9985182169624cb3122aafe">VerifyLoopInfoX</a> ("verify-loop-<a class="el" href="LazyValueInfo_8cpp.html#ad7f64bcc544dcefb2e068282af1c549d">info</a>", cl::location(<a class="el" href="LoopInfo_8cpp.html#a1ff80086e715097195d6be22643f75c4">VerifyLoopInfo</a>), <a class="el" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>("Verify loop <a class="el" href="LazyValueInfo_8cpp.html#ad7f64bcc544dcefb2e068282af1c549d">info</a> (time consuming)"))</td></tr>
+</table>
+<hr/><h2>Variable Documentation</h2>
+<a class="anchor" id="a1ff80086e715097195d6be22643f75c4"></a><!-- doxytag: member="LoopInfo.cpp::VerifyLoopInfo" ref="a1ff80086e715097195d6be22643f75c4" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> <a class="el" href="LoopInfo_8cpp.html#a1ff80086e715097195d6be22643f75c4">VerifyLoopInfo</a> = <a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="LoopInfo_8cpp_source.html#l00041">41</a> of file <a class="el" href="LoopInfo_8cpp_source.html">LoopInfo.cpp</a>.</p>
+
+<p>Referenced by <a class="el" href="LoopInfo_8cpp_source.html#l00582">llvm::LoopInfo::verifyAnalysis()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab42c29f5e9985182169624cb3122aafe"></a><!-- doxytag: member="LoopInfo.cpp::VerifyLoopInfoX" ref="ab42c29f5e9985182169624cb3122aafe" args="("verify-loop-info", cl::location(VerifyLoopInfo), cl::desc("Verify loop info (time consuming)"))" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classllvm_1_1cl_1_1opt.html">cl::opt</a><<a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a>,<a class="el" href="LoopSimplify_8cpp.html#a13f020c6a40eb04f1b4f9ddfbb004ce0">true</a>> <a class="el" href="LoopInfo_8cpp.html#ab42c29f5e9985182169624cb3122aafe">VerifyLoopInfoX</a>("verify-loop-<a class="el" href="LazyValueInfo_8cpp.html#ad7f64bcc544dcefb2e068282af1c549d">info</a>", cl::location(<a class="el" href="LoopInfo_8cpp.html#a1ff80086e715097195d6be22643f75c4">VerifyLoopInfo</a>), <a class="el" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>("Verify loop <a class="el" href="LazyValueInfo_8cpp.html#ad7f64bcc544dcefb2e068282af1c549d">info</a> (time consuming)"))<code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:31 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/LoopInfo_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LoopInfo_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LoopInfo_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LoopInfo_8cpp__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,191 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="LoopInfo.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="llvm/Analysis/LoopInfo.h",height=0.2,width=0.4,color="black",URL="$LoopInfo_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/Pass.h",height=0.2,width=0.4,color="red",URL="$Pass_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node2 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="llvm/ADT/DenseMap.h",height=0.2,width=0.4,color="red",URL="$DenseMap_8h.html"];
+  Node5 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="llvm/Support/PointerLikeTypeTraits.h",height=0.2,width=0.4,color="black",URL="$PointerLikeTypeTraits_8h.html"];
+  Node6 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="red",URL="$DataTypes_8h.html"];
+  Node5 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="red",URL="$type__traits_8h.html"];
+  Node8 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="utility",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node5 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="climits",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="llvm/ADT/DenseSet.h",height=0.2,width=0.4,color="black",URL="$DenseSet_8h.html"];
+  Node14 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="llvm/ADT/DepthFirstIterator.h",height=0.2,width=0.4,color="black",URL="$DepthFirstIterator_8h.html"];
+  Node15 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="llvm/ADT/GraphTraits.h",height=0.2,width=0.4,color="black",URL="$GraphTraits_8h.html"];
+  Node15 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="llvm/ADT/SmallPtrSet.h",height=0.2,width=0.4,color="red",URL="$SmallPtrSet_8h.html"];
+  Node17 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="llvm/ADT/PointerIntPair.h",height=0.2,width=0.4,color="black",URL="$PointerIntPair_8h.html"];
+  Node18 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="set",height=0.2,width=0.4,color="grey75"];
+  Node15 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="red",URL="$SmallVector_8h.html"];
+  Node21 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="llvm/ADT/STLExtras.h",height=0.2,width=0.4,color="red",URL="$STLExtras_8h.html"];
+  Node22 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="llvm/Analysis/Dominators.h",height=0.2,width=0.4,color="black",URL="$Dominators_8h.html"];
+  Node23 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="llvm/Function.h",height=0.2,width=0.4,color="red",URL="$Function_8h.html"];
+  Node24 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/CallingConv.h",height=0.2,width=0.4,color="black",URL="$CallingConv_8h.html"];
+  Node24 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/Attributes.h",height=0.2,width=0.4,color="red",URL="$Attributes_8h.html"];
+  Node26 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/ADT/ArrayRef.h",height=0.2,width=0.4,color="black",URL="$ArrayRef_8h.html"];
+  Node27 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/Support/CFG.h",height=0.2,width=0.4,color="black",URL="$CFG_8h.html"];
+  Node28 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/InstrTypes.h",height=0.2,width=0.4,color="red",URL="$InstrTypes_8h.html"];
+  Node29 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/OperandTraits.h",height=0.2,width=0.4,color="red",URL="$OperandTraits_8h.html"];
+  Node29 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/DerivedTypes.h",height=0.2,width=0.4,color="red",URL="$DerivedTypes_8h.html"];
+  Node31 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/ADT/Twine.h",height=0.2,width=0.4,color="red",URL="$Twine_8h.html"];
+  Node32 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/Support/ErrorHandling.h",height=0.2,width=0.4,color="red",URL="$ErrorHandling_8h.html"];
+  Node33 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/Support/raw_ostream.h",height=0.2,width=0.4,color="red",URL="$raw__ostream_8h.html"];
+  Node34 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="map",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="llvm/Constants.h",height=0.2,width=0.4,color="black",URL="$Constants_8h.html"];
+  Node36 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/Constant.h",height=0.2,width=0.4,color="red",URL="$Constant_8h.html"];
+  Node36 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/ADT/APInt.h",height=0.2,width=0.4,color="red",URL="$APInt_8h.html"];
+  Node38 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/ADT/APFloat.h",height=0.2,width=0.4,color="black",URL="$APFloat_8h.html"];
+  Node39 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="llvm/Instructions.h",height=0.2,width=0.4,color="black",URL="$Instructions_8h.html"];
+  Node40 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="llvm/Support/IntegersSubset.h",height=0.2,width=0.4,color="red",URL="$IntegersSubset_8h.html"];
+  Node41 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="llvm/Support/IntegersSubsetMapping.h",height=0.2,width=0.4,color="red",URL="$IntegersSubsetMapping_8h.html"];
+  Node42 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="llvm/Analysis/LoopInfoImpl.h",height=0.2,width=0.4,color="black",URL="$LoopInfoImpl_8h.html"];
+  Node43 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="llvm/ADT/PostOrderIterator.h",height=0.2,width=0.4,color="black",URL="$PostOrderIterator_8h.html"];
+  Node44 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/Analysis/LoopIterator.h",height=0.2,width=0.4,color="black",URL="$LoopIterator_8h.html"];
+  Node45 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/Analysis/ValueTracking.h",height=0.2,width=0.4,color="black",URL="$ValueTracking_8h.html"];
+  Node46 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="llvm/Assembly/Writer.h",height=0.2,width=0.4,color="black",URL="$Writer_8h.html"];
+  Node1 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="llvm/Support/CommandLine.h",height=0.2,width=0.4,color="black",URL="$CommandLine_8h.html"];
+  Node48 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="cstdarg",height=0.2,width=0.4,color="grey75"];
+  Node48 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="llvm/Support/Debug.h",height=0.2,width=0.4,color="black",URL="$Debug_8h.html"];
+  Node1 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/LoopInfo_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LoopInfo_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LoopInfo_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LoopInfo_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,106 @@
+<!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: LoopInfo.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_a884da034f1b4859d4f2a35ae0ac2045.html">Analysis</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">LoopInfo.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="Pass_8h_source.html">llvm/Pass.h</a>"</code><br/>
+<code>#include "<a class="el" href="DenseMap_8h_source.html">llvm/ADT/DenseMap.h</a>"</code><br/>
+<code>#include "<a class="el" href="DenseSet_8h_source.html">llvm/ADT/DenseSet.h</a>"</code><br/>
+<code>#include "<a class="el" href="DepthFirstIterator_8h_source.html">llvm/ADT/DepthFirstIterator.h</a>"</code><br/>
+<code>#include "<a class="el" href="GraphTraits_8h_source.html">llvm/ADT/GraphTraits.h</a>"</code><br/>
+<code>#include "<a class="el" href="SmallVector_8h_source.html">llvm/ADT/SmallVector.h</a>"</code><br/>
+<code>#include "<a class="el" href="STLExtras_8h_source.html">llvm/ADT/STLExtras.h</a>"</code><br/>
+<code>#include "<a class="el" href="Dominators_8h_source.html">llvm/Analysis/Dominators.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="raw__ostream_8h_source.html">llvm/Support/raw_ostream.h</a>"</code><br/>
+<code>#include <algorithm></code><br/>
+<code>#include <map></code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for LoopInfo.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="LoopInfo_8h__incl.png" border="0" usemap="#LoopInfo_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="LoopInfo_8h__dep__incl.png" border="0" usemap="#LoopInfo_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="LoopInfo_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_1LoopBase.html">llvm::LoopBase< BlockT, LoopT ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1Loop.html">llvm::Loop</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1LoopInfoBase.html">llvm::LoopInfoBase< BlockT, LoopT ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1LoopInfo.html">llvm::LoopInfo</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structllvm_1_1GraphTraits_3_01const_01Loop_01_5_01_4.html">llvm::GraphTraits< const Loop * ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structllvm_1_1GraphTraits_3_01Loop_01_5_01_4.html">llvm::GraphTraits< Loop * ></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="memTemplParams" colspan="2">template<typename T > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a16de6ac478d8738ea0e98ca136049e4a">llvm::RemoveFromVector</a> (std::vector< T * > &V, T *N)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<class BlockT , class LoopT > </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">raw_ostream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacellvm.html#a53de7c9afe89c60529a5c45ca25d11fb">llvm::operator<<</a> (raw_ostream &OS, const LoopBase< BlockT, LoopT > &Loop)</td></tr>
+</table>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:31 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/LoopInfo_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LoopInfo_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LoopInfo_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LoopInfo_8h__dep__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,119 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="LoopInfo.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="LoopPass.h",height=0.2,width=0.4,color="black",URL="$LoopPass_8h.html"];
+  Node2 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="IVUsers.h",height=0.2,width=0.4,color="black",URL="$IVUsers_8h.html"];
+  Node3 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="IVUsers.cpp",height=0.2,width=0.4,color="black",URL="$IVUsers_8cpp.html"];
+  Node3 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="LoopStrengthReduce.cpp",height=0.2,width=0.4,color="black",URL="$LoopStrengthReduce_8cpp.html"];
+  Node3 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="SimplifyIndVar.cpp",height=0.2,width=0.4,color="black",URL="$SimplifyIndVar_8cpp.html"];
+  Node2 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="LoopPass.cpp",height=0.2,width=0.4,color="black",URL="$LoopPass_8cpp.html"];
+  Node2 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="LoopExtractor.cpp",height=0.2,width=0.4,color="black",URL="$LoopExtractor_8cpp.html"];
+  Node2 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="IndVarSimplify.cpp",height=0.2,width=0.4,color="black",URL="$IndVarSimplify_8cpp.html"];
+  Node2 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="LICM.cpp",height=0.2,width=0.4,color="black",URL="$LICM_8cpp.html"];
+  Node2 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="LoopDeletion.cpp",height=0.2,width=0.4,color="black",URL="$LoopDeletion_8cpp.html"];
+  Node2 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="LoopIdiomRecognize.cpp",height=0.2,width=0.4,color="black",URL="$LoopIdiomRecognize_8cpp.html"];
+  Node2 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="LoopInstSimplify.cpp",height=0.2,width=0.4,color="black",URL="$LoopInstSimplify_8cpp.html"];
+  Node2 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="LoopRotation.cpp",height=0.2,width=0.4,color="black",URL="$LoopRotation_8cpp.html"];
+  Node2 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="LoopUnrollPass.cpp",height=0.2,width=0.4,color="black",URL="$LoopUnrollPass_8cpp.html"];
+  Node2 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="LoopUnswitch.cpp",height=0.2,width=0.4,color="black",URL="$LoopUnswitch_8cpp.html"];
+  Node2 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="LCSSA.cpp",height=0.2,width=0.4,color="black",URL="$LCSSA_8cpp.html"];
+  Node2 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="LoopSimplify.cpp",height=0.2,width=0.4,color="black",URL="$LoopSimplify_8cpp.html"];
+  Node2 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="LoopUnroll.cpp",height=0.2,width=0.4,color="black",URL="$LoopUnroll_8cpp.html"];
+  Node2 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="LoopUnrollRuntime.cpp",height=0.2,width=0.4,color="black",URL="$LoopUnrollRuntime_8cpp.html"];
+  Node2 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="LoopVectorize.cpp",height=0.2,width=0.4,color="black",URL="$LoopVectorize_8cpp.html"];
+  Node1 -> Node22 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="LoopInfoImpl.h",height=0.2,width=0.4,color="black",URL="$LoopInfoImpl_8h.html"];
+  Node22 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="LoopInfo.cpp",height=0.2,width=0.4,color="black",URL="$LoopInfo_8cpp.html"];
+  Node22 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="MachineLoopInfo.cpp",height=0.2,width=0.4,color="black",URL="$MachineLoopInfo_8cpp.html"];
+  Node1 -> Node25 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="LoopIterator.h",height=0.2,width=0.4,color="black",URL="$LoopIterator_8h.html"];
+  Node25 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node26 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="MachineLoopInfo.h",height=0.2,width=0.4,color="red",URL="$MachineLoopInfo_8h.html"];
+  Node26 -> Node27 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="ScheduleDAGInstrs.h",height=0.2,width=0.4,color="red",URL="$ScheduleDAGInstrs_8h.html"];
+  Node26 -> Node28 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="AsmPrinter.cpp",height=0.2,width=0.4,color="black",URL="$AsmPrinter_8cpp.html"];
+  Node26 -> Node29 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="CalcSpillWeights.cpp",height=0.2,width=0.4,color="black",URL="$CalcSpillWeights_8cpp.html"];
+  Node26 -> Node30 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="CodePlacementOpt.cpp",height=0.2,width=0.4,color="black",URL="$CodePlacementOpt_8cpp.html"];
+  Node26 -> Node31 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="EarlyIfConversion.cpp",height=0.2,width=0.4,color="black",URL="$EarlyIfConversion_8cpp.html"];
+  Node26 -> Node32 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="InlineSpiller.cpp",height=0.2,width=0.4,color="black",URL="$InlineSpiller_8cpp.html"];
+  Node26 -> Node33 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="MachineBasicBlock.cpp",height=0.2,width=0.4,color="black",URL="$MachineBasicBlock_8cpp.html"];
+  Node26 -> Node34 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="MachineBlockPlacement.cpp",height=0.2,width=0.4,color="black",URL="$MachineBlockPlacement_8cpp.html"];
+  Node26 -> Node35 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="MachineLICM.cpp",height=0.2,width=0.4,color="black",URL="$MachineLICM_8cpp.html"];
+  Node26 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node36 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="MachineLoopRanges.cpp",height=0.2,width=0.4,color="black",URL="$MachineLoopRanges_8cpp.html"];
+  Node26 -> Node37 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="MachineSink.cpp",height=0.2,width=0.4,color="black",URL="$MachineSink_8cpp.html"];
+  Node26 -> Node38 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="MachineTraceMetrics.cpp",height=0.2,width=0.4,color="black",URL="$MachineTraceMetrics_8cpp.html"];
+  Node1 -> Node39 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="BlockFrequencyInfo.cpp",height=0.2,width=0.4,color="black",URL="$BlockFrequencyInfo_8cpp.html"];
+  Node1 -> Node40 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="BranchProbabilityInfo.cpp",height=0.2,width=0.4,color="black",URL="$BranchProbabilityInfo_8cpp.html"];
+  Node1 -> Node41 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="DependenceAnalysis.cpp",height=0.2,width=0.4,color="black",URL="$DependenceAnalysis_8cpp.html"];
+  Node1 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node42 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="ProfileEstimatorPass.cpp",height=0.2,width=0.4,color="black",URL="$ProfileEstimatorPass_8cpp.html"];
+  Node1 -> Node43 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="RegionInfo.cpp",height=0.2,width=0.4,color="black",URL="$RegionInfo_8cpp.html"];
+  Node1 -> Node44 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="ScalarEvolution.cpp",height=0.2,width=0.4,color="black",URL="$ScalarEvolution_8cpp.html"];
+  Node1 -> Node45 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="ScalarEvolutionExpander.cpp",height=0.2,width=0.4,color="black",URL="$ScalarEvolutionExpander_8cpp.html"];
+  Node1 -> Node46 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="ScalarEvolutionNormalization.cpp",height=0.2,width=0.4,color="black",URL="$ScalarEvolutionNormalization_8cpp.html"];
+  Node1 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node47 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="Sink.cpp",height=0.2,width=0.4,color="black",URL="$Sink_8cpp.html"];
+  Node1 -> Node48 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="BasicBlockUtils.cpp",height=0.2,width=0.4,color="black",URL="$BasicBlockUtils_8cpp.html"];
+  Node1 -> Node49 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="BreakCriticalEdges.cpp",height=0.2,width=0.4,color="black",URL="$BreakCriticalEdges_8cpp.html"];
+  Node1 -> Node50 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="CodeExtractor.cpp",height=0.2,width=0.4,color="black",URL="$CodeExtractor_8cpp.html"];
+  Node1 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/LoopIterator_8h__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LoopIterator_8h__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LoopIterator_8h__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LoopIterator_8h__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,172 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="LoopIterator.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/ADT/DepthFirstIterator.h",height=0.2,width=0.4,color="black",URL="$DepthFirstIterator_8h.html"];
+  Node2 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/ADT/GraphTraits.h",height=0.2,width=0.4,color="black",URL="$GraphTraits_8h.html"];
+  Node2 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/ADT/SmallPtrSet.h",height=0.2,width=0.4,color="black",URL="$SmallPtrSet_8h.html"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="black",URL="$DataTypes_8h.html"];
+  Node6 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="math.h",height=0.2,width=0.4,color="grey75"];
+  Node6 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="sys/types.h",height=0.2,width=0.4,color="grey75"];
+  Node6 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="inttypes.h",height=0.2,width=0.4,color="grey75"];
+  Node6 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="stdint.h",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="llvm/Support/PointerLikeTypeTraits.h",height=0.2,width=0.4,color="black",URL="$PointerLikeTypeTraits_8h.html"];
+  Node11 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="cassert",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="cstddef",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="cstring",height=0.2,width=0.4,color="grey75"];
+  Node4 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="llvm/ADT/PointerIntPair.h",height=0.2,width=0.4,color="black",URL="$PointerIntPair_8h.html"];
+  Node16 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node2 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="set",height=0.2,width=0.4,color="grey75"];
+  Node2 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="vector",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="llvm/ADT/PostOrderIterator.h",height=0.2,width=0.4,color="black",URL="$PostOrderIterator_8h.html"];
+  Node19 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="llvm/Analysis/LoopInfo.h",height=0.2,width=0.4,color="black",URL="$LoopInfo_8h.html"];
+  Node20 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="llvm/Pass.h",height=0.2,width=0.4,color="black",URL="$Pass_8h.html"];
+  Node21 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="string",height=0.2,width=0.4,color="grey75"];
+  Node21 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="llvm/PassSupport.h",height=0.2,width=0.4,color="black",URL="$PassSupport_8h.html"];
+  Node23 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="llvm/PassRegistry.h",height=0.2,width=0.4,color="black",URL="$PassRegistry_8h.html"];
+  Node24 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/ADT/StringRef.h",height=0.2,width=0.4,color="red",URL="$StringRef_8h.html"];
+  Node25 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/Support/type_traits.h",height=0.2,width=0.4,color="black",URL="$type__traits_8h.html"];
+  Node26 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="utility",height=0.2,width=0.4,color="grey75"];
+  Node25 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node25 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/InitializePasses.h",height=0.2,width=0.4,color="black",URL="$InitializePasses_8h.html"];
+  Node23 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/Support/Atomic.h",height=0.2,width=0.4,color="black",URL="$Atomic_8h.html"];
+  Node30 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/Support/Valgrind.h",height=0.2,width=0.4,color="red",URL="$Valgrind_8h.html"];
+  Node31 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/PassAnalysisSupport.h",height=0.2,width=0.4,color="black",URL="$PassAnalysisSupport_8h.html"];
+  Node32 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="black",URL="$SmallVector_8h.html"];
+  Node33 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/Support/AlignOf.h",height=0.2,width=0.4,color="black",URL="$AlignOf_8h.html"];
+  Node34 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="cstdlib",height=0.2,width=0.4,color="grey75"];
+  Node33 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="memory",height=0.2,width=0.4,color="grey75"];
+  Node32 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/ADT/DenseMap.h",height=0.2,width=0.4,color="black",URL="$DenseMap_8h.html"];
+  Node37 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/Support/MathExtras.h",height=0.2,width=0.4,color="red",URL="$MathExtras_8h.html"];
+  Node37 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/ADT/DenseMapInfo.h",height=0.2,width=0.4,color="black",URL="$DenseMapInfo_8h.html"];
+  Node39 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="new",height=0.2,width=0.4,color="grey75"];
+  Node37 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="climits",height=0.2,width=0.4,color="grey75"];
+  Node37 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="llvm/ADT/DenseSet.h",height=0.2,width=0.4,color="black",URL="$DenseSet_8h.html"];
+  Node42 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="llvm/ADT/STLExtras.h",height=0.2,width=0.4,color="black",URL="$STLExtras_8h.html"];
+  Node43 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="functional",height=0.2,width=0.4,color="grey75"];
+  Node43 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/Analysis/Dominators.h",height=0.2,width=0.4,color="black",URL="$Dominators_8h.html"];
+  Node45 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/Function.h",height=0.2,width=0.4,color="red",URL="$Function_8h.html"];
+  Node46 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node2 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="llvm/Support/CFG.h",height=0.2,width=0.4,color="black",URL="$CFG_8h.html"];
+  Node47 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="llvm/InstrTypes.h",height=0.2,width=0.4,color="red",URL="$InstrTypes_8h.html"];
+  Node45 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="llvm/Support/raw_ostream.h",height=0.2,width=0.4,color="black",URL="$raw__ostream_8h.html"];
+  Node49 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="map",height=0.2,width=0.4,color="grey75"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/LoopPass_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LoopPass_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LoopPass_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LoopPass_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,88 @@
+<!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: LoopPass.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_a884da034f1b4859d4f2a35ae0ac2045.html">Analysis</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">LoopPass.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="LoopInfo_8h_source.html">llvm/Analysis/LoopInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="Pass_8h_source.html">llvm/Pass.h</a>"</code><br/>
+<code>#include "<a class="el" href="PassManagers_8h_source.html">llvm/PassManagers.h</a>"</code><br/>
+<code>#include "<a class="el" href="Function_8h_source.html">llvm/Function.h</a>"</code><br/>
+<code>#include <deque></code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for LoopPass.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="LoopPass_8h__incl.png" border="0" usemap="#LoopPass_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="LoopPass_8h__dep__incl.png" border="0" usemap="#LoopPass_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="LoopPass_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_1LoopPass.html">llvm::LoopPass</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classllvm_1_1LPPassManager.html">llvm::LPPassManager</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:31 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/LoopPass_8h__dep__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LoopPass_8h__dep__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/LoopPass_8h__dep__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/LoopRotation_8cpp__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LoopRotation_8cpp__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/LoopRotation_8cpp__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/LoopSimplify_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LoopSimplify_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LoopSimplify_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LoopSimplify_8cpp__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,167 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="LoopSimplify.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="llvm/Transforms/Scalar.h",height=0.2,width=0.4,color="black",URL="$Transforms_2Scalar_8h.html"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/Constants.h",height=0.2,width=0.4,color="black",URL="$Constants_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/Constant.h",height=0.2,width=0.4,color="red",URL="$Constant_8h.html"];
+  Node3 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="llvm/OperandTraits.h",height=0.2,width=0.4,color="red",URL="$OperandTraits_8h.html"];
+  Node3 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="llvm/ADT/APInt.h",height=0.2,width=0.4,color="red",URL="$APInt_8h.html"];
+  Node6 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="llvm/ADT/ArrayRef.h",height=0.2,width=0.4,color="red",URL="$ArrayRef_8h.html"];
+  Node7 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="red",URL="$SmallVector_8h.html"];
+  Node8 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node8 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="iterator",height=0.2,width=0.4,color="grey75"];
+  Node6 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="llvm/ADT/APFloat.h",height=0.2,width=0.4,color="black",URL="$APFloat_8h.html"];
+  Node11 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="llvm/Instructions.h",height=0.2,width=0.4,color="black",URL="$Instructions_8h.html"];
+  Node12 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="llvm/InstrTypes.h",height=0.2,width=0.4,color="red",URL="$InstrTypes_8h.html"];
+  Node13 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="llvm/DerivedTypes.h",height=0.2,width=0.4,color="black",URL="$DerivedTypes_8h.html"];
+  Node14 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="llvm/Type.h",height=0.2,width=0.4,color="black",URL="$Type_8h.html"];
+  Node15 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="llvm/Support/Casting.h",height=0.2,width=0.4,color="red",URL="$Casting_8h.html"];
+  Node15 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="red",URL="$DataTypes_8h.html"];
+  Node14 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="llvm/Attributes.h",height=0.2,width=0.4,color="red",URL="$Attributes_8h.html"];
+  Node18 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="llvm/CallingConv.h",height=0.2,width=0.4,color="black",URL="$CallingConv_8h.html"];
+  Node12 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="llvm/Support/IntegersSubset.h",height=0.2,width=0.4,color="red",URL="$IntegersSubset_8h.html"];
+  Node20 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="llvm/LLVMContext.h",height=0.2,width=0.4,color="black",URL="$LLVMContext_8h.html"];
+  Node21 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="llvm/Support/IntegersSubsetMapping.h",height=0.2,width=0.4,color="red",URL="$IntegersSubsetMapping_8h.html"];
+  Node22 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="llvm/Support/ErrorHandling.h",height=0.2,width=0.4,color="red",URL="$ErrorHandling_8h.html"];
+  Node23 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="llvm/IntrinsicInst.h",height=0.2,width=0.4,color="black",URL="$IntrinsicInst_8h.html"];
+  Node24 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/Function.h",height=0.2,width=0.4,color="black",URL="$Function_8h.html"];
+  Node25 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/GlobalValue.h",height=0.2,width=0.4,color="black",URL="$GlobalValue_8h.html"];
+  Node26 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/BasicBlock.h",height=0.2,width=0.4,color="red",URL="$BasicBlock_8h.html"];
+  Node27 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/Argument.h",height=0.2,width=0.4,color="red",URL="$Argument_8h.html"];
+  Node28 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/Intrinsics.h",height=0.2,width=0.4,color="red",URL="$Intrinsics_8h.html"];
+  Node29 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="llvm/Analysis/AliasAnalysis.h",height=0.2,width=0.4,color="black",URL="$AliasAnalysis_8h.html"];
+  Node30 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/Support/CallSite.h",height=0.2,width=0.4,color="red",URL="$CallSite_8h.html"];
+  Node31 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/ADT/DenseMap.h",height=0.2,width=0.4,color="red",URL="$DenseMap_8h.html"];
+  Node32 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="llvm/Analysis/DependenceAnalysis.h",height=0.2,width=0.4,color="black",URL="$DependenceAnalysis_8h.html"];
+  Node33 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/Pass.h",height=0.2,width=0.4,color="red",URL="$Pass_8h.html"];
+  Node34 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="llvm/ADT/SmallBitVector.h",height=0.2,width=0.4,color="red",URL="$SmallBitVector_8h.html"];
+  Node35 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="llvm/Analysis/Dominators.h",height=0.2,width=0.4,color="red",URL="$Dominators_8h.html"];
+  Node36 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/ADT/DepthFirstIterator.h",height=0.2,width=0.4,color="red",URL="$DepthFirstIterator_8h.html"];
+  Node37 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/ADT/GraphTraits.h",height=0.2,width=0.4,color="black",URL="$GraphTraits_8h.html"];
+  Node37 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/ADT/SmallPtrSet.h",height=0.2,width=0.4,color="red",URL="$SmallPtrSet_8h.html"];
+  Node39 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="llvm/Support/CFG.h",height=0.2,width=0.4,color="black",URL="$CFG_8h.html"];
+  Node40 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="llvm/Support/raw_ostream.h",height=0.2,width=0.4,color="red",URL="$raw__ostream_8h.html"];
+  Node41 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="llvm/Analysis/InstructionSimplify.h",height=0.2,width=0.4,color="black",URL="$InstructionSimplify_8h.html"];
+  Node1 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="llvm/Analysis/LoopPass.h",height=0.2,width=0.4,color="red",URL="$LoopPass_8h.html"];
+  Node43 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="llvm/Analysis/ScalarEvolution.h",height=0.2,width=0.4,color="red",URL="$ScalarEvolution_8h.html"];
+  Node44 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/Transforms/Utils/BasicBlockUtils.h",height=0.2,width=0.4,color="red",URL="$BasicBlockUtils_8h.html"];
+  Node45 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/Transforms/Utils/Local.h",height=0.2,width=0.4,color="red",URL="$Local_8h.html"];
+  Node1 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="llvm/Support/Debug.h",height=0.2,width=0.4,color="black",URL="$Debug_8h.html"];
+  Node1 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="llvm/ADT/SetOperations.h",height=0.2,width=0.4,color="black",URL="$SetOperations_8h.html"];
+  Node1 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="llvm/ADT/SetVector.h",height=0.2,width=0.4,color="red",URL="$SetVector_8h.html"];
+  Node1 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="llvm/ADT/Statistic.h",height=0.2,width=0.4,color="red",URL="$Statistic_8h.html"];
+  Node1 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/LoopUnrollPass_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LoopUnrollPass_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LoopUnrollPass_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LoopUnrollPass_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,202 @@
+<!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: LoopUnrollPass.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_22ea62e2015f6a823fddac4ac38ba517.html">Transforms</a>      </li>
+      <li class="navelem"><a class="el" href="dir_19df7bbd99eeba0b048ee47f392d9ea7.html">Scalar</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#define-members">Defines</a> |
+<a href="#func-members">Functions</a> |
+<a href="#var-members">Variables</a>  </div>
+  <div class="headertitle">
+<div class="title">LoopUnrollPass.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="IntrinsicInst_8h_source.html">llvm/IntrinsicInst.h</a>"</code><br/>
+<code>#include "<a class="el" href="Transforms_2Scalar_8h_source.html">llvm/Transforms/Scalar.h</a>"</code><br/>
+<code>#include "<a class="el" href="LoopPass_8h_source.html">llvm/Analysis/LoopPass.h</a>"</code><br/>
+<code>#include "<a class="el" href="CodeMetrics_8h_source.html">llvm/Analysis/CodeMetrics.h</a>"</code><br/>
+<code>#include "<a class="el" href="ScalarEvolution_8h_source.html">llvm/Analysis/ScalarEvolution.h</a>"</code><br/>
+<code>#include "<a class="el" href="CommandLine_8h_source.html">llvm/Support/CommandLine.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/>
+<code>#include "<a class="el" href="UnrollLoop_8h_source.html">llvm/Transforms/Utils/UnrollLoop.h</a>"</code><br/>
+<code>#include "<a class="el" href="DataLayout_8h_source.html">llvm/DataLayout.h</a>"</code><br/>
+<code>#include <climits></code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for LoopUnrollPass.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="LoopUnrollPass_8cpp__incl.png" border="0" usemap="#LoopUnrollPass_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="LoopUnrollPass_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="LoopUnrollPass_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">DEBUG_TYPE</a>   "loop-unroll"</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="LoopUnrollPass_8cpp.html#a2dc020f00f228d1d514b64a152812c00">ApproximateLoopSize</a> (const <a class="el" href="classllvm_1_1Loop.html">Loop</a> *L, <a class="el" href="classunsigned.html">unsigned</a> &NumCalls, const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> *TD)</td></tr>
+<tr><td class="mdescLeft"> </td><td class="mdescRight">ApproximateLoopSize - Approximate the size of the loop.  <a href="#a2dc020f00f228d1d514b64a152812c00"></a><br/></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 <a class="el" href="classllvm_1_1cl_1_1opt.html">cl::opt</a>< <a class="el" href="classunsigned.html">unsigned</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="LoopUnrollPass_8cpp.html#adf163d64a72a9f2b1555b7c605d75a83">UnrollThreshold</a> ("unroll-threshold", cl::init(150), cl::Hidden, <a class="el" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>("The cut-off point for automatic loop unrolling"))</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1cl_1_1opt.html">cl::opt</a>< <a class="el" href="classunsigned.html">unsigned</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="LoopUnrollPass_8cpp.html#a0f064dc5831129e9ebc6f944ba36ebbf">UnrollCount</a> ("unroll-count", cl::init(0), cl::Hidden, <a class="el" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>("Use this unroll count for all <a class="el" href="LoopSimplify_8cpp.html#ac68567aa12ef395f71061eff8f6dd7df">loops</a>, for testing purposes"))</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1cl_1_1opt.html">cl::opt</a>< <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="LoopUnrollPass_8cpp.html#a70bf3803691d46668d32efe422a3f5c2">UnrollAllowPartial</a> ("unroll-allow-partial", cl::init(<a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a>), cl::Hidden, <a class="el" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>("Allows <a class="el" href="LoopSimplify_8cpp.html#ac68567aa12ef395f71061eff8f6dd7df">loops</a> to be partially unrolled until ""-unroll-threshold loop size is reached."))</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1cl_1_1opt.html">cl::opt</a>< <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="LoopUnrollPass_8cpp.html#ac72baf0793b0022f1e42c1444352715e">UnrollRuntime</a> ("unroll-runtime", cl::ZeroOrMore, cl::init(<a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a>), cl::Hidden, <a class="el" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>("Unroll <a class="el" href="LoopSimplify_8cpp.html#ac68567aa12ef395f71061eff8f6dd7df">loops</a> with run-time trip counts"))</td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ad78e062f62e0d6e453941fb4ca843e4d"></a><!-- doxytag: member="LoopUnrollPass.cpp::DEBUG_TYPE" ref="ad78e062f62e0d6e453941fb4ca843e4d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define DEBUG_TYPE   "loop-unroll"</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="LoopUnrollPass_8cpp_source.html#l00015">15</a> of file <a class="el" href="LoopUnrollPass_8cpp_source.html">LoopUnrollPass.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a2dc020f00f228d1d514b64a152812c00"></a><!-- doxytag: member="LoopUnrollPass.cpp::ApproximateLoopSize" ref="a2dc020f00f228d1d514b64a152812c00" args="(const Loop *L, unsigned &NumCalls, const DataLayout *TD)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="classunsigned.html">unsigned</a> ApproximateLoopSize </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1Loop.html">Loop</a> * </td>
+          <td class="paramname"><em>L</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>NumCalls</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const <a class="el" href="classllvm_1_1DataLayout.html">DataLayout</a> * </td>
+          <td class="paramname"><em>TD</em> </td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>ApproximateLoopSize - Approximate the size of the loop. </p>
+
+<p>Definition at line <a class="el" href="LoopUnrollPass_8cpp_source.html#l00115">115</a> of file <a class="el" href="LoopUnrollPass_8cpp_source.html">LoopUnrollPass.cpp</a>.</p>
+
+<p>References <a class="el" href="CodeMetrics_8cpp_source.html#l00121">llvm::CodeMetrics::analyzeBasicBlock()</a>, <a class="el" href="LoopInfo_8h_source.html#l00142">llvm::LoopBase< BlockT, LoopT >::block_begin()</a>, <a class="el" href="LoopInfo_8h_source.html#l00143">llvm::LoopBase< BlockT, LoopT >::block_end()</a>, <a class="el" href="ARMBaseInfo_8h_source.html#l00097">llvm::ARM_PROC::I</a>, <a class="el" href="MachineTraceMetrics_8cpp_source.html#l00036">Metrics</a>, <a class="el" href="CodeMetrics_8h_source.html#l00071">llvm::CodeMetrics::NumInlineCandidates</a>, and <a class="el" href="CodeMetrics_8h_source.html#l00056">llvm::CodeMetrics::NumInsts</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Variable Documentation</h2>
+<a class="anchor" id="a70bf3803691d46668d32efe422a3f5c2"></a><!-- doxytag: member="LoopUnrollPass.cpp::UnrollAllowPartial" ref="a70bf3803691d46668d32efe422a3f5c2" args="("unroll-allow-partial", cl::init(false), cl::Hidden, cl::desc("Allows loops to be partially unrolled until ""-unroll-threshold loop size is reached."))" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classllvm_1_1cl_1_1opt.html">cl::opt</a><<a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a>> <a class="el" href="LoopUnrollPass_8cpp.html#a70bf3803691d46668d32efe422a3f5c2">UnrollAllowPartial</a>("unroll-allow-partial", cl::init(<a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a>), cl::Hidden, <a class="el" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>("Allows <a class="el" href="LoopSimplify_8cpp.html#ac68567aa12ef395f71061eff8f6dd7df">loops</a> to be partially unrolled until ""-unroll-threshold loop size is reached."))<code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a0f064dc5831129e9ebc6f944ba36ebbf"></a><!-- doxytag: member="LoopUnrollPass.cpp::UnrollCount" ref="a0f064dc5831129e9ebc6f944ba36ebbf" args="("unroll-count", cl::init(0), cl::Hidden, cl::desc("Use this unroll count for all loops, for testing purposes"))" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classllvm_1_1cl_1_1opt.html">cl::opt</a><<a class="el" href="classunsigned.html">unsigned</a>> <a class="el" href="LoopUnrollPass_8cpp.html#a0f064dc5831129e9ebc6f944ba36ebbf">UnrollCount</a>("unroll-count", cl::init(0), cl::Hidden, <a class="el" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>("Use this unroll count for all <a class="el" href="LoopSimplify_8cpp.html#ac68567aa12ef395f71061eff8f6dd7df">loops</a>, for testing purposes"))<code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ac72baf0793b0022f1e42c1444352715e"></a><!-- doxytag: member="LoopUnrollPass.cpp::UnrollRuntime" ref="ac72baf0793b0022f1e42c1444352715e" args="("unroll-runtime", cl::ZeroOrMore, cl::init(false), cl::Hidden, cl::desc("Unroll loops with run-time trip counts"))" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classllvm_1_1cl_1_1opt.html">cl::opt</a><<a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a>> <a class="el" href="LoopUnrollPass_8cpp.html#ac72baf0793b0022f1e42c1444352715e">UnrollRuntime</a>("unroll-runtime", cl::ZeroOrMore, cl::init(<a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a>), cl::Hidden, <a class="el" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>("Unroll <a class="el" href="LoopSimplify_8cpp.html#ac68567aa12ef395f71061eff8f6dd7df">loops</a> with run-time trip counts"))<code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="adf163d64a72a9f2b1555b7c605d75a83"></a><!-- doxytag: member="LoopUnrollPass.cpp::UnrollThreshold" ref="adf163d64a72a9f2b1555b7c605d75a83" args="("unroll-threshold", cl::init(150), cl::Hidden, cl::desc("The cut-off point for automatic loop unrolling"))" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classllvm_1_1cl_1_1opt.html">cl::opt</a><<a class="el" href="classunsigned.html">unsigned</a>> <a class="el" href="LoopUnrollPass_8cpp.html#adf163d64a72a9f2b1555b7c605d75a83">UnrollThreshold</a>("unroll-threshold", cl::init(150), cl::Hidden, <a class="el" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>("The cut-off point for automatic loop unrolling"))<code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:31 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/LoopUnrollPass_8cpp__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LoopUnrollPass_8cpp__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/LoopUnrollPass_8cpp__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/LoopUnrollRuntime_8cpp__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LoopUnrollRuntime_8cpp__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LoopUnrollRuntime_8cpp__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LoopUnrollRuntime_8cpp__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,157 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="LoopUnrollRuntime.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="llvm/Transforms/Utils/UnrollLoop.h",height=0.2,width=0.4,color="black",URL="$UnrollLoop_8h.html"];
+  Node1 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="llvm/BasicBlock.h",height=0.2,width=0.4,color="black",URL="$BasicBlock_8h.html"];
+  Node3 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="llvm/Instruction.h",height=0.2,width=0.4,color="black",URL="$Instruction_8h.html"];
+  Node4 -> Node5 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="llvm/User.h",height=0.2,width=0.4,color="red",URL="$User_8h.html"];
+  Node4 -> Node6 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="llvm/ADT/ilist_node.h",height=0.2,width=0.4,color="black",URL="$ilist__node_8h.html"];
+  Node4 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="llvm/Support/DebugLoc.h",height=0.2,width=0.4,color="black",URL="$DebugLoc_8h.html"];
+  Node4 -> Node8 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="llvm/Instruction.def",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node9 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="llvm/SymbolTableListTraits.h",height=0.2,width=0.4,color="black",URL="$SymbolTableListTraits_8h.html"];
+  Node9 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="llvm/ADT/ilist.h",height=0.2,width=0.4,color="red",URL="$ilist_8h.html"];
+  Node10 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="llvm/Support/Compiler.h",height=0.2,width=0.4,color="black",URL="$Compiler_8h.html"];
+  Node10 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="algorithm",height=0.2,width=0.4,color="grey75"];
+  Node3 -> Node10 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="llvm/ADT/Twine.h",height=0.2,width=0.4,color="red",URL="$Twine_8h.html"];
+  Node13 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="llvm/ADT/StringRef.h",height=0.2,width=0.4,color="red",URL="$StringRef_8h.html"];
+  Node14 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="llvm/Support/DataTypes.h",height=0.2,width=0.4,color="red",URL="$DataTypes_8h.html"];
+  Node3 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node16 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="llvm/ADT/Statistic.h",height=0.2,width=0.4,color="black",URL="$Statistic_8h.html"];
+  Node16 -> Node17 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="llvm/Support/Atomic.h",height=0.2,width=0.4,color="black",URL="$Atomic_8h.html"];
+  Node17 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 -> Node18 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="llvm/Support/Valgrind.h",height=0.2,width=0.4,color="red",URL="$Valgrind_8h.html"];
+  Node18 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node19 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="llvm/Analysis/LoopIterator.h",height=0.2,width=0.4,color="black",URL="$LoopIterator_8h.html"];
+  Node19 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="llvm/ADT/DepthFirstIterator.h",height=0.2,width=0.4,color="red",URL="$DepthFirstIterator_8h.html"];
+  Node20 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="set",height=0.2,width=0.4,color="grey75"];
+  Node19 -> Node22 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="llvm/ADT/PostOrderIterator.h",height=0.2,width=0.4,color="red",URL="$PostOrderIterator_8h.html"];
+  Node22 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="llvm/Analysis/LoopInfo.h",height=0.2,width=0.4,color="red",URL="$LoopInfo_8h.html"];
+  Node23 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="llvm/Pass.h",height=0.2,width=0.4,color="red",URL="$Pass_8h.html"];
+  Node24 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node25 [label="llvm/ADT/DenseSet.h",height=0.2,width=0.4,color="red",URL="$DenseSet_8h.html"];
+  Node23 -> Node20 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 [label="llvm/ADT/SmallVector.h",height=0.2,width=0.4,color="red",URL="$SmallVector_8h.html"];
+  Node26 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node26 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node27 [label="llvm/Support/CFG.h",height=0.2,width=0.4,color="red",URL="$CFG_8h.html"];
+  Node27 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 [label="llvm/Function.h",height=0.2,width=0.4,color="red",URL="$Function_8h.html"];
+  Node28 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node28 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 [label="llvm/Support/raw_ostream.h",height=0.2,width=0.4,color="black",URL="$raw__ostream_8h.html"];
+  Node29 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node11 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node29 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node30 [label="map",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node31 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 [label="llvm/Analysis/LoopPass.h",height=0.2,width=0.4,color="black",URL="$LoopPass_8h.html"];
+  Node31 -> Node23 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node32 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 [label="llvm/PassManagers.h",height=0.2,width=0.4,color="red",URL="$PassManagers_8h.html"];
+  Node32 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node32 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node31 -> Node33 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node33 [label="deque",height=0.2,width=0.4,color="grey75"];
+  Node1 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 [label="llvm/Analysis/ScalarEvolution.h",height=0.2,width=0.4,color="black",URL="$ScalarEvolution_8h.html"];
+  Node34 -> Node24 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node35 [label="llvm/Instructions.h",height=0.2,width=0.4,color="red",URL="$Instructions_8h.html"];
+  Node35 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node28 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node36 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node36 [label="llvm/Operator.h",height=0.2,width=0.4,color="red",URL="$Operator_8h.html"];
+  Node36 -> Node4 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node37 [label="llvm/Support/ValueHandle.h",height=0.2,width=0.4,color="red",URL="$ValueHandle_8h.html"];
+  Node34 -> Node38 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 [label="llvm/Support/Allocator.h",height=0.2,width=0.4,color="red",URL="$Allocator_8h.html"];
+  Node38 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node38 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node39 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node39 [label="llvm/Support/ConstantRange.h",height=0.2,width=0.4,color="red",URL="$ConstantRange_8h.html"];
+  Node39 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node40 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 [label="llvm/ADT/FoldingSet.h",height=0.2,width=0.4,color="black",URL="$FoldingSet_8h.html"];
+  Node40 -> Node15 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node40 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node25 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node34 -> Node30 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node41 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 [label="llvm/Analysis/ScalarEvolutionExpander.h",height=0.2,width=0.4,color="black",URL="$ScalarEvolutionExpander_8h.html"];
+  Node41 -> Node42 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 [label="llvm/IRBuilder.h",height=0.2,width=0.4,color="red",URL="$IRBuilder_8h.html"];
+  Node42 -> Node35 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node14 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node42 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node43 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node43 [label="llvm/Analysis/ScalarEvolutionExpressions.h",height=0.2,width=0.4,color="red",URL="$ScalarEvolutionExpressions_8h.html"];
+  Node43 -> Node34 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node44 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node44 [label="llvm/Analysis/ScalarEvolutionNormalization.h",height=0.2,width=0.4,color="red",URL="$ScalarEvolutionNormalization_8h.html"];
+  Node41 -> Node45 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node45 [label="llvm/Support/TargetFolder.h",height=0.2,width=0.4,color="red",URL="$TargetFolder_8h.html"];
+  Node41 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node41 -> Node21 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node46 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node46 [label="llvm/Support/Debug.h",height=0.2,width=0.4,color="black",URL="$Debug_8h.html"];
+  Node1 -> Node29 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node47 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 [label="llvm/Transforms/Utils/BasicBlockUtils.h",height=0.2,width=0.4,color="black",URL="$BasicBlockUtils_8h.html"];
+  Node47 -> Node3 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node27 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node47 -> Node7 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node48 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 [label="llvm/Transforms/Utils/Cloning.h",height=0.2,width=0.4,color="black",URL="$Cloning_8h.html"];
+  Node48 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node49 [label="llvm/ADT/ValueMap.h",height=0.2,width=0.4,color="red",URL="$ValueMap_8h.html"];
+  Node49 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node26 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node13 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node37 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node48 -> Node50 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node50 [label="llvm/Transforms/Utils/ValueMapper.h",height=0.2,width=0.4,color="black",URL="$ValueMapper_8h.html"];
+  Node50 -> Node49 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node1 -> Node12 [color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/LoopVectorize_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LoopVectorize_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LoopVectorize_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LoopVectorize_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,1997 @@
+<!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: LoopVectorize.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_73b33d7e294d2897b9ba5bc94354ca5e.html">Vectorize</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">LoopVectorize.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="LoopVectorize_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===- LoopVectorize.cpp - A Loop Vectorizer ------------------------------===//</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 the LLVM loop vectorizer. This pass modifies 'vectorizable' loops</span>
+<a name="l00011"></a>00011 <span class="comment">// and generates target-independent LLVM-IR. Legalization of the IR is done</span>
+<a name="l00012"></a>00012 <span class="comment">// in the codegen. However, the vectorizes uses (will use) the codegen</span>
+<a name="l00013"></a>00013 <span class="comment">// interfaces to generate IR that is likely to result in an optimal binary.</span>
+<a name="l00014"></a>00014 <span class="comment">//</span>
+<a name="l00015"></a>00015 <span class="comment">// The loop vectorizer combines consecutive loop iteration into a single</span>
+<a name="l00016"></a>00016 <span class="comment">// 'wide' iteration. After this transformation the index is incremented</span>
+<a name="l00017"></a>00017 <span class="comment">// by the SIMD vector width, and not by one.</span>
+<a name="l00018"></a>00018 <span class="comment">//</span>
+<a name="l00019"></a>00019 <span class="comment">// This pass has three parts:</span>
+<a name="l00020"></a>00020 <span class="comment">// 1. The main loop pass that drives the different parts.</span>
+<a name="l00021"></a>00021 <span class="comment">// 2. LoopVectorizationLegality - A unit that checks for the legality</span>
+<a name="l00022"></a>00022 <span class="comment">//    of the vectorization.</span>
+<a name="l00023"></a>00023 <span class="comment">// 3. SingleBlockLoopVectorizer - A unit that performs the actual</span>
+<a name="l00024"></a>00024 <span class="comment">//    widening of instructions.</span>
+<a name="l00025"></a>00025 <span class="comment">// 4. LoopVectorizationCostModel - A unit that checks for the profitability</span>
+<a name="l00026"></a>00026 <span class="comment">//    of vectorization. It decides on the optimal vector width, which</span>
+<a name="l00027"></a>00027 <span class="comment">//    can be one, if vectorization is not profitable.</span>
+<a name="l00028"></a>00028 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00029"></a>00029 <span class="comment">//</span>
+<a name="l00030"></a>00030 <span class="comment">// The reduction-variable vectorization is based on the paper:</span>
+<a name="l00031"></a>00031 <span class="comment">//  D. Nuzman and R. Henderson. Multi-platform Auto-vectorization.</span>
+<a name="l00032"></a>00032 <span class="comment">//</span>
+<a name="l00033"></a>00033 <span class="comment">// Variable uniformity checks are inspired by:</span>
+<a name="l00034"></a>00034 <span class="comment">// Karrenberg, R. and Hack, S. Whole Function Vectorization.</span>
+<a name="l00035"></a>00035 <span class="comment">//</span>
+<a name="l00036"></a>00036 <span class="comment">// Other ideas/concepts are from:</span>
+<a name="l00037"></a>00037 <span class="comment">//  A. Zaks and D. Nuzman. Autovectorization in GCC-two years later.</span>
+<a name="l00038"></a>00038 <span class="comment">//</span>
+<a name="l00039"></a>00039 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00040"></a><a class="code" href="LoopVectorize_8cpp.html#a0eff4a8bccb143ae91e197e6a59d4692">00040</a> <span class="preprocessor">#define LV_NAME "loop-vectorize"</span>
+<a name="l00041"></a><a class="code" href="LoopVectorize_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">00041</a> <span class="preprocessor"></span><span class="preprocessor">#define DEBUG_TYPE LV_NAME</span>
+<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="Constants_8h.html">llvm/Constants.h</a>"</span>
+<a name="l00043"></a>00043 <span class="preprocessor">#include "<a class="code" href="DerivedTypes_8h.html">llvm/DerivedTypes.h</a>"</span>
+<a name="l00044"></a>00044 <span class="preprocessor">#include "<a class="code" href="Instructions_8h.html">llvm/Instructions.h</a>"</span>
+<a name="l00045"></a>00045 <span class="preprocessor">#include "<a class="code" href="LLVMContext_8h.html">llvm/LLVMContext.h</a>"</span>
+<a name="l00046"></a>00046 <span class="preprocessor">#include "<a class="code" href="Pass_8h.html">llvm/Pass.h</a>"</span>
+<a name="l00047"></a>00047 <span class="preprocessor">#include "<a class="code" href="LoopPass_8h.html">llvm/Analysis/LoopPass.h</a>"</span>
+<a name="l00048"></a>00048 <span class="preprocessor">#include "<a class="code" href="Value_8h.html">llvm/Value.h</a>"</span>
+<a name="l00049"></a>00049 <span class="preprocessor">#include "<a class="code" href="Function_8h.html">llvm/Function.h</a>"</span>
+<a name="l00050"></a>00050 <span class="preprocessor">#include "<a class="code" href="Verifier_8h.html">llvm/Analysis/Verifier.h</a>"</span>
+<a name="l00051"></a>00051 <span class="preprocessor">#include "<a class="code" href="Module_8h.html">llvm/Module.h</a>"</span>
+<a name="l00052"></a>00052 <span class="preprocessor">#include "<a class="code" href="Type_8h.html">llvm/Type.h</a>"</span>
+<a name="l00053"></a>00053 <span class="preprocessor">#include "<a class="code" href="SmallVector_8h.html">llvm/ADT/SmallVector.h</a>"</span>
+<a name="l00054"></a>00054 <span class="preprocessor">#include "<a class="code" href="StringExtras_8h.html">llvm/ADT/StringExtras.h</a>"</span>
+<a name="l00055"></a>00055 <span class="preprocessor">#include "<a class="code" href="AliasAnalysis_8h.html">llvm/Analysis/AliasAnalysis.h</a>"</span>
+<a name="l00056"></a>00056 <span class="preprocessor">#include "<a class="code" href="AliasSetTracker_8h.html">llvm/Analysis/AliasSetTracker.h</a>"</span>
+<a name="l00057"></a>00057 <span class="preprocessor">#include "<a class="code" href="ScalarEvolution_8h.html">llvm/Analysis/ScalarEvolution.h</a>"</span>
+<a name="l00058"></a>00058 <span class="preprocessor">#include "<a class="code" href="Dominators_8h.html">llvm/Analysis/Dominators.h</a>"</span>
+<a name="l00059"></a>00059 <span class="preprocessor">#include "<a class="code" href="ScalarEvolutionExpressions_8h.html">llvm/Analysis/ScalarEvolutionExpressions.h</a>"</span>
+<a name="l00060"></a>00060 <span class="preprocessor">#include "<a class="code" href="ScalarEvolutionExpander_8h.html">llvm/Analysis/ScalarEvolutionExpander.h</a>"</span>
+<a name="l00061"></a>00061 <span class="preprocessor">#include "<a class="code" href="LoopInfo_8h.html">llvm/Analysis/LoopInfo.h</a>"</span>
+<a name="l00062"></a>00062 <span class="preprocessor">#include "<a class="code" href="ValueTracking_8h.html">llvm/Analysis/ValueTracking.h</a>"</span>
+<a name="l00063"></a>00063 <span class="preprocessor">#include "<a class="code" href="Transforms_2Scalar_8h.html">llvm/Transforms/Scalar.h</a>"</span>
+<a name="l00064"></a>00064 <span class="preprocessor">#include "<a class="code" href="BasicBlockUtils_8h.html">llvm/Transforms/Utils/BasicBlockUtils.h</a>"</span>
+<a name="l00065"></a>00065 <span class="preprocessor">#include "<a class="code" href="TargetTransformInfo_8h.html">llvm/TargetTransformInfo.h</a>"</span>
+<a name="l00066"></a>00066 <span class="preprocessor">#include "<a class="code" href="CommandLine_8h.html">llvm/Support/CommandLine.h</a>"</span>
+<a name="l00067"></a>00067 <span class="preprocessor">#include "<a class="code" href="Debug_8h.html">llvm/Support/Debug.h</a>"</span>
+<a name="l00068"></a>00068 <span class="preprocessor">#include "<a class="code" href="raw__ostream_8h.html">llvm/Support/raw_ostream.h</a>"</span>
+<a name="l00069"></a>00069 <span class="preprocessor">#include "<a class="code" href="DataLayout_8h.html">llvm/DataLayout.h</a>"</span>
+<a name="l00070"></a>00070 <span class="preprocessor">#include "<a class="code" href="Local_8h.html">llvm/Transforms/Utils/Local.h</a>"</span>
+<a name="l00071"></a>00071 <span class="preprocessor">#include <algorithm></span>
+<a name="l00072"></a>00072 <span class="keyword">using namespace </span>llvm;
+<a name="l00073"></a>00073 
+<a name="l00074"></a>00074 <span class="keyword">static</span> <a class="code" href="classllvm_1_1cl_1_1opt.html">cl::opt<unsigned></a>
+<a name="l00075"></a>00075 <a class="code" href="LoopVectorize_8cpp.html#a9204bc885c8d4ab574edbab8cb5a6b09">VectorizationFactor</a>(<span class="stringliteral">"force-vector-width"</span>, <a class="code" href="namespacellvm_1_1cl.html#a10a041239ae1870cfcc064bfaa79fb65">cl::init</a>(0), <a class="code" href="namespacellvm_1_1cl.html#a68075925a54790e71ca790e1d4f21a40a263ac008d8d31f13ce460395fc4cf7e6">cl::Hidden</a>,
+<a name="l00076"></a>00076           <a class="code" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>(<span class="stringliteral">"Set the default vectorization width. Zero is autoselect."</span>));
+<a name="l00077"></a>00077 <span class="comment"></span>
+<a name="l00078"></a>00078 <span class="comment">/// We don't vectorize loops with a known constant trip count below this number.</span>
+<a name="l00079"></a><a class="code" href="LoopVectorize_8cpp.html#ad59a718a5efbaeb28e491479d0cad580">00079</a> <span class="comment"></span><span class="keyword">const</span> <span class="keywordtype">unsigned</span> <a class="code" href="LoopVectorize_8cpp.html#ad59a718a5efbaeb28e491479d0cad580" title="We don't vectorize loops with a known constant trip count below this number.">TinyTripCountThreshold</a> = 16;
+<a name="l00080"></a>00080 <span class="comment"></span>
+<a name="l00081"></a>00081 <span class="comment">/// When performing a runtime memory check, do not check more than this</span>
+<a name="l00082"></a>00082 <span class="comment">/// number of pointers. Notice that the check is quadratic!</span>
+<a name="l00083"></a><a class="code" href="LoopVectorize_8cpp.html#a952c05caf05575f974ed5bf7c1cf305f">00083</a> <span class="comment"></span><span class="keyword">const</span> <span class="keywordtype">unsigned</span> <a class="code" href="LoopVectorize_8cpp.html#a952c05caf05575f974ed5bf7c1cf305f">RuntimeMemoryCheckThreshold</a> = 2;
+<a name="l00084"></a>00084 
+<a name="l00085"></a>00085 <span class="keyword">namespace </span>{
+<a name="l00086"></a>00086 
+<a name="l00087"></a>00087 <span class="comment">// Forward declarations.</span>
+<a name="l00088"></a>00088 <span class="keyword">class </span>LoopVectorizationLegality;
+<a name="l00089"></a>00089 <span class="keyword">class </span>LoopVectorizationCostModel;
+<a name="l00090"></a>00090 <span class="comment"></span>
+<a name="l00091"></a>00091 <span class="comment">/// SingleBlockLoopVectorizer vectorizes loops which contain only one basic</span>
+<a name="l00092"></a>00092 <span class="comment">/// block to a specified vectorization factor (VF).</span>
+<a name="l00093"></a>00093 <span class="comment">/// This class performs the widening of scalars into vectors, or multiple</span>
+<a name="l00094"></a>00094 <span class="comment">/// scalars. This class also implements the following features:</span>
+<a name="l00095"></a>00095 <span class="comment">/// * It inserts an epilogue loop for handling loops that don't have iteration</span>
+<a name="l00096"></a>00096 <span class="comment">///   counts that are known to be a multiple of the vectorization factor.</span>
+<a name="l00097"></a>00097 <span class="comment">/// * It handles the code generation for reduction variables.</span>
+<a name="l00098"></a>00098 <span class="comment">/// * Scalarization (implementation using scalars) of un-vectorizable</span>
+<a name="l00099"></a>00099 <span class="comment">///   instructions.</span>
+<a name="l00100"></a>00100 <span class="comment">/// SingleBlockLoopVectorizer does not perform any vectorization-legality</span>
+<a name="l00101"></a>00101 <span class="comment">/// checks, and relies on the caller to check for the different legality</span>
+<a name="l00102"></a>00102 <span class="comment">/// aspects. The SingleBlockLoopVectorizer relies on the</span>
+<a name="l00103"></a>00103 <span class="comment">/// LoopVectorizationLegality class to provide information about the induction</span>
+<a name="l00104"></a>00104 <span class="comment">/// and reduction variables that were found to a given vectorization factor.</span>
+<a name="l00105"></a>00105 <span class="comment"></span><span class="keyword">class </span>SingleBlockLoopVectorizer {
+<a name="l00106"></a>00106 <span class="keyword">public</span>:<span class="comment"></span>
+<a name="l00107"></a>00107 <span class="comment">  /// Ctor.</span>
+<a name="l00108"></a>00108 <span class="comment"></span>  SingleBlockLoopVectorizer(<a class="code" href="classllvm_1_1Loop.html">Loop</a> *Orig, <a class="code" href="classllvm_1_1ScalarEvolution.html">ScalarEvolution</a> *Se, <a class="code" href="classllvm_1_1LoopInfo.html">LoopInfo</a> *Li,
+<a name="l00109"></a>00109                             <a class="code" href="classllvm_1_1DominatorTree.html">DominatorTree</a> *dt, <a class="code" href="classllvm_1_1LPPassManager.html">LPPassManager</a> *Lpm,
+<a name="l00110"></a>00110                             <span class="keywordtype">unsigned</span> VecWidth):
+<a name="l00111"></a>00111   OrigLoop(Orig), SE(Se), <a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>(Li), DT(dt), LPM(Lpm), VF(VecWidth),
+<a name="l00112"></a>00112   Builder(Se-><a class="code" href="classllvm_1_1ScalarEvolution.html#aa89f44fd7549e81b02f2be1be894f098">getContext</a>()), Induction(0), OldInduction(0) { }
+<a name="l00113"></a>00113 
+<a name="l00114"></a>00114   <span class="comment">// Perform the actual loop widening (vectorization).</span>
+<a name="l00115"></a>00115   <span class="keywordtype">void</span> vectorize(LoopVectorizationLegality *Legal) {<span class="comment"></span>
+<a name="l00116"></a>00116 <span class="comment">    ///Create a new empty loop. Unlink the old loop and connect the new one.</span>
+<a name="l00117"></a>00117 <span class="comment"></span>    createEmptyLoop(Legal);<span class="comment"></span>
+<a name="l00118"></a>00118 <span class="comment">    /// Widen each instruction in the old loop to a new one in the new loop.</span>
+<a name="l00119"></a>00119 <span class="comment">    /// Use the Legality module to find the induction and reduction variables.</span>
+<a name="l00120"></a>00120 <span class="comment"></span>    vectorizeLoop(Legal);
+<a name="l00121"></a>00121     <span class="comment">// Register the new loop and update the analysis passes.</span>
+<a name="l00122"></a>00122     updateAnalysis();
+<a name="l00123"></a>00123  }
+<a name="l00124"></a>00124 
+<a name="l00125"></a>00125 <span class="keyword">private</span>:<span class="comment"></span>
+<a name="l00126"></a>00126 <span class="comment">  /// Create an empty loop, based on the loop ranges of the old loop.</span>
+<a name="l00127"></a>00127 <span class="comment"></span>  <span class="keywordtype">void</span> createEmptyLoop(LoopVectorizationLegality *Legal);<span class="comment"></span>
+<a name="l00128"></a>00128 <span class="comment">  /// Copy and widen the instructions from the old loop.</span>
+<a name="l00129"></a>00129 <span class="comment"></span>  <span class="keywordtype">void</span> vectorizeLoop(LoopVectorizationLegality *Legal);<span class="comment"></span>
+<a name="l00130"></a>00130 <span class="comment">  /// Insert the new loop to the loop hierarchy and pass manager</span>
+<a name="l00131"></a>00131 <span class="comment">  /// and update the analysis passes.</span>
+<a name="l00132"></a>00132 <span class="comment"></span>  <span class="keywordtype">void</span> updateAnalysis();
+<a name="l00133"></a>00133 <span class="comment"></span>
+<a name="l00134"></a>00134 <span class="comment">  /// This instruction is un-vectorizable. Implement it as a sequence</span>
+<a name="l00135"></a>00135 <span class="comment">  /// of scalars.</span>
+<a name="l00136"></a>00136 <span class="comment"></span>  <span class="keywordtype">void</span> scalarizeInstruction(<a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *Instr);
+<a name="l00137"></a>00137 <span class="comment"></span>
+<a name="l00138"></a>00138 <span class="comment">  /// Create a broadcast instruction. This method generates a broadcast</span>
+<a name="l00139"></a>00139 <span class="comment">  /// instruction (shuffle) for loop invariant values and for the induction</span>
+<a name="l00140"></a>00140 <span class="comment">  /// value. If this is the induction variable then we extend it to N, N+1, ...</span>
+<a name="l00141"></a>00141 <span class="comment">  /// this is needed because each iteration in the loop corresponds to a SIMD</span>
+<a name="l00142"></a>00142 <span class="comment">  /// element.</span>
+<a name="l00143"></a>00143 <span class="comment"></span>  <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *getBroadcastInstrs(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *V);
+<a name="l00144"></a>00144 <span class="comment"></span>
+<a name="l00145"></a>00145 <span class="comment">  /// This is a helper function used by getBroadcastInstrs. It adds 0, 1, 2 ..</span>
+<a name="l00146"></a>00146 <span class="comment">  /// for each element in the vector. Starting from zero.</span>
+<a name="l00147"></a>00147 <span class="comment"></span>  <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *getConsecutiveVector(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>* Val);
+<a name="l00148"></a>00148 <span class="comment"></span>
+<a name="l00149"></a>00149 <span class="comment">  /// When we go over instructions in the basic block we rely on previous</span>
+<a name="l00150"></a>00150 <span class="comment">  /// values within the current basic block or on loop invariant values.</span>
+<a name="l00151"></a>00151 <span class="comment">  /// When we widen (vectorize) values we place them in the map. If the values</span>
+<a name="l00152"></a>00152 <span class="comment">  /// are not within the map, they have to be loop invariant, so we simply</span>
+<a name="l00153"></a>00153 <span class="comment">  /// broadcast them into a vector.</span>
+<a name="l00154"></a>00154 <span class="comment"></span>  <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *getVectorValue(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *V);
+<a name="l00155"></a>00155 <span class="comment"></span>
+<a name="l00156"></a>00156 <span class="comment">  /// Get a uniform vector of constant integers. We use this to get</span>
+<a name="l00157"></a>00157 <span class="comment">  /// vectors of ones and zeros for the reduction code.</span>
+<a name="l00158"></a>00158 <span class="comment"></span>  <a class="code" href="classllvm_1_1Constant.html" title="LLVM Constant Representation.">Constant</a>* getUniformVector(<span class="keywordtype">unsigned</span> Val, <a class="code" href="classllvm_1_1Type.html">Type</a>* ScalarTy);
+<a name="l00159"></a>00159 
+<a name="l00160"></a>00160   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1DenseMap.html">DenseMap<Value*, Value*></a> <a class="code" href="classllvm_1_1ValueMap.html" title="See the file comment.">ValueMap</a>;
+<a name="l00161"></a>00161 <span class="comment"></span>
+<a name="l00162"></a>00162 <span class="comment">  /// The original loop.</span>
+<a name="l00163"></a>00163 <span class="comment"></span>  <a class="code" href="classllvm_1_1Loop.html">Loop</a> *OrigLoop;
+<a name="l00164"></a>00164   <span class="comment">// Scev analysis to use.</span>
+<a name="l00165"></a>00165   <a class="code" href="classllvm_1_1ScalarEvolution.html">ScalarEvolution</a> *SE;
+<a name="l00166"></a>00166   <span class="comment">// Loop Info.</span>
+<a name="l00167"></a>00167   <a class="code" href="classllvm_1_1LoopInfo.html">LoopInfo</a> *<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>;
+<a name="l00168"></a>00168   <span class="comment">// Dominator Tree.</span>
+<a name="l00169"></a>00169   <a class="code" href="classllvm_1_1DominatorTree.html">DominatorTree</a> *DT;
+<a name="l00170"></a>00170   <span class="comment">// Loop Pass Manager;</span>
+<a name="l00171"></a>00171   <a class="code" href="classllvm_1_1LPPassManager.html">LPPassManager</a> *LPM;
+<a name="l00172"></a>00172   <span class="comment">// The vectorization factor to use.</span>
+<a name="l00173"></a>00173   <span class="keywordtype">unsigned</span> VF;
+<a name="l00174"></a>00174 
+<a name="l00175"></a>00175   <span class="comment">// The builder that we use</span>
+<a name="l00176"></a>00176   <a class="code" href="classllvm_1_1IRBuilder.html">IRBuilder<></a> Builder;
+<a name="l00177"></a>00177 
+<a name="l00178"></a>00178   <span class="comment">// --- Vectorization state ---</span>
+<a name="l00179"></a>00179 <span class="comment"></span>
+<a name="l00180"></a>00180 <span class="comment">  /// The vector-loop preheader.</span>
+<a name="l00181"></a>00181 <span class="comment"></span>  <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *LoopVectorPreHeader;<span class="comment"></span>
+<a name="l00182"></a>00182 <span class="comment">  /// The scalar-loop preheader.</span>
+<a name="l00183"></a>00183 <span class="comment"></span>  <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *LoopScalarPreHeader;<span class="comment"></span>
+<a name="l00184"></a>00184 <span class="comment">  /// Middle Block between the vector and the scalar.</span>
+<a name="l00185"></a>00185 <span class="comment"></span>  <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *LoopMiddleBlock;<span class="comment"></span>
+<a name="l00186"></a>00186 <span class="comment">  ///The ExitBlock of the scalar loop.</span>
+<a name="l00187"></a>00187 <span class="comment"></span>  <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *LoopExitBlock;<span class="comment"></span>
+<a name="l00188"></a>00188 <span class="comment">  ///The vector loop body.</span>
+<a name="l00189"></a>00189 <span class="comment"></span>  <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *LoopVectorBody;<span class="comment"></span>
+<a name="l00190"></a>00190 <span class="comment">  ///The scalar loop body.</span>
+<a name="l00191"></a>00191 <span class="comment"></span>  <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *LoopScalarBody;<span class="comment"></span>
+<a name="l00192"></a>00192 <span class="comment">  ///The first bypass block.</span>
+<a name="l00193"></a>00193 <span class="comment"></span>  <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *LoopBypassBlock;
+<a name="l00194"></a>00194 <span class="comment"></span>
+<a name="l00195"></a>00195 <span class="comment">  /// The new Induction variable which was added to the new block.</span>
+<a name="l00196"></a>00196 <span class="comment"></span>  <a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *Induction;<span class="comment"></span>
+<a name="l00197"></a>00197 <span class="comment">  /// The induction variable of the old basic block.</span>
+<a name="l00198"></a>00198 <span class="comment"></span>  <a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *OldInduction;
+<a name="l00199"></a>00199   <span class="comment">// Maps scalars to widened vectors.</span>
+<a name="l00200"></a>00200   <a class="code" href="classllvm_1_1ValueMap.html" title="See the file comment.">ValueMap</a> WidenMap;
+<a name="l00201"></a>00201 };
+<a name="l00202"></a>00202 <span class="comment"></span>
+<a name="l00203"></a>00203 <span class="comment">/// LoopVectorizationLegality checks if it is legal to vectorize a loop, and</span>
+<a name="l00204"></a>00204 <span class="comment">/// to what vectorization factor.</span>
+<a name="l00205"></a>00205 <span class="comment">/// This class does not look at the profitability of vectorization, only the</span>
+<a name="l00206"></a>00206 <span class="comment">/// legality. This class has two main kinds of checks:</span>
+<a name="l00207"></a>00207 <span class="comment">/// * Memory checks - The code in canVectorizeMemory checks if vectorization</span>
+<a name="l00208"></a>00208 <span class="comment">///   will change the order of memory accesses in a way that will change the</span>
+<a name="l00209"></a>00209 <span class="comment">///   correctness of the program.</span>
+<a name="l00210"></a>00210 <span class="comment">/// * Scalars checks - The code in canVectorizeBlock checks for a number</span>
+<a name="l00211"></a>00211 <span class="comment">///   of different conditions, such as the availability of a single induction</span>
+<a name="l00212"></a>00212 <span class="comment">///   variable, that all types are supported and vectorize-able, etc.</span>
+<a name="l00213"></a>00213 <span class="comment">/// This code reflects the capabilities of SingleBlockLoopVectorizer.</span>
+<a name="l00214"></a>00214 <span class="comment">/// This class is also used by SingleBlockLoopVectorizer for identifying</span>
+<a name="l00215"></a>00215 <span class="comment">/// induction variable and the different reduction variables.</span>
+<a name="l00216"></a>00216 <span class="comment"></span><span class="keyword">class </span>LoopVectorizationLegality {
+<a name="l00217"></a>00217 <span class="keyword">public</span>:
+<a name="l00218"></a>00218   LoopVectorizationLegality(<a class="code" href="classllvm_1_1Loop.html">Loop</a> *Lp, <a class="code" href="classllvm_1_1ScalarEvolution.html">ScalarEvolution</a> *Se, <a class="code" href="classllvm_1_1DataLayout.html">DataLayout</a> *Dl):
+<a name="l00219"></a>00219   TheLoop(Lp), SE(Se), DL(Dl), Induction(0) { }
+<a name="l00220"></a>00220 <span class="comment"></span>
+<a name="l00221"></a>00221 <span class="comment">  /// This represents the kinds of reductions that we support.</span>
+<a name="l00222"></a>00222 <span class="comment"></span>  <span class="keyword">enum</span> ReductionKind {
+<a name="l00223"></a>00223     NoReduction, <span class="comment">/// Not a reduction.</span>
+<a name="l00224"></a>00224 <span class="comment"></span>    IntegerAdd,  <span class="comment">/// Sum of numbers.</span>
+<a name="l00225"></a>00225 <span class="comment"></span>    IntegerMult, <span class="comment">/// Product of numbers.</span>
+<a name="l00226"></a>00226 <span class="comment"></span>    IntegerOr,   <span class="comment">/// Bitwise or logical OR of numbers.</span>
+<a name="l00227"></a>00227 <span class="comment"></span>    IntegerAnd,  <span class="comment">/// Bitwise or logical AND of numbers.</span>
+<a name="l00228"></a>00228 <span class="comment"></span>    IntegerXor   <span class="comment">/// Bitwise or logical XOR of numbers.</span>
+<a name="l00229"></a>00229 <span class="comment"></span>  };
+<a name="l00230"></a>00230 <span class="comment"></span>
+<a name="l00231"></a>00231 <span class="comment">  /// This POD struct holds information about reduction variables.</span>
+<a name="l00232"></a>00232 <span class="comment"></span>  <span class="keyword">struct </span>ReductionDescriptor {
+<a name="l00233"></a>00233     <span class="comment">// Default C'tor</span>
+<a name="l00234"></a>00234     ReductionDescriptor():
+<a name="l00235"></a>00235     StartValue(0), LoopExitInstr(0), <a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a>(NoReduction) {}
+<a name="l00236"></a>00236 
+<a name="l00237"></a>00237     <span class="comment">// C'tor.</span>
+<a name="l00238"></a>00238     ReductionDescriptor(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Start, <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *Exit, ReductionKind K):
+<a name="l00239"></a>00239     StartValue(Start), LoopExitInstr(Exit), <a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a>(K) {}
+<a name="l00240"></a>00240 
+<a name="l00241"></a>00241     <span class="comment">// The starting value of the reduction.</span>
+<a name="l00242"></a>00242     <span class="comment">// It does not have to be zero!</span>
+<a name="l00243"></a>00243     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *StartValue;
+<a name="l00244"></a>00244     <span class="comment">// The instruction who's value is used outside the loop.</span>
+<a name="l00245"></a>00245     <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *LoopExitInstr;
+<a name="l00246"></a>00246     <span class="comment">// The kind of the reduction.</span>
+<a name="l00247"></a>00247     ReductionKind <a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a>;
+<a name="l00248"></a>00248   };
+<a name="l00249"></a>00249 
+<a name="l00250"></a>00250   <span class="comment">// This POD struct holds information about the memory runtime legality</span>
+<a name="l00251"></a>00251   <span class="comment">// check that a group of pointers do not overlap.</span>
+<a name="l00252"></a>00252   <span class="keyword">struct </span>RuntimePointerCheck {<span class="comment"></span>
+<a name="l00253"></a>00253 <span class="comment">    /// This flag indicates if we need to add the runtime check.</span>
+<a name="l00254"></a>00254 <span class="comment"></span>    <span class="keywordtype">bool</span> Need;<span class="comment"></span>
+<a name="l00255"></a>00255 <span class="comment">    /// Holds the pointers that we need to check.</span>
+<a name="l00256"></a>00256 <span class="comment"></span>    <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Value*, 2></a> Pointers;
+<a name="l00257"></a>00257   };
+<a name="l00258"></a>00258 <span class="comment"></span>
+<a name="l00259"></a>00259 <span class="comment">  /// ReductionList contains the reduction descriptors for all</span>
+<a name="l00260"></a>00260 <span class="comment">  /// of the reductions that were found in the loop.</span>
+<a name="l00261"></a>00261 <span class="comment"></span>  <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1DenseMap.html">DenseMap<PHINode*, ReductionDescriptor></a> ReductionList;
+<a name="l00262"></a>00262 <span class="comment"></span>
+<a name="l00263"></a>00263 <span class="comment">  /// Returns true if it is legal to vectorize this loop.</span>
+<a name="l00264"></a>00264 <span class="comment">  /// This does not mean that it is profitable to vectorize this</span>
+<a name="l00265"></a>00265 <span class="comment">  /// loop, only that it is legal to do so.</span>
+<a name="l00266"></a>00266 <span class="comment"></span>  <span class="keywordtype">bool</span> canVectorize();
+<a name="l00267"></a>00267 <span class="comment"></span>
+<a name="l00268"></a>00268 <span class="comment">  /// Returns the Induction variable.</span>
+<a name="l00269"></a>00269 <span class="comment"></span>  <a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *getInduction() {<span class="keywordflow">return</span> Induction;}
+<a name="l00270"></a>00270 <span class="comment"></span>
+<a name="l00271"></a>00271 <span class="comment">  /// Returns the reduction variables found in the loop.</span>
+<a name="l00272"></a>00272 <span class="comment"></span>  ReductionList *getReductionVars() { <span class="keywordflow">return</span> &Reductions; }
+<a name="l00273"></a>00273 <span class="comment"></span>
+<a name="l00274"></a>00274 <span class="comment">  /// Check if the pointer returned by this GEP is consecutive</span>
+<a name="l00275"></a>00275 <span class="comment">  /// when the index is vectorized. This happens when the last</span>
+<a name="l00276"></a>00276 <span class="comment">  /// index of the GEP is consecutive, like the induction variable.</span>
+<a name="l00277"></a>00277 <span class="comment">  /// This check allows us to vectorize A[idx] into a wide load/store.</span>
+<a name="l00278"></a>00278 <span class="comment"></span>  <span class="keywordtype">bool</span> isConsecutiveGep(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Ptr);
+<a name="l00279"></a>00279 <span class="comment"></span>
+<a name="l00280"></a>00280 <span class="comment">  /// Returns true if the value V is uniform within the loop.</span>
+<a name="l00281"></a>00281 <span class="comment"></span>  <span class="keywordtype">bool</span> isUniform(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *V);
+<a name="l00282"></a>00282 <span class="comment"></span>
+<a name="l00283"></a>00283 <span class="comment">  /// Returns true if this instruction will remain scalar after vectorization.</span>
+<a name="l00284"></a>00284 <span class="comment"></span>  <span class="keywordtype">bool</span> isUniformAfterVectorization(<a class="code" href="classllvm_1_1Instruction.html">Instruction</a>* <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {<span class="keywordflow">return</span> Uniforms.count(I);}
+<a name="l00285"></a>00285 <span class="comment"></span>
+<a name="l00286"></a>00286 <span class="comment">  /// Returns the information that we collected about runtime memory check.</span>
+<a name="l00287"></a>00287 <span class="comment"></span>  RuntimePointerCheck *getRuntimePointerCheck() {<span class="keywordflow">return</span> &PtrRtCheck; }
+<a name="l00288"></a>00288 <span class="keyword">private</span>:<span class="comment"></span>
+<a name="l00289"></a>00289 <span class="comment">  /// Check if a single basic block loop is vectorizable.</span>
+<a name="l00290"></a>00290 <span class="comment">  /// At this point we know that this is a loop with a constant trip count</span>
+<a name="l00291"></a>00291 <span class="comment">  /// and we only need to check individual instructions.</span>
+<a name="l00292"></a>00292 <span class="comment"></span>  <span class="keywordtype">bool</span> canVectorizeBlock(<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> &BB);
+<a name="l00293"></a>00293 <span class="comment"></span>
+<a name="l00294"></a>00294 <span class="comment">  /// When we vectorize loops we may change the order in which</span>
+<a name="l00295"></a>00295 <span class="comment">  /// we read and write from memory. This method checks if it is</span>
+<a name="l00296"></a>00296 <span class="comment">  /// legal to vectorize the code, considering only memory constrains.</span>
+<a name="l00297"></a>00297 <span class="comment">  /// Returns true if BB is vectorizable</span>
+<a name="l00298"></a>00298 <span class="comment"></span>  <span class="keywordtype">bool</span> canVectorizeMemory(<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> &BB);
+<a name="l00299"></a>00299 <span class="comment"></span>
+<a name="l00300"></a>00300 <span class="comment">  /// Returns True, if 'Phi' is the kind of reduction variable for type</span>
+<a name="l00301"></a>00301 <span class="comment">  /// 'Kind'. If this is a reduction variable, it adds it to ReductionList.</span>
+<a name="l00302"></a>00302 <span class="comment"></span>  <span class="keywordtype">bool</span> AddReductionVar(<a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *Phi, ReductionKind <a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a>);<span class="comment"></span>
+<a name="l00303"></a>00303 <span class="comment">  /// Returns true if the instruction I can be a reduction variable of type</span>
+<a name="l00304"></a>00304 <span class="comment">  /// 'Kind'.</span>
+<a name="l00305"></a>00305 <span class="comment"></span>  <span class="keywordtype">bool</span> isReductionInstr(<a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *I, ReductionKind Kind);<span class="comment"></span>
+<a name="l00306"></a>00306 <span class="comment">  /// Returns True, if 'Phi' is an induction variable.</span>
+<a name="l00307"></a>00307 <span class="comment"></span>  <span class="keywordtype">bool</span> isInductionVariable(<a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *Phi);<span class="comment"></span>
+<a name="l00308"></a>00308 <span class="comment">  /// Return true if can compute the address bounds of Ptr within the loop.</span>
+<a name="l00309"></a>00309 <span class="comment"></span>  <span class="keywordtype">bool</span> hasComputableBounds(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Ptr);
+<a name="l00310"></a>00310 <span class="comment"></span>
+<a name="l00311"></a>00311 <span class="comment">  /// The loop that we evaluate.</span>
+<a name="l00312"></a>00312 <span class="comment"></span>  <a class="code" href="classllvm_1_1Loop.html">Loop</a> *TheLoop;<span class="comment"></span>
+<a name="l00313"></a>00313 <span class="comment">  /// Scev analysis.</span>
+<a name="l00314"></a>00314 <span class="comment"></span>  <a class="code" href="classllvm_1_1ScalarEvolution.html">ScalarEvolution</a> *SE;<span class="comment"></span>
+<a name="l00315"></a>00315 <span class="comment">  /// DataLayout analysis.</span>
+<a name="l00316"></a>00316 <span class="comment"></span>  <a class="code" href="classllvm_1_1DataLayout.html">DataLayout</a> *DL;
+<a name="l00317"></a>00317 
+<a name="l00318"></a>00318   <span class="comment">//  ---  vectorization state --- //</span>
+<a name="l00319"></a>00319 <span class="comment"></span>
+<a name="l00320"></a>00320 <span class="comment">  /// Holds the induction variable.</span>
+<a name="l00321"></a>00321 <span class="comment"></span>  <a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *Induction;<span class="comment"></span>
+<a name="l00322"></a>00322 <span class="comment">  /// Holds the reduction variables.</span>
+<a name="l00323"></a>00323 <span class="comment"></span>  ReductionList Reductions;<span class="comment"></span>
+<a name="l00324"></a>00324 <span class="comment">  /// Allowed outside users. This holds the reduction</span>
+<a name="l00325"></a>00325 <span class="comment">  /// vars which can be accessed from outside the loop.</span>
+<a name="l00326"></a>00326 <span class="comment"></span>  <a class="code" href="classllvm_1_1SmallPtrSet.html">SmallPtrSet<Value*, 4></a> AllowedExit;<span class="comment"></span>
+<a name="l00327"></a>00327 <span class="comment">  /// This set holds the variables which are known to be uniform after</span>
+<a name="l00328"></a>00328 <span class="comment">  /// vectorization.</span>
+<a name="l00329"></a>00329 <span class="comment"></span>  <a class="code" href="classllvm_1_1SmallPtrSet.html">SmallPtrSet<Instruction*, 4></a> Uniforms;<span class="comment"></span>
+<a name="l00330"></a>00330 <span class="comment">  /// We need to check that all of the pointers in this list are disjoint</span>
+<a name="l00331"></a>00331 <span class="comment">  /// at runtime.</span>
+<a name="l00332"></a>00332 <span class="comment"></span>  RuntimePointerCheck PtrRtCheck;
+<a name="l00333"></a>00333 };
+<a name="l00334"></a>00334 <span class="comment"></span>
+<a name="l00335"></a>00335 <span class="comment">/// LoopVectorizationCostModel - estimates the expected speedups due to</span>
+<a name="l00336"></a>00336 <span class="comment">/// vectorization.</span>
+<a name="l00337"></a>00337 <span class="comment">/// In many cases vectorization is not profitable. This can happen because</span>
+<a name="l00338"></a>00338 <span class="comment">/// of a number of reasons. In this class we mainly attempt to predict</span>
+<a name="l00339"></a>00339 <span class="comment">/// the expected speedup/slowdowns due to the supported instruction set.</span>
+<a name="l00340"></a>00340 <span class="comment">/// We use the VectorTargetTransformInfo to query the different backends</span>
+<a name="l00341"></a>00341 <span class="comment">/// for the cost of different operations.</span>
+<a name="l00342"></a>00342 <span class="comment"></span><span class="keyword">class </span>LoopVectorizationCostModel {
+<a name="l00343"></a>00343 <span class="keyword">public</span>:<span class="comment"></span>
+<a name="l00344"></a>00344 <span class="comment">  /// C'tor.</span>
+<a name="l00345"></a>00345 <span class="comment"></span>  LoopVectorizationCostModel(<a class="code" href="classllvm_1_1Loop.html">Loop</a> *Lp, <a class="code" href="classllvm_1_1ScalarEvolution.html">ScalarEvolution</a> *Se,
+<a name="l00346"></a>00346                              LoopVectorizationLegality *Leg,
+<a name="l00347"></a>00347                              <span class="keyword">const</span> <a class="code" href="classllvm_1_1VectorTargetTransformInfo.html">VectorTargetTransformInfo</a> *Vtti):
+<a name="l00348"></a>00348   TheLoop(Lp), SE(Se), Legal(Leg), VTTI(Vtti) { }
+<a name="l00349"></a>00349 <span class="comment"></span>
+<a name="l00350"></a>00350 <span class="comment">  /// Returns the most profitable vectorization factor for the loop that is</span>
+<a name="l00351"></a>00351 <span class="comment">  /// smaller or equal to the VF argument. This method checks every power</span>
+<a name="l00352"></a>00352 <span class="comment">  /// of two up to VF.</span>
+<a name="l00353"></a>00353 <span class="comment"></span>  <span class="keywordtype">unsigned</span> findBestVectorizationFactor(<span class="keywordtype">unsigned</span> VF = 8);
+<a name="l00354"></a>00354 
+<a name="l00355"></a>00355 <span class="keyword">private</span>:<span class="comment"></span>
+<a name="l00356"></a>00356 <span class="comment">  /// Returns the expected execution cost. The unit of the cost does</span>
+<a name="l00357"></a>00357 <span class="comment">  /// not matter because we use the 'cost' units to compare different</span>
+<a name="l00358"></a>00358 <span class="comment">  /// vector widths. The cost that is returned is *not* normalized by</span>
+<a name="l00359"></a>00359 <span class="comment">  /// the factor width.</span>
+<a name="l00360"></a>00360 <span class="comment"></span>  <span class="keywordtype">unsigned</span> expectedCost(<span class="keywordtype">unsigned</span> VF);
+<a name="l00361"></a>00361 <span class="comment"></span>
+<a name="l00362"></a>00362 <span class="comment">  /// Returns the execution time cost of an instruction for a given vector</span>
+<a name="l00363"></a>00363 <span class="comment">  /// width. Vector width of one means scalar.</span>
+<a name="l00364"></a>00364 <span class="comment"></span>  <span class="keywordtype">unsigned</span> getInstructionCost(<a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>, <span class="keywordtype">unsigned</span> VF);
+<a name="l00365"></a>00365 <span class="comment"></span>
+<a name="l00366"></a>00366 <span class="comment">  /// A helper function for converting Scalar types to vector types.</span>
+<a name="l00367"></a>00367 <span class="comment">  /// If the incoming type is void, we return void. If the VF is 1, we return</span>
+<a name="l00368"></a>00368 <span class="comment">  /// the scalar type.</span>
+<a name="l00369"></a>00369 <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="classllvm_1_1Type.html">Type</a>* ToVectorTy(<a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="namespacellvm_1_1NVPTX_1_1PTXLdStInstCode.html#a91119cbee2be000c528a690252aee07ca09c68d67f7dbfa6cc77eaf73aa535217">Scalar</a>, <span class="keywordtype">unsigned</span> VF);
+<a name="l00370"></a>00370 <span class="comment"></span>
+<a name="l00371"></a>00371 <span class="comment">  /// The loop that we evaluate.</span>
+<a name="l00372"></a>00372 <span class="comment"></span>  <a class="code" href="classllvm_1_1Loop.html">Loop</a> *TheLoop;<span class="comment"></span>
+<a name="l00373"></a>00373 <span class="comment">  /// Scev analysis.</span>
+<a name="l00374"></a>00374 <span class="comment"></span>  <a class="code" href="classllvm_1_1ScalarEvolution.html">ScalarEvolution</a> *SE;
+<a name="l00375"></a>00375 <span class="comment"></span>
+<a name="l00376"></a>00376 <span class="comment">  /// Vectorization legality.</span>
+<a name="l00377"></a>00377 <span class="comment"></span>  LoopVectorizationLegality *Legal;<span class="comment"></span>
+<a name="l00378"></a>00378 <span class="comment">  /// Vector target information.</span>
+<a name="l00379"></a>00379 <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classllvm_1_1VectorTargetTransformInfo.html">VectorTargetTransformInfo</a> *VTTI;
+<a name="l00380"></a>00380 };
+<a name="l00381"></a>00381 
+<a name="l00382"></a>00382 <span class="keyword">struct </span>LoopVectorize : <span class="keyword">public</span> <a class="code" href="classllvm_1_1LoopPass.html">LoopPass</a> {
+<a name="l00383"></a>00383   <span class="keyword">static</span> <span class="keywordtype">char</span> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>; <span class="comment">// Pass identification, replacement for typeid</span>
+<a name="l00384"></a>00384 
+<a name="l00385"></a>00385   LoopVectorize() : <a class="code" href="classllvm_1_1LoopPass.html">LoopPass</a>(<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>) {
+<a name="l00386"></a>00386     <a class="code" href="namespacellvm.html#a6feec53bc62dc3b5677f0b7c066535d3">initializeLoopVectorizePass</a>(*<a class="code" href="classllvm_1_1PassRegistry.html#a05a729900b76c89e808c6c3094921b2f">PassRegistry::getPassRegistry</a>());
+<a name="l00387"></a>00387   }
+<a name="l00388"></a>00388 
+<a name="l00389"></a>00389   <a class="code" href="classllvm_1_1ScalarEvolution.html">ScalarEvolution</a> *SE;
+<a name="l00390"></a>00390   <a class="code" href="classllvm_1_1DataLayout.html">DataLayout</a> *DL;
+<a name="l00391"></a>00391   <a class="code" href="classllvm_1_1LoopInfo.html">LoopInfo</a> *<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>;
+<a name="l00392"></a>00392   <a class="code" href="classllvm_1_1TargetTransformInfo.html">TargetTransformInfo</a> *TTI;
+<a name="l00393"></a>00393   <a class="code" href="classllvm_1_1DominatorTree.html">DominatorTree</a> *DT;
+<a name="l00394"></a>00394 
+<a name="l00395"></a>00395   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> runOnLoop(<a class="code" href="classllvm_1_1Loop.html">Loop</a> *L, <a class="code" href="classllvm_1_1LPPassManager.html">LPPassManager</a> &LPM) {
+<a name="l00396"></a>00396     <span class="comment">// We only vectorize innermost loops.</span>
+<a name="l00397"></a>00397     <span class="keywordflow">if</span> (!L-><a class="code" href="classllvm_1_1LoopBase.html#ab191396dd1d8556d8e0a057f7fd2aaab">empty</a>())
+<a name="l00398"></a>00398       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00399"></a>00399 
+<a name="l00400"></a>00400     SE = &getAnalysis<ScalarEvolution>();
+<a name="l00401"></a>00401     DL = getAnalysisIfAvailable<DataLayout>();
+<a name="l00402"></a>00402     <a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a> = &getAnalysis<LoopInfo>();
+<a name="l00403"></a>00403     TTI = getAnalysisIfAvailable<TargetTransformInfo>();
+<a name="l00404"></a>00404     DT = &getAnalysis<DominatorTree>();
+<a name="l00405"></a>00405 
+<a name="l00406"></a>00406     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Checking a loop in \""</span> <<
+<a name="l00407"></a>00407           L-><a class="code" href="classllvm_1_1LoopBase.html#ac4f141a355e5898255f2cbc57c5b54c3">getHeader</a>()-><a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>()-><a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>() << <span class="stringliteral">"\"\n"</span>);
+<a name="l00408"></a>00408 
+<a name="l00409"></a>00409     <span class="comment">// Check if it is legal to vectorize the loop.</span>
+<a name="l00410"></a>00410     LoopVectorizationLegality LVL(L, SE, DL);
+<a name="l00411"></a>00411     <span class="keywordflow">if</span> (!LVL.canVectorize()) {
+<a name="l00412"></a>00412       <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Not vectorizing.\n"</span>);
+<a name="l00413"></a>00413       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00414"></a>00414     }
+<a name="l00415"></a>00415 
+<a name="l00416"></a>00416     <span class="comment">// Select the preffered vectorization factor.</span>
+<a name="l00417"></a>00417     <span class="keywordtype">unsigned</span> VF = 1;
+<a name="l00418"></a>00418     <span class="keywordflow">if</span> (<a class="code" href="LoopVectorize_8cpp.html#a9204bc885c8d4ab574edbab8cb5a6b09">VectorizationFactor</a> == 0) {
+<a name="l00419"></a>00419       <span class="keyword">const</span> <a class="code" href="classllvm_1_1VectorTargetTransformInfo.html">VectorTargetTransformInfo</a> *VTTI = 0;
+<a name="l00420"></a>00420       <span class="keywordflow">if</span> (TTI)
+<a name="l00421"></a>00421         VTTI = TTI->getVectorTargetTransformInfo();
+<a name="l00422"></a>00422       <span class="comment">// Use the cost model.</span>
+<a name="l00423"></a>00423       LoopVectorizationCostModel CM(L, SE, &LVL, VTTI);
+<a name="l00424"></a>00424       VF = CM.findBestVectorizationFactor();
+<a name="l00425"></a>00425 
+<a name="l00426"></a>00426       <span class="keywordflow">if</span> (VF == 1) {
+<a name="l00427"></a>00427         <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Vectorization is possible but not beneficial.\n"</span>);
+<a name="l00428"></a>00428         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00429"></a>00429       }
+<a name="l00430"></a>00430 
+<a name="l00431"></a>00431     } <span class="keywordflow">else</span> {
+<a name="l00432"></a>00432       <span class="comment">// Use the user command flag.</span>
+<a name="l00433"></a>00433       VF = <a class="code" href="LoopVectorize_8cpp.html#a9204bc885c8d4ab574edbab8cb5a6b09">VectorizationFactor</a>;
+<a name="l00434"></a>00434     }
+<a name="l00435"></a>00435 
+<a name="l00436"></a>00436     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found a vectorizable loop ("</span><< VF << <span class="stringliteral">") in "</span><<
+<a name="l00437"></a>00437           L-><a class="code" href="classllvm_1_1LoopBase.html#ac4f141a355e5898255f2cbc57c5b54c3">getHeader</a>()-><a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>()-><a class="code" href="classllvm_1_1GlobalValue.html#a9e1fc23a17e97d2d1732e753ae9251ac">getParent</a>()-><a class="code" href="classllvm_1_1Module.html#a339f163decf5f2c881937600d1e953fa">getModuleIdentifier</a>()<<
+<a name="l00438"></a>00438           <span class="stringliteral">"\n"</span>);
+<a name="l00439"></a>00439 
+<a name="l00440"></a>00440     <span class="comment">// If we decided that it is *legal* to vectorizer the loop then do it.</span>
+<a name="l00441"></a>00441     SingleBlockLoopVectorizer LB(L, SE, LI, DT, &LPM, VF);
+<a name="l00442"></a>00442     LB.vectorize(&LVL);
+<a name="l00443"></a>00443 
+<a name="l00444"></a>00444     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a36798313569555c6f79b4ac8cc0bf63d">verifyFunction</a>(*L-><a class="code" href="classllvm_1_1LoopBase.html#ac4f141a355e5898255f2cbc57c5b54c3">getHeader</a>()-><a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>()));
+<a name="l00445"></a>00445     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00446"></a>00446   }
+<a name="l00447"></a>00447 
+<a name="l00448"></a>00448   <span class="keyword">virtual</span> <span class="keywordtype">void</span> getAnalysisUsage(<a class="code" href="classllvm_1_1AnalysisUsage.html">AnalysisUsage</a> &AU)<span class="keyword"> const </span>{
+<a name="l00449"></a>00449     <a class="code" href="classllvm_1_1Pass.html#a048082a5be9ae0d8901ea64de59e5c8f">LoopPass::getAnalysisUsage</a>(AU);
+<a name="l00450"></a>00450     AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#a053677ebc731b47a534f841b11b5cf0c">addRequiredID</a>(<a class="code" href="namespacellvm.html#a472515fc67a5fb572afeb00aa2609cca">LoopSimplifyID</a>);
+<a name="l00451"></a>00451     AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#a053677ebc731b47a534f841b11b5cf0c">addRequiredID</a>(<a class="code" href="namespacellvm.html#a3e3d3c6d4e33a4f5ca579ee7939f0349">LCSSAID</a>);
+<a name="l00452"></a>00452     AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#ae5c60fd282ee894c87ea02c3f0fcb6d0">addRequired</a><<a class="code" href="classllvm_1_1LoopInfo.html">LoopInfo</a>>();
+<a name="l00453"></a>00453     AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#ae5c60fd282ee894c87ea02c3f0fcb6d0">addRequired</a><<a class="code" href="classllvm_1_1ScalarEvolution.html">ScalarEvolution</a>>();
+<a name="l00454"></a>00454     AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#ae5c60fd282ee894c87ea02c3f0fcb6d0">addRequired</a><<a class="code" href="classllvm_1_1DominatorTree.html">DominatorTree</a>>();
+<a name="l00455"></a>00455     AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#a884f90190bca4bd354f2d5c91c264028">addPreserved</a><<a class="code" href="classllvm_1_1LoopInfo.html">LoopInfo</a>>();
+<a name="l00456"></a>00456     AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#a884f90190bca4bd354f2d5c91c264028">addPreserved</a><<a class="code" href="classllvm_1_1DominatorTree.html">DominatorTree</a>>();
+<a name="l00457"></a>00457   }
+<a name="l00458"></a>00458 
+<a name="l00459"></a>00459 };
+<a name="l00460"></a>00460 
+<a name="l00461"></a>00461 <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *SingleBlockLoopVectorizer::getBroadcastInstrs(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *V) {
+<a name="l00462"></a>00462   <span class="comment">// Instructions that access the old induction variable</span>
+<a name="l00463"></a>00463   <span class="comment">// actually want to get the new one.</span>
+<a name="l00464"></a>00464   <span class="keywordflow">if</span> (V == OldInduction)
+<a name="l00465"></a>00465     V = Induction;
+<a name="l00466"></a>00466   <span class="comment">// Create the types.</span>
+<a name="l00467"></a>00467   <a class="code" href="classllvm_1_1LLVMContext.html">LLVMContext</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a> = V-><a class="code" href="classllvm_1_1Value.html#af85a4828b6b5a8de7fc0a55cc0e5b52f" title="All values hold a context through their type.">getContext</a>();
+<a name="l00468"></a>00468   <a class="code" href="classllvm_1_1Type.html">Type</a> *VTy = <a class="code" href="classllvm_1_1VectorType.html#ab43657ed1abe2e2ed3a6a394f233ebd0">VectorType::get</a>(V-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(), VF);
+<a name="l00469"></a>00469   <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="X86ISelDAGToDAG_8cpp.html#a96c1aa0eca38be914b9564cd17c82f8aa68744fefeb088e8bae7ec95a0c0532ac">I32</a> = <a class="code" href="classllvm_1_1Type.html#a30dd396c5b40cd86c1591872e574ccdf">IntegerType::getInt32Ty</a>(C);
+<a name="l00470"></a>00470   <a class="code" href="classllvm_1_1Constant.html" title="LLVM Constant Representation.">Constant</a> *Zero = <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(I32, 0);
+<a name="l00471"></a>00471   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Zeros = <a class="code" href="classllvm_1_1ConstantAggregateZero.html#abfa1cf8b4348407b167f93bc7c01055f">ConstantAggregateZero::get</a>(<a class="code" href="classllvm_1_1VectorType.html#ab43657ed1abe2e2ed3a6a394f233ebd0">VectorType::get</a>(I32, VF));
+<a name="l00472"></a>00472   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *UndefVal = <a class="code" href="classllvm_1_1UndefValue.html#a4ae5ff22b700a42bcc5d889233721335">UndefValue::get</a>(VTy);
+<a name="l00473"></a>00473   <span class="comment">// Insert the value into a new vector.</span>
+<a name="l00474"></a>00474   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *SingleElem = Builder.CreateInsertElement(UndefVal, V, Zero);
+<a name="l00475"></a>00475   <span class="comment">// Broadcast the scalar into all locations in the vector.</span>
+<a name="l00476"></a>00476   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Shuf = Builder.CreateShuffleVector(SingleElem, UndefVal, Zeros,
+<a name="l00477"></a>00477                                              <span class="stringliteral">"broadcast"</span>);
+<a name="l00478"></a>00478   <span class="comment">// We are accessing the induction variable. Make sure to promote the</span>
+<a name="l00479"></a>00479   <span class="comment">// index for each consecutive SIMD lane. This adds 0,1,2 ... to all lanes.</span>
+<a name="l00480"></a>00480   <span class="keywordflow">if</span> (V == Induction)
+<a name="l00481"></a>00481     <span class="keywordflow">return</span> getConsecutiveVector(Shuf);
+<a name="l00482"></a>00482   <span class="keywordflow">return</span> Shuf;
+<a name="l00483"></a>00483 }
+<a name="l00484"></a>00484 
+<a name="l00485"></a>00485 <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *SingleBlockLoopVectorizer::getConsecutiveVector(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>* Val) {
+<a name="l00486"></a>00486   assert(Val-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()-><a class="code" href="classllvm_1_1Type.html#a6f725580f7834e2ca90762965866dad4">isVectorTy</a>() && <span class="stringliteral">"Must be a vector"</span>);
+<a name="l00487"></a>00487   assert(Val-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()-><a class="code" href="classllvm_1_1Type.html#a8eafa71cf399da8f21b2af5549f3f9e7">getScalarType</a>()-><a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">isIntegerTy</a>() &&
+<a name="l00488"></a>00488          <span class="stringliteral">"Elem must be an integer"</span>);
+<a name="l00489"></a>00489   <span class="comment">// Create the types.</span>
+<a name="l00490"></a>00490   <a class="code" href="classllvm_1_1Type.html">Type</a> *ITy = Val-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()-><a class="code" href="classllvm_1_1Type.html#a8eafa71cf399da8f21b2af5549f3f9e7">getScalarType</a>();
+<a name="l00491"></a>00491   <a class="code" href="classllvm_1_1VectorType.html">VectorType</a> *Ty = cast<VectorType>(Val-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>());
+<a name="l00492"></a>00492   <span class="keywordtype">unsigned</span> VLen = Ty-><a class="code" href="classllvm_1_1VectorType.html#a580510fa692dccfb26d0e967d8f164e7" title="Return the number of elements in the Vector type.">getNumElements</a>();
+<a name="l00493"></a>00493   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Constant*, 8></a> Indices;
+<a name="l00494"></a>00494 
+<a name="l00495"></a>00495   <span class="comment">// Create a vector of consecutive numbers from zero to VF.</span>
+<a name="l00496"></a>00496   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < VLen; ++i)
+<a name="l00497"></a>00497     Indices.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(<a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(ITy, i));
+<a name="l00498"></a>00498 
+<a name="l00499"></a>00499   <span class="comment">// Add the consecutive indices to the vector value.</span>
+<a name="l00500"></a>00500   <a class="code" href="classllvm_1_1Constant.html" title="LLVM Constant Representation.">Constant</a> *Cv = <a class="code" href="classllvm_1_1ConstantVector.html#ade9fa017ca3aa82f7694a47090547bc1">ConstantVector::get</a>(Indices);
+<a name="l00501"></a>00501   assert(Cv-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>() == Val-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>() && <span class="stringliteral">"Invalid consecutive vec"</span>);
+<a name="l00502"></a>00502   <span class="keywordflow">return</span> Builder.CreateAdd(Val, Cv, <span class="stringliteral">"induction"</span>);
+<a name="l00503"></a>00503 }
+<a name="l00504"></a>00504 
+<a name="l00505"></a>00505 <span class="keywordtype">bool</span> LoopVectorizationLegality::isConsecutiveGep(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Ptr) {
+<a name="l00506"></a>00506   <a class="code" href="classllvm_1_1GetElementPtrInst.html">GetElementPtrInst</a> *Gep = dyn_cast_or_null<GetElementPtrInst>(Ptr);
+<a name="l00507"></a>00507   <span class="keywordflow">if</span> (!Gep)
+<a name="l00508"></a>00508     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00509"></a>00509 
+<a name="l00510"></a>00510   <span class="keywordtype">unsigned</span> NumOperands = Gep-><a class="code" href="classllvm_1_1User.html#a2f81e0c1fc6554df7ad2eafabf5fc5a5">getNumOperands</a>();
+<a name="l00511"></a>00511   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *LastIndex = Gep-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(NumOperands - 1);
+<a name="l00512"></a>00512 
+<a name="l00513"></a>00513   <span class="comment">// Check that all of the gep indices are uniform except for the last.</span>
+<a name="l00514"></a>00514   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < NumOperands - 1; ++i)
+<a name="l00515"></a>00515     <span class="keywordflow">if</span> (!SE->isLoopInvariant(SE->getSCEV(Gep-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(i)), TheLoop))
+<a name="l00516"></a>00516       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00517"></a>00517 
+<a name="l00518"></a>00518   <span class="comment">// We can emit wide load/stores only of the last index is the induction</span>
+<a name="l00519"></a>00519   <span class="comment">// variable.</span>
+<a name="l00520"></a>00520   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEV.html">SCEV</a> *Last = SE->getSCEV(LastIndex);
+<a name="l00521"></a>00521   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEVAddRecExpr.html">SCEVAddRecExpr</a> *AR = dyn_cast<SCEVAddRecExpr>(Last)) {
+<a name="l00522"></a>00522     <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEV.html">SCEV</a> *Step = AR->getStepRecurrence(*SE);
+<a name="l00523"></a>00523 
+<a name="l00524"></a>00524     <span class="comment">// The memory is consecutive because the last index is consecutive</span>
+<a name="l00525"></a>00525     <span class="comment">// and all other indices are loop invariant.</span>
+<a name="l00526"></a>00526     <span class="keywordflow">if</span> (Step-><a class="code" href="classllvm_1_1SCEV.html#a3935a9de0ebdf3dc625cfb28e35bd009">isOne</a>())
+<a name="l00527"></a>00527       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00528"></a>00528   }
+<a name="l00529"></a>00529 
+<a name="l00530"></a>00530   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00531"></a>00531 }
+<a name="l00532"></a>00532 
+<a name="l00533"></a>00533 <span class="keywordtype">bool</span> LoopVectorizationLegality::isUniform(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *V) {
+<a name="l00534"></a>00534   <span class="keywordflow">return</span> (SE->isLoopInvariant(SE->getSCEV(V), TheLoop));
+<a name="l00535"></a>00535 }
+<a name="l00536"></a>00536 
+<a name="l00537"></a>00537 <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *SingleBlockLoopVectorizer::getVectorValue(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *V) {
+<a name="l00538"></a>00538   assert(!V-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()-><a class="code" href="classllvm_1_1Type.html#a6f725580f7834e2ca90762965866dad4">isVectorTy</a>() && <span class="stringliteral">"Can't widen a vector"</span>);
+<a name="l00539"></a>00539   <span class="comment">// If we saved a vectorized copy of V, use it.</span>
+<a name="l00540"></a>00540   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *&MapEntry = WidenMap[V];
+<a name="l00541"></a>00541   <span class="keywordflow">if</span> (MapEntry)
+<a name="l00542"></a>00542     <span class="keywordflow">return</span> MapEntry;
+<a name="l00543"></a>00543 
+<a name="l00544"></a>00544   <span class="comment">// Broadcast V and save the value for future uses.</span>
+<a name="l00545"></a>00545   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *B = getBroadcastInstrs(V);
+<a name="l00546"></a>00546   MapEntry = B;
+<a name="l00547"></a>00547   <span class="keywordflow">return</span> B;
+<a name="l00548"></a>00548 }
+<a name="l00549"></a>00549 
+<a name="l00550"></a>00550 <a class="code" href="classllvm_1_1Constant.html" title="LLVM Constant Representation.">Constant</a>*
+<a name="l00551"></a>00551 SingleBlockLoopVectorizer::getUniformVector(<span class="keywordtype">unsigned</span> Val, <a class="code" href="classllvm_1_1Type.html">Type</a>* ScalarTy) {
+<a name="l00552"></a>00552   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Constant*, 8></a> Indices;
+<a name="l00553"></a>00553   <span class="comment">// Create a vector of consecutive numbers from zero to VF.</span>
+<a name="l00554"></a>00554   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < VF; ++i)
+<a name="l00555"></a>00555     Indices.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(<a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(ScalarTy, Val, <span class="keyword">true</span>));
+<a name="l00556"></a>00556 
+<a name="l00557"></a>00557   <span class="comment">// Add the consecutive indices to the vector value.</span>
+<a name="l00558"></a>00558   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1ConstantVector.html#ade9fa017ca3aa82f7694a47090547bc1">ConstantVector::get</a>(Indices);
+<a name="l00559"></a>00559 }
+<a name="l00560"></a>00560 
+<a name="l00561"></a>00561 <span class="keywordtype">void</span> SingleBlockLoopVectorizer::scalarizeInstruction(<a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *Instr) {
+<a name="l00562"></a>00562   assert(!Instr-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()-><a class="code" href="classllvm_1_1Type.html#a0a32c2cb0342323dc78f6aa31d7e581e">isAggregateType</a>() && <span class="stringliteral">"Can't handle vectors"</span>);
+<a name="l00563"></a>00563   <span class="comment">// Holds vector parameters or scalars, in case of uniform vals.</span>
+<a name="l00564"></a>00564   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Value*, 8></a> Params;
+<a name="l00565"></a>00565 
+<a name="l00566"></a>00566   <span class="comment">// Find all of the vectorized parameters.</span>
+<a name="l00567"></a>00567   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> op = 0, e = Instr-><a class="code" href="classllvm_1_1User.html#a2f81e0c1fc6554df7ad2eafabf5fc5a5">getNumOperands</a>(); op != e; ++op) {
+<a name="l00568"></a>00568     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *SrcOp = Instr-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(op);
+<a name="l00569"></a>00569 
+<a name="l00570"></a>00570     <span class="comment">// If we are accessing the old induction variable, use the new one.</span>
+<a name="l00571"></a>00571     <span class="keywordflow">if</span> (SrcOp == OldInduction) {
+<a name="l00572"></a>00572       Params.push_back(getBroadcastInstrs(Induction));
+<a name="l00573"></a>00573       <span class="keywordflow">continue</span>;
+<a name="l00574"></a>00574     }
+<a name="l00575"></a>00575 
+<a name="l00576"></a>00576     <span class="comment">// Try using previously calculated values.</span>
+<a name="l00577"></a>00577     <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *SrcInst = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1Instruction.html">Instruction</a>>(SrcOp);
+<a name="l00578"></a>00578 
+<a name="l00579"></a>00579     <span class="comment">// If the src is an instruction that appeared earlier in the basic block</span>
+<a name="l00580"></a>00580     <span class="comment">// then it should already be vectorized.</span>
+<a name="l00581"></a>00581     <span class="keywordflow">if</span> (SrcInst && SrcInst-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>() == Instr-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>()) {
+<a name="l00582"></a>00582       assert(WidenMap.count(SrcInst) && <span class="stringliteral">"Source operand is unavailable"</span>);
+<a name="l00583"></a>00583       <span class="comment">// The parameter is a vector value from earlier.</span>
+<a name="l00584"></a>00584       Params.push_back(WidenMap[SrcInst]);
+<a name="l00585"></a>00585     } <span class="keywordflow">else</span> {
+<a name="l00586"></a>00586       <span class="comment">// The parameter is a scalar from outside the loop. Maybe even a constant.</span>
+<a name="l00587"></a>00587       Params.push_back(SrcOp);
+<a name="l00588"></a>00588     }
+<a name="l00589"></a>00589   }
+<a name="l00590"></a>00590 
+<a name="l00591"></a>00591   assert(Params.size() == Instr-><a class="code" href="classllvm_1_1User.html#a2f81e0c1fc6554df7ad2eafabf5fc5a5">getNumOperands</a>() &&
+<a name="l00592"></a>00592          <span class="stringliteral">"Invalid number of operands"</span>);
+<a name="l00593"></a>00593 
+<a name="l00594"></a>00594   <span class="comment">// Does this instruction return a value ?</span>
+<a name="l00595"></a>00595   <span class="keywordtype">bool</span> IsVoidRetTy = Instr-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()-><a class="code" href="classllvm_1_1Type.html#af5c7041df3ad5edffe5da17b5264c1fc" title="isVoidTy - Return true if this is 'void'.">isVoidTy</a>();
+<a name="l00596"></a>00596   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *VecResults = 0;
+<a name="l00597"></a>00597 
+<a name="l00598"></a>00598   <span class="comment">// If we have a return value, create an empty vector. We place the scalarized</span>
+<a name="l00599"></a>00599   <span class="comment">// instructions in this vector.</span>
+<a name="l00600"></a>00600   <span class="keywordflow">if</span> (!IsVoidRetTy)
+<a name="l00601"></a>00601     VecResults = <a class="code" href="classllvm_1_1UndefValue.html#a4ae5ff22b700a42bcc5d889233721335">UndefValue::get</a>(<a class="code" href="classllvm_1_1VectorType.html#ab43657ed1abe2e2ed3a6a394f233ebd0">VectorType::get</a>(Instr-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(), VF));
+<a name="l00602"></a>00602 
+<a name="l00603"></a>00603   <span class="comment">// For each scalar that we create:</span>
+<a name="l00604"></a>00604   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < VF; ++i) {
+<a name="l00605"></a>00605     <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *Cloned = Instr-><a class="code" href="classllvm_1_1Instruction.html#af6aad0c9ba7b8720130235c9621b55b5">clone</a>();
+<a name="l00606"></a>00606     <span class="keywordflow">if</span> (!IsVoidRetTy)
+<a name="l00607"></a>00607       Cloned-><a class="code" href="classllvm_1_1Value.html#a35ee267850af7c235474a8c46c7ac5af">setName</a>(Instr-><a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>() + <span class="stringliteral">".cloned"</span>);
+<a name="l00608"></a>00608     <span class="comment">// Replace the operands of the cloned instrucions with extracted scalars.</span>
+<a name="l00609"></a>00609     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> op = 0, e = Instr-><a class="code" href="classllvm_1_1User.html#a2f81e0c1fc6554df7ad2eafabf5fc5a5">getNumOperands</a>(); op != e; ++op) {
+<a name="l00610"></a>00610       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Op = Params[op];
+<a name="l00611"></a>00611       <span class="comment">// Param is a vector. Need to extract the right lane.</span>
+<a name="l00612"></a>00612       <span class="keywordflow">if</span> (Op-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()-><a class="code" href="classllvm_1_1Type.html#a6f725580f7834e2ca90762965866dad4">isVectorTy</a>())
+<a name="l00613"></a>00613         Op = Builder.CreateExtractElement(Op, Builder.getInt32(i));
+<a name="l00614"></a>00614       Cloned-><a class="code" href="classllvm_1_1User.html#a5fa9b8e1842b354f64c1ba6be0a4a17f">setOperand</a>(op, Op);
+<a name="l00615"></a>00615     }
+<a name="l00616"></a>00616 
+<a name="l00617"></a>00617     <span class="comment">// Place the cloned scalar in the new loop.</span>
+<a name="l00618"></a>00618     Builder.Insert(Cloned);
+<a name="l00619"></a>00619 
+<a name="l00620"></a>00620     <span class="comment">// If the original scalar returns a value we need to place it in a vector</span>
+<a name="l00621"></a>00621     <span class="comment">// so that future users will be able to use it.</span>
+<a name="l00622"></a>00622     <span class="keywordflow">if</span> (!IsVoidRetTy)
+<a name="l00623"></a>00623       VecResults = Builder.CreateInsertElement(VecResults, Cloned,
+<a name="l00624"></a>00624                                                Builder.getInt32(i));
+<a name="l00625"></a>00625   }
+<a name="l00626"></a>00626 
+<a name="l00627"></a>00627   <span class="keywordflow">if</span> (!IsVoidRetTy)
+<a name="l00628"></a>00628     WidenMap[Instr] = VecResults;
+<a name="l00629"></a>00629 }
+<a name="l00630"></a>00630 
+<a name="l00631"></a>00631 <span class="keywordtype">void</span>
+<a name="l00632"></a>00632 SingleBlockLoopVectorizer::createEmptyLoop(LoopVectorizationLegality *Legal) {
+<a name="l00633"></a>00633   <span class="comment">/*</span>
+<a name="l00634"></a>00634 <span class="comment">   In this function we generate a new loop. The new loop will contain</span>
+<a name="l00635"></a>00635 <span class="comment">   the vectorized instructions while the old loop will continue to run the</span>
+<a name="l00636"></a>00636 <span class="comment">   scalar remainder.</span>
+<a name="l00637"></a>00637 <span class="comment"></span>
+<a name="l00638"></a>00638 <span class="comment">    [ ] <-- vector loop bypass.</span>
+<a name="l00639"></a>00639 <span class="comment">  /  |</span>
+<a name="l00640"></a>00640 <span class="comment"> /   v</span>
+<a name="l00641"></a>00641 <span class="comment">|   [ ]     <-- vector pre header.</span>
+<a name="l00642"></a>00642 <span class="comment">|    |</span>
+<a name="l00643"></a>00643 <span class="comment">|    v</span>
+<a name="l00644"></a>00644 <span class="comment">|   [  ] \</span>
+<a name="l00645"></a>00645 <span class="comment">|   [  ]_|   <-- vector loop.</span>
+<a name="l00646"></a>00646 <span class="comment">|    |</span>
+<a name="l00647"></a>00647 <span class="comment"> \   v</span>
+<a name="l00648"></a>00648 <span class="comment">   >[ ]   <--- middle-block.</span>
+<a name="l00649"></a>00649 <span class="comment">  /  |</span>
+<a name="l00650"></a>00650 <span class="comment"> /   v</span>
+<a name="l00651"></a>00651 <span class="comment">|   [ ]     <--- new preheader.</span>
+<a name="l00652"></a>00652 <span class="comment">|    |</span>
+<a name="l00653"></a>00653 <span class="comment">|    v</span>
+<a name="l00654"></a>00654 <span class="comment">|   [ ] \</span>
+<a name="l00655"></a>00655 <span class="comment">|   [ ]_|   <-- old scalar loop to handle remainder.</span>
+<a name="l00656"></a>00656 <span class="comment"> \   |</span>
+<a name="l00657"></a>00657 <span class="comment">  \  v</span>
+<a name="l00658"></a>00658 <span class="comment">   >[ ]     <-- exit block.</span>
+<a name="l00659"></a>00659 <span class="comment">   ...</span>
+<a name="l00660"></a>00660 <span class="comment">   */</span>
+<a name="l00661"></a>00661 
+<a name="l00662"></a>00662   OldInduction = Legal->getInduction();
+<a name="l00663"></a>00663   assert(OldInduction && <span class="stringliteral">"We must have a single phi node."</span>);
+<a name="l00664"></a>00664   <a class="code" href="classllvm_1_1Type.html">Type</a> *IdxTy = OldInduction->getType();
+<a name="l00665"></a>00665 
+<a name="l00666"></a>00666   <span class="comment">// Find the loop boundaries.</span>
+<a name="l00667"></a>00667   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEV.html">SCEV</a> *ExitCount = SE->getExitCount(OrigLoop, OrigLoop->getHeader());
+<a name="l00668"></a>00668   assert(ExitCount != SE->getCouldNotCompute() && <span class="stringliteral">"Invalid loop count"</span>);
+<a name="l00669"></a>00669 
+<a name="l00670"></a>00670   <span class="comment">// Get the total trip count from the count by adding 1.</span>
+<a name="l00671"></a>00671   ExitCount = SE->getAddExpr(ExitCount,
+<a name="l00672"></a>00672                              SE->getConstant(ExitCount->getType(), 1));
+<a name="l00673"></a>00673   <span class="comment">// We may need to extend the index in case there is a type mismatch.</span>
+<a name="l00674"></a>00674   <span class="comment">// We know that the count starts at zero and does not overflow.</span>
+<a name="l00675"></a>00675   <span class="comment">// We are using Zext because it should be less expensive.</span>
+<a name="l00676"></a>00676   <span class="keywordflow">if</span> (ExitCount->getType() != IdxTy)
+<a name="l00677"></a>00677     ExitCount = SE->getZeroExtendExpr(ExitCount, IdxTy);
+<a name="l00678"></a>00678 
+<a name="l00679"></a>00679   <span class="comment">// This is the original scalar-loop preheader.</span>
+<a name="l00680"></a>00680   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *BypassBlock = OrigLoop->getLoopPreheader();
+<a name="l00681"></a>00681   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *ExitBlock = OrigLoop->getExitBlock();
+<a name="l00682"></a>00682   assert(ExitBlock && <span class="stringliteral">"Must have an exit block"</span>);
+<a name="l00683"></a>00683 
+<a name="l00684"></a>00684   <span class="comment">// The loop index does not have to start at Zero. It starts with this value.</span>
+<a name="l00685"></a>00685   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *StartIdx = OldInduction->getIncomingValueForBlock(BypassBlock);
+<a name="l00686"></a>00686 
+<a name="l00687"></a>00687   assert(OrigLoop->getNumBlocks() == 1 && <span class="stringliteral">"Invalid loop"</span>);
+<a name="l00688"></a>00688   assert(BypassBlock && <span class="stringliteral">"Invalid loop structure"</span>);
+<a name="l00689"></a>00689 
+<a name="l00690"></a>00690   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *VectorPH =
+<a name="l00691"></a>00691       BypassBlock-><a class="code" href="classllvm_1_1BasicBlock.html#a19445f836d9e1ecb32cba27ec4338fff">splitBasicBlock</a>(BypassBlock-><a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>(), <span class="stringliteral">"vector.ph"</span>);
+<a name="l00692"></a>00692   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *VecBody = VectorPH-><a class="code" href="classllvm_1_1BasicBlock.html#a19445f836d9e1ecb32cba27ec4338fff">splitBasicBlock</a>(VectorPH-><a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>(),
+<a name="l00693"></a>00693                                                  <span class="stringliteral">"vector.body"</span>);
+<a name="l00694"></a>00694 
+<a name="l00695"></a>00695   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *MiddleBlock = VecBody-><a class="code" href="classllvm_1_1BasicBlock.html#a19445f836d9e1ecb32cba27ec4338fff">splitBasicBlock</a>(VecBody-><a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>(),
+<a name="l00696"></a>00696                                                   <span class="stringliteral">"middle.block"</span>);
+<a name="l00697"></a>00697   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *ScalarPH =
+<a name="l00698"></a>00698     MiddleBlock-><a class="code" href="classllvm_1_1BasicBlock.html#a19445f836d9e1ecb32cba27ec4338fff">splitBasicBlock</a>(MiddleBlock-><a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>(),
+<a name="l00699"></a>00699                                  <span class="stringliteral">"scalar.preheader"</span>);
+<a name="l00700"></a>00700   <span class="comment">// Find the induction variable.</span>
+<a name="l00701"></a>00701   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *OldBasicBlock = OrigLoop->getHeader();
+<a name="l00702"></a>00702 
+<a name="l00703"></a>00703   <span class="comment">// Use this IR builder to create the loop instructions (Phi, Br, Cmp)</span>
+<a name="l00704"></a>00704   <span class="comment">// inside the loop.</span>
+<a name="l00705"></a>00705   Builder.SetInsertPoint(VecBody-><a class="code" href="classllvm_1_1BasicBlock.html#ab1cd5a3713b93a33f89a2086d473cf6e">getFirstInsertionPt</a>());
+<a name="l00706"></a>00706 
+<a name="l00707"></a>00707   <span class="comment">// Generate the induction variable.</span>
+<a name="l00708"></a>00708   Induction = Builder.CreatePHI(IdxTy, 2, <span class="stringliteral">"index"</span>);
+<a name="l00709"></a>00709   <a class="code" href="classllvm_1_1Constant.html" title="LLVM Constant Representation.">Constant</a> *Step = <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(IdxTy, VF);
+<a name="l00710"></a>00710 
+<a name="l00711"></a>00711   <span class="comment">// Expand the trip count and place the new instructions in the preheader.</span>
+<a name="l00712"></a>00712   <span class="comment">// Notice that the pre-header does not change, only the loop body.</span>
+<a name="l00713"></a>00713   <a class="code" href="classllvm_1_1SCEVExpander.html">SCEVExpander</a> Exp(*SE, <span class="stringliteral">"induction"</span>);
+<a name="l00714"></a>00714   <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *Loc = BypassBlock-><a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>();
+<a name="l00715"></a>00715 
+<a name="l00716"></a>00716   <span class="comment">// Count holds the overall loop count (N).</span>
+<a name="l00717"></a>00717   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Count = Exp.<a class="code" href="classllvm_1_1SCEVExpander.html#a583d3ca95f83216d632a4d1ae0330dd0">expandCodeFor</a>(ExitCount, Induction->getType(), Loc);
+<a name="l00718"></a>00718 
+<a name="l00719"></a>00719   <span class="comment">// Add the start index to the loop count to get the new end index.</span>
+<a name="l00720"></a>00720   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *IdxEnd = BinaryOperator::CreateAdd(Count, StartIdx, <span class="stringliteral">"end.idx"</span>, Loc);
+<a name="l00721"></a>00721 
+<a name="l00722"></a>00722   <span class="comment">// Now we need to generate the expression for N - (N % VF), which is</span>
+<a name="l00723"></a>00723   <span class="comment">// the part that the vectorized body will execute.</span>
+<a name="l00724"></a>00724   <a class="code" href="classllvm_1_1Constant.html" title="LLVM Constant Representation.">Constant</a> *CIVF = <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(IdxTy, VF);
+<a name="l00725"></a>00725   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *R = BinaryOperator::CreateURem(Count, CIVF, <span class="stringliteral">"n.mod.vf"</span>, Loc);
+<a name="l00726"></a>00726   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *CountRoundDown = BinaryOperator::CreateSub(Count, R, <span class="stringliteral">"n.vec"</span>, Loc);
+<a name="l00727"></a>00727   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *IdxEndRoundDown = BinaryOperator::CreateAdd(CountRoundDown, StartIdx,
+<a name="l00728"></a>00728                                                      <span class="stringliteral">"end.idx.rnd.down"</span>, Loc);
+<a name="l00729"></a>00729 
+<a name="l00730"></a>00730   <span class="comment">// Now, compare the new count to zero. If it is zero, jump to the scalar part.</span>
+<a name="l00731"></a>00731   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Cmp = <a class="code" href="classllvm_1_1CmpInst.html#a4cd12603c3c76eb84d050733f6ddc8b7" title="Create a CmpInst.">CmpInst::Create</a>(<a class="code" href="namespacellvm.html#a6a4ce50f71e29df6dd1920cf067a2eb5">Instruction::ICmp</a>, <a class="code" href="classllvm_1_1CmpInst.html#a283f9a5d4d843d20c40bb4d3e364bb05aa719225e2de4059f93fd3209e1f48218" title="equal">CmpInst::ICMP_EQ</a>,
+<a name="l00732"></a>00732                                IdxEndRoundDown,
+<a name="l00733"></a>00733                                StartIdx,
+<a name="l00734"></a>00734                                <span class="stringliteral">"cmp.zero"</span>, Loc);
+<a name="l00735"></a>00735 
+<a name="l00736"></a>00736   LoopVectorizationLegality::RuntimePointerCheck *PtrRtCheck =
+<a name="l00737"></a>00737     Legal->getRuntimePointerCheck();
+<a name="l00738"></a>00738   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *MemoryRuntimeCheck = 0;
+<a name="l00739"></a>00739   <span class="keywordflow">if</span> (PtrRtCheck->Need) {
+<a name="l00740"></a>00740     <span class="keywordtype">unsigned</span> NumPointers = PtrRtCheck->Pointers.size();
+<a name="l00741"></a>00741     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Value* , 2></a> Starts;
+<a name="l00742"></a>00742     <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Value* , 2></a> Ends;
+<a name="l00743"></a>00743 
+<a name="l00744"></a>00744     <span class="comment">// Use this type for pointer arithmetic.</span>
+<a name="l00745"></a>00745     <a class="code" href="classllvm_1_1Type.html">Type</a>* PtrArithTy = PtrRtCheck->Pointers[0]->getType();
+<a name="l00746"></a>00746 
+<a name="l00747"></a>00747     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i=0; i < NumPointers; ++i) {
+<a name="l00748"></a>00748       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Ptr = PtrRtCheck->Pointers[i];
+<a name="l00749"></a>00749       <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEV.html">SCEV</a> *Sc = SE->getSCEV(Ptr);
+<a name="l00750"></a>00750 
+<a name="l00751"></a>00751       <span class="keywordflow">if</span> (SE->isLoopInvariant(Sc, OrigLoop)) {
+<a name="l00752"></a>00752         <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV1: Adding RT check for a loop invariant ptr:"</span> <<
+<a name="l00753"></a>00753               *Ptr <<<span class="stringliteral">"\n"</span>);
+<a name="l00754"></a>00754         Starts.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(Ptr);
+<a name="l00755"></a>00755         Ends.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(Ptr);
+<a name="l00756"></a>00756       } <span class="keywordflow">else</span> {
+<a name="l00757"></a>00757         <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Adding RT check for range:"</span> << *Ptr <<<span class="stringliteral">"\n"</span>);
+<a name="l00758"></a>00758         <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEVAddRecExpr.html">SCEVAddRecExpr</a> *AR = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1SCEVAddRecExpr.html">SCEVAddRecExpr</a>>(Sc);
+<a name="l00759"></a>00759         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Start = Exp.<a class="code" href="classllvm_1_1SCEVExpander.html#a583d3ca95f83216d632a4d1ae0330dd0">expandCodeFor</a>(AR-><a class="code" href="classllvm_1_1SCEVAddRecExpr.html#a0d53a749bd858b270d322b34b8d7e1e5">getStart</a>(), PtrArithTy, Loc);
+<a name="l00760"></a>00760         <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEV.html">SCEV</a> *Ex = SE->getExitCount(OrigLoop, OrigLoop->getHeader());
+<a name="l00761"></a>00761         <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEV.html">SCEV</a> *ScEnd = AR-><a class="code" href="classllvm_1_1SCEVAddRecExpr.html#a11bb31f99854303d2a934765469c5c2c">evaluateAtIteration</a>(Ex, *SE);
+<a name="l00762"></a>00762         assert(!isa<SCEVCouldNotCompute>(ScEnd) && <span class="stringliteral">"Invalid scev range."</span>);
+<a name="l00763"></a>00763         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *End = Exp.<a class="code" href="classllvm_1_1SCEVExpander.html#a583d3ca95f83216d632a4d1ae0330dd0">expandCodeFor</a>(ScEnd, PtrArithTy, Loc);
+<a name="l00764"></a>00764         Starts.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(Start);
+<a name="l00765"></a>00765         Ends.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(End);
+<a name="l00766"></a>00766       }
+<a name="l00767"></a>00767     }
+<a name="l00768"></a>00768 
+<a name="l00769"></a>00769     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i=0; i < NumPointers; ++i) {
+<a name="l00770"></a>00770       <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> j=i+1; j < NumPointers; ++j) {
+<a name="l00771"></a>00771         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Cmp0 = <a class="code" href="classllvm_1_1CmpInst.html#a4cd12603c3c76eb84d050733f6ddc8b7" title="Create a CmpInst.">CmpInst::Create</a>(<a class="code" href="namespacellvm.html#a6a4ce50f71e29df6dd1920cf067a2eb5">Instruction::ICmp</a>, <a class="code" href="classllvm_1_1CmpInst.html#a283f9a5d4d843d20c40bb4d3e364bb05ad92f160316221fd4090520bb2b3cefc5" title="unsigned less or equal">CmpInst::ICMP_ULE</a>,
+<a name="l00772"></a>00772                                       Starts[0], Ends[1], <span class="stringliteral">"bound0"</span>, Loc);
+<a name="l00773"></a>00773         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Cmp1 = <a class="code" href="classllvm_1_1CmpInst.html#a4cd12603c3c76eb84d050733f6ddc8b7" title="Create a CmpInst.">CmpInst::Create</a>(<a class="code" href="namespacellvm.html#a6a4ce50f71e29df6dd1920cf067a2eb5">Instruction::ICmp</a>, <a class="code" href="classllvm_1_1CmpInst.html#a283f9a5d4d843d20c40bb4d3e364bb05ad92f160316221fd4090520bb2b3cefc5" title="unsigned less or equal">CmpInst::ICMP_ULE</a>,
+<a name="l00774"></a>00774                                       Starts[1], Ends[0], <span class="stringliteral">"bound1"</span>, Loc);
+<a name="l00775"></a>00775         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *IsConflict = <a class="code" href="classllvm_1_1BinaryOperator.html#a4a4628e91a9c6a339fa61105614fac76">BinaryOperator::Create</a>(<a class="code" href="namespacellvm_1_1APIntOps.html#a684cfe02c582e8d75cd6d457e63e6c25" title="Bitwise AND function for APInt.">Instruction::And</a>, Cmp0, Cmp1,
+<a name="l00776"></a>00776                                                     <span class="stringliteral">"found.conflict"</span>, Loc);
+<a name="l00777"></a>00777         <span class="keywordflow">if</span> (MemoryRuntimeCheck) {
+<a name="l00778"></a>00778           MemoryRuntimeCheck = <a class="code" href="classllvm_1_1BinaryOperator.html#a4a4628e91a9c6a339fa61105614fac76">BinaryOperator::Create</a>(<a class="code" href="namespacellvm_1_1APIntOps.html#a22f056804d2b9882f74adc905872bc39" title="Bitwise OR function for APInt.">Instruction::Or</a>,
+<a name="l00779"></a>00779                                                       MemoryRuntimeCheck,
+<a name="l00780"></a>00780                                                       IsConflict,
+<a name="l00781"></a>00781                                                       <span class="stringliteral">"conflict.rdx"</span>, Loc);
+<a name="l00782"></a>00782         } <span class="keywordflow">else</span> {
+<a name="l00783"></a>00783           MemoryRuntimeCheck = IsConflict;
+<a name="l00784"></a>00784         }
+<a name="l00785"></a>00785       }
+<a name="l00786"></a>00786     }
+<a name="l00787"></a>00787   }<span class="comment">// end of need-runtime-check code.</span>
+<a name="l00788"></a>00788 
+<a name="l00789"></a>00789   <span class="comment">// If we are using memory runtime checks, include them in.</span>
+<a name="l00790"></a>00790   <span class="keywordflow">if</span> (MemoryRuntimeCheck) {
+<a name="l00791"></a>00791     Cmp = <a class="code" href="classllvm_1_1BinaryOperator.html#a4a4628e91a9c6a339fa61105614fac76">BinaryOperator::Create</a>(<a class="code" href="namespacellvm_1_1APIntOps.html#a22f056804d2b9882f74adc905872bc39" title="Bitwise OR function for APInt.">Instruction::Or</a>, Cmp, MemoryRuntimeCheck,
+<a name="l00792"></a>00792                                  <span class="stringliteral">"CntOrMem"</span>, Loc);
+<a name="l00793"></a>00793   }
+<a name="l00794"></a>00794 
+<a name="l00795"></a>00795   <a class="code" href="classllvm_1_1BranchInst.html#ae9cbc599309fd2da33ec1c61df01ce1f">BranchInst::Create</a>(MiddleBlock, VectorPH, Cmp, Loc);
+<a name="l00796"></a>00796   <span class="comment">// Remove the old terminator.</span>
+<a name="l00797"></a>00797   Loc-><a class="code" href="classllvm_1_1Instruction.html#a6fe2f06b8a4b2c3d6308afb223a0238a">eraseFromParent</a>();
+<a name="l00798"></a>00798 
+<a name="l00799"></a>00799   <span class="comment">// We are going to resume the execution of the scalar loop.</span>
+<a name="l00800"></a>00800   <span class="comment">// This PHI decides on what number to start. If we come from the</span>
+<a name="l00801"></a>00801   <span class="comment">// vector loop then we need to start with the end index minus the</span>
+<a name="l00802"></a>00802   <span class="comment">// index modulo VF. If we come from a bypass edge then we need to start</span>
+<a name="l00803"></a>00803   <span class="comment">// from the real start.</span>
+<a name="l00804"></a>00804   <a class="code" href="classllvm_1_1PHINode.html">PHINode</a>* ResumeIndex = <a class="code" href="classllvm_1_1PHINode.html#afb5e83bf5123ff7c51058eb0ebebcdc6">PHINode::Create</a>(IdxTy, 2, <span class="stringliteral">"resume.idx"</span>,
+<a name="l00805"></a>00805                                          MiddleBlock-><a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>());
+<a name="l00806"></a>00806   ResumeIndex-><a class="code" href="classllvm_1_1PHINode.html#a089cccb6f231efee72abc76d0f9c695f">addIncoming</a>(StartIdx, BypassBlock);
+<a name="l00807"></a>00807   ResumeIndex-><a class="code" href="classllvm_1_1PHINode.html#a089cccb6f231efee72abc76d0f9c695f">addIncoming</a>(IdxEndRoundDown, VecBody);
+<a name="l00808"></a>00808 
+<a name="l00809"></a>00809   <span class="comment">// Add a check in the middle block to see if we have completed</span>
+<a name="l00810"></a>00810   <span class="comment">// all of the iterations in the first vector loop.</span>
+<a name="l00811"></a>00811   <span class="comment">// If (N - N%VF) == N, then we *don't* need to run the remainder.</span>
+<a name="l00812"></a>00812   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *CmpN = <a class="code" href="classllvm_1_1CmpInst.html#a4cd12603c3c76eb84d050733f6ddc8b7" title="Create a CmpInst.">CmpInst::Create</a>(<a class="code" href="namespacellvm.html#a6a4ce50f71e29df6dd1920cf067a2eb5">Instruction::ICmp</a>, <a class="code" href="classllvm_1_1CmpInst.html#a283f9a5d4d843d20c40bb4d3e364bb05aa719225e2de4059f93fd3209e1f48218" title="equal">CmpInst::ICMP_EQ</a>, IdxEnd,
+<a name="l00813"></a>00813                                 ResumeIndex, <span class="stringliteral">"cmp.n"</span>,
+<a name="l00814"></a>00814                                 MiddleBlock-><a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>());
+<a name="l00815"></a>00815 
+<a name="l00816"></a>00816   <a class="code" href="classllvm_1_1BranchInst.html#ae9cbc599309fd2da33ec1c61df01ce1f">BranchInst::Create</a>(ExitBlock, ScalarPH, CmpN, MiddleBlock-><a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>());
+<a name="l00817"></a>00817   <span class="comment">// Remove the old terminator.</span>
+<a name="l00818"></a>00818   MiddleBlock-><a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>()-><a class="code" href="classllvm_1_1Instruction.html#a6fe2f06b8a4b2c3d6308afb223a0238a">eraseFromParent</a>();
+<a name="l00819"></a>00819 
+<a name="l00820"></a>00820   <span class="comment">// Create i+1 and fill the PHINode.</span>
+<a name="l00821"></a>00821   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *NextIdx = Builder.CreateAdd(Induction, Step, <span class="stringliteral">"index.next"</span>);
+<a name="l00822"></a>00822   Induction->addIncoming(StartIdx, VectorPH);
+<a name="l00823"></a>00823   Induction->addIncoming(NextIdx, VecBody);
+<a name="l00824"></a>00824   <span class="comment">// Create the compare.</span>
+<a name="l00825"></a>00825   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *<a class="code" href="namespacellvm.html#a6a4ce50f71e29df6dd1920cf067a2eb5">ICmp</a> = Builder.CreateICmpEQ(NextIdx, IdxEndRoundDown);
+<a name="l00826"></a>00826   Builder.CreateCondBr(ICmp, MiddleBlock, VecBody);
+<a name="l00827"></a>00827 
+<a name="l00828"></a>00828   <span class="comment">// Now we have two terminators. Remove the old one from the block.</span>
+<a name="l00829"></a>00829   VecBody-><a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>()-><a class="code" href="classllvm_1_1Instruction.html#a6fe2f06b8a4b2c3d6308afb223a0238a">eraseFromParent</a>();
+<a name="l00830"></a>00830 
+<a name="l00831"></a>00831   <span class="comment">// Fix the scalar body iteration count.</span>
+<a name="l00832"></a>00832   <span class="keywordtype">unsigned</span> BlockIdx = OldInduction->getBasicBlockIndex(ScalarPH);
+<a name="l00833"></a>00833   OldInduction->setIncomingValue(BlockIdx, ResumeIndex);
+<a name="l00834"></a>00834 
+<a name="l00835"></a>00835   <span class="comment">// Get ready to start creating new instructions into the vectorized body.</span>
+<a name="l00836"></a>00836   Builder.SetInsertPoint(VecBody-><a class="code" href="classllvm_1_1BasicBlock.html#ab1cd5a3713b93a33f89a2086d473cf6e">getFirstInsertionPt</a>());
+<a name="l00837"></a>00837 
+<a name="l00838"></a>00838   <span class="comment">// Register the new loop.</span>
+<a name="l00839"></a>00839   <a class="code" href="classllvm_1_1Loop.html">Loop</a>* Lp = <span class="keyword">new</span> <a class="code" href="namespacellvm_1_1GC.html#a5f606a2b04c809f789a574660cd25213a960eba6a93af558b44d3d14e8393d324" title="Instr is a loop (backwards branch).">Loop</a>();
+<a name="l00840"></a>00840   LPM->insertLoop(Lp, OrigLoop-><a class="code" href="classllvm_1_1LoopBase.html#a1431766de798501f107d9031821f311e">getParentLoop</a>());
+<a name="l00841"></a>00841 
+<a name="l00842"></a>00842   Lp-><a class="code" href="classllvm_1_1LoopBase.html#a63f099d3bf7cf97eb3ae2d630e3d1afc">addBasicBlockToLoop</a>(VecBody, <a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>->getBase());
+<a name="l00843"></a>00843 
+<a name="l00844"></a>00844   <a class="code" href="classllvm_1_1Loop.html">Loop</a> *ParentLoop = OrigLoop-><a class="code" href="classllvm_1_1LoopBase.html#a1431766de798501f107d9031821f311e">getParentLoop</a>();
+<a name="l00845"></a>00845   <span class="keywordflow">if</span> (ParentLoop) {
+<a name="l00846"></a>00846     ParentLoop-><a class="code" href="classllvm_1_1LoopBase.html#a63f099d3bf7cf97eb3ae2d630e3d1afc">addBasicBlockToLoop</a>(ScalarPH, <a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>->getBase());
+<a name="l00847"></a>00847     ParentLoop-><a class="code" href="classllvm_1_1LoopBase.html#a63f099d3bf7cf97eb3ae2d630e3d1afc">addBasicBlockToLoop</a>(VectorPH, <a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>->getBase());
+<a name="l00848"></a>00848     ParentLoop-><a class="code" href="classllvm_1_1LoopBase.html#a63f099d3bf7cf97eb3ae2d630e3d1afc">addBasicBlockToLoop</a>(MiddleBlock, <a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>->getBase());
+<a name="l00849"></a>00849   }
+<a name="l00850"></a>00850 
+<a name="l00851"></a>00851   <span class="comment">// Save the state.</span>
+<a name="l00852"></a>00852   LoopVectorPreHeader = VectorPH;
+<a name="l00853"></a>00853   LoopScalarPreHeader = ScalarPH;
+<a name="l00854"></a>00854   LoopMiddleBlock = MiddleBlock;
+<a name="l00855"></a>00855   LoopExitBlock = ExitBlock;
+<a name="l00856"></a>00856   LoopVectorBody = VecBody;
+<a name="l00857"></a>00857   LoopScalarBody = OldBasicBlock;
+<a name="l00858"></a>00858   LoopBypassBlock = BypassBlock;
+<a name="l00859"></a>00859 }
+<a name="l00860"></a>00860 <span class="comment"></span>
+<a name="l00861"></a>00861 <span class="comment">/// This function returns the identity element (or neutral element) for</span>
+<a name="l00862"></a>00862 <span class="comment">/// the operation K.</span>
+<a name="l00863"></a>00863 <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">unsigned</span>
+<a name="l00864"></a>00864 getReductionIdentity(LoopVectorizationLegality::ReductionKind K) {
+<a name="l00865"></a>00865   <span class="keywordflow">switch</span> (K) {
+<a name="l00866"></a>00866   <span class="keywordflow">case</span> LoopVectorizationLegality::IntegerXor:
+<a name="l00867"></a>00867   <span class="keywordflow">case</span> LoopVectorizationLegality::IntegerAdd:
+<a name="l00868"></a>00868   <span class="keywordflow">case</span> LoopVectorizationLegality::IntegerOr:
+<a name="l00869"></a>00869     <span class="comment">// Adding, Xoring, Oring zero to a number does not change it.</span>
+<a name="l00870"></a>00870     <span class="keywordflow">return</span> 0;
+<a name="l00871"></a>00871   <span class="keywordflow">case</span> LoopVectorizationLegality::IntegerMult:
+<a name="l00872"></a>00872     <span class="comment">// Multiplying a number by 1 does not change it.</span>
+<a name="l00873"></a>00873     <span class="keywordflow">return</span> 1;
+<a name="l00874"></a>00874   <span class="keywordflow">case</span> LoopVectorizationLegality::IntegerAnd:
+<a name="l00875"></a>00875     <span class="comment">// AND-ing a number with an all-1 value does not change it.</span>
+<a name="l00876"></a>00876     <span class="keywordflow">return</span> -1;
+<a name="l00877"></a>00877   <span class="keywordflow">default</span>:
+<a name="l00878"></a>00878     <a class="code" href="ErrorHandling_8h.html#ace243f5c25697a1107cce46626b3dc94">llvm_unreachable</a>(<span class="stringliteral">"Unknown reduction kind"</span>);
+<a name="l00879"></a>00879   }
+<a name="l00880"></a>00880 }
+<a name="l00881"></a>00881 
+<a name="l00882"></a>00882 <span class="keywordtype">void</span>
+<a name="l00883"></a>00883 SingleBlockLoopVectorizer::vectorizeLoop(LoopVectorizationLegality *Legal) {
+<a name="l00884"></a>00884   <span class="comment">//===------------------------------------------------===//</span>
+<a name="l00885"></a>00885   <span class="comment">//</span>
+<a name="l00886"></a>00886   <span class="comment">// Notice: any optimization or new instruction that go</span>
+<a name="l00887"></a>00887   <span class="comment">// into the code below should be also be implemented in</span>
+<a name="l00888"></a>00888   <span class="comment">// the cost-model.</span>
+<a name="l00889"></a>00889   <span class="comment">//</span>
+<a name="l00890"></a>00890   <span class="comment">//===------------------------------------------------===//</span>
+<a name="l00891"></a>00891   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<PHINode*, 4></a> PhiVector;
+<a name="l00892"></a>00892   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> &BB = *OrigLoop->getHeader();
+<a name="l00893"></a>00893   <a class="code" href="classllvm_1_1Constant.html" title="LLVM Constant Representation.">Constant</a> *Zero = <a class="code" href="classllvm_1_1ConstantInt.html#a9105541412dab869e18b3cceebfff07d">ConstantInt::get</a>(
+<a name="l00894"></a>00894     <a class="code" href="classllvm_1_1Type.html#a30dd396c5b40cd86c1591872e574ccdf">IntegerType::getInt32Ty</a>(BB.<a class="code" href="classllvm_1_1BasicBlock.html#ad652423d9d91271ba153eb86482b2f55" title="getContext - Get the context in which this basic block lives.">getContext</a>()), 0);
+<a name="l00895"></a>00895 
+<a name="l00896"></a>00896   <span class="comment">// In order to support reduction variables we need to be able to vectorize</span>
+<a name="l00897"></a>00897   <span class="comment">// Phi nodes. Phi nodes have cycles, so we need to vectorize them in two</span>
+<a name="l00898"></a>00898   <span class="comment">// steages. First, we create a new vector PHI node with no incoming edges.</span>
+<a name="l00899"></a>00899   <span class="comment">// We use this value when we vectorize all of the instructions that use the</span>
+<a name="l00900"></a>00900   <span class="comment">// PHI. Next, after all of the instructions in the block are complete we</span>
+<a name="l00901"></a>00901   <span class="comment">// add the new incoming edges to the PHI. At this point all of the</span>
+<a name="l00902"></a>00902   <span class="comment">// instructions in the basic block are vectorized, so we can use them to</span>
+<a name="l00903"></a>00903   <span class="comment">// construct the PHI.</span>
+<a name="l00904"></a>00904   PhiVector PHIsToFix;
+<a name="l00905"></a>00905 
+<a name="l00906"></a>00906   <span class="comment">// For each instruction in the old loop.</span>
+<a name="l00907"></a>00907   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> it = BB.<a class="code" href="classllvm_1_1BasicBlock.html#a0ed5f3ab3c2e4196ee0cffffa080c062">begin</a>(), e = BB.<a class="code" href="classllvm_1_1BasicBlock.html#a0b4e7bee9b8575cc7db73329f1a561bd">end</a>(); it != e; ++it) {
+<a name="l00908"></a>00908     <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *Inst = it;
+<a name="l00909"></a>00909 
+<a name="l00910"></a>00910     <span class="keywordflow">switch</span> (Inst-><a class="code" href="classllvm_1_1Instruction.html#a021bb7c9aad6003fe8089f6327356c6c" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>()) {
+<a name="l00911"></a>00911       <span class="keywordflow">case</span> Instruction::Br:
+<a name="l00912"></a>00912         <span class="comment">// Nothing to do for PHIs and BR, since we already took care of the</span>
+<a name="l00913"></a>00913         <span class="comment">// loop control flow instructions.</span>
+<a name="l00914"></a>00914         <span class="keywordflow">continue</span>;
+<a name="l00915"></a>00915       <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a332cde6eadc39e042b35937d137c83f6">Instruction::PHI</a>:{
+<a name="l00916"></a>00916         <a class="code" href="classllvm_1_1PHINode.html">PHINode</a>* P = cast<PHINode>(Inst);
+<a name="l00917"></a>00917         <span class="comment">// Special handling for the induction var.</span>
+<a name="l00918"></a>00918         <span class="keywordflow">if</span> (OldInduction == Inst)
+<a name="l00919"></a>00919           <span class="keywordflow">continue</span>;
+<a name="l00920"></a>00920         <span class="comment">// This is phase one of vectorizing PHIs.</span>
+<a name="l00921"></a>00921         <span class="comment">// This has to be a reduction variable.</span>
+<a name="l00922"></a>00922         assert(Legal->getReductionVars()->count(P) && <span class="stringliteral">"Not a Reduction"</span>);
+<a name="l00923"></a>00923         <a class="code" href="classllvm_1_1Type.html">Type</a> *VecTy = <a class="code" href="classllvm_1_1VectorType.html#ab43657ed1abe2e2ed3a6a394f233ebd0">VectorType::get</a>(Inst-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(), VF);
+<a name="l00924"></a>00924         WidenMap[Inst] = Builder.CreatePHI(VecTy, 2, <span class="stringliteral">"vec.phi"</span>);
+<a name="l00925"></a>00925         PHIsToFix.push_back(P);
+<a name="l00926"></a>00926         <span class="keywordflow">continue</span>;
+<a name="l00927"></a>00927       }
+<a name="l00928"></a>00928       <span class="keywordflow">case</span> Instruction::Add:
+<a name="l00929"></a>00929       <span class="keywordflow">case</span> Instruction::FAdd:
+<a name="l00930"></a>00930       <span class="keywordflow">case</span> Instruction::Sub:
+<a name="l00931"></a>00931       <span class="keywordflow">case</span> Instruction::FSub:
+<a name="l00932"></a>00932       <span class="keywordflow">case</span> Instruction::Mul:
+<a name="l00933"></a>00933       <span class="keywordflow">case</span> Instruction::FMul:
+<a name="l00934"></a>00934       <span class="keywordflow">case</span> Instruction::UDiv:
+<a name="l00935"></a>00935       <span class="keywordflow">case</span> Instruction::SDiv:
+<a name="l00936"></a>00936       <span class="keywordflow">case</span> Instruction::FDiv:
+<a name="l00937"></a>00937       <span class="keywordflow">case</span> Instruction::URem:
+<a name="l00938"></a>00938       <span class="keywordflow">case</span> Instruction::SRem:
+<a name="l00939"></a>00939       <span class="keywordflow">case</span> Instruction::FRem:
+<a name="l00940"></a>00940       <span class="keywordflow">case</span> Instruction::Shl:
+<a name="l00941"></a>00941       <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a5d76973fd2e5e0fd234e129d3fb03db0">Instruction::LShr</a>:
+<a name="l00942"></a>00942       <span class="keywordflow">case</span> Instruction::AShr:
+<a name="l00943"></a>00943       <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1APIntOps.html#a684cfe02c582e8d75cd6d457e63e6c25" title="Bitwise AND function for APInt.">Instruction::And</a>:
+<a name="l00944"></a>00944       <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1APIntOps.html#a22f056804d2b9882f74adc905872bc39" title="Bitwise OR function for APInt.">Instruction::Or</a>:
+<a name="l00945"></a>00945       <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1APIntOps.html#afc7c4d88d09cba0c5e920f8a3a3ace55" title="Bitwise XOR function for APInt.">Instruction::Xor</a>: {
+<a name="l00946"></a>00946         <span class="comment">// Just widen binops.</span>
+<a name="l00947"></a>00947         <a class="code" href="classllvm_1_1BinaryOperator.html">BinaryOperator</a> *BinOp = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1BinaryOperator.html">BinaryOperator</a>>(Inst);
+<a name="l00948"></a>00948         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a> = getVectorValue(Inst-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0));
+<a name="l00949"></a>00949         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *B = getVectorValue(Inst-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(1));
+<a name="l00950"></a>00950 
+<a name="l00951"></a>00951         <span class="comment">// Use this vector value for all users of the original instruction.</span>
+<a name="l00952"></a>00952         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *V = Builder.CreateBinOp(BinOp-><a class="code" href="classllvm_1_1BinaryOperator.html#a88505baf41407782678a5df1702d2d31" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>(), <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>, B);
+<a name="l00953"></a>00953         WidenMap[Inst] = V;
+<a name="l00954"></a>00954 
+<a name="l00955"></a>00955         <span class="comment">// Update the NSW, NUW and Exact flags.</span>
+<a name="l00956"></a>00956         <a class="code" href="classllvm_1_1BinaryOperator.html">BinaryOperator</a> *VecOp = cast<BinaryOperator>(V);
+<a name="l00957"></a>00957         <span class="keywordflow">if</span> (isa<OverflowingBinaryOperator>(BinOp)) {
+<a name="l00958"></a>00958           VecOp-><a class="code" href="classllvm_1_1BinaryOperator.html#a21ce697328893029ae2c63974061a294">setHasNoSignedWrap</a>(BinOp-><a class="code" href="classllvm_1_1BinaryOperator.html#a07783e6f39803037259a1ebe376c2b1e" title="hasNoSignedWrap - Determine whether the no signed wrap flag is set.">hasNoSignedWrap</a>());
+<a name="l00959"></a>00959           VecOp-><a class="code" href="classllvm_1_1BinaryOperator.html#aaa9083a85e23c9c5ee366920d90ae51e">setHasNoUnsignedWrap</a>(BinOp-><a class="code" href="classllvm_1_1BinaryOperator.html#a5b6cd6c043f54b40899aff62e6e40488" title="hasNoUnsignedWrap - Determine whether the no unsigned wrap flag is set.">hasNoUnsignedWrap</a>());
+<a name="l00960"></a>00960         }
+<a name="l00961"></a>00961         <span class="keywordflow">if</span> (isa<PossiblyExactOperator>(VecOp))
+<a name="l00962"></a>00962           VecOp-><a class="code" href="classllvm_1_1BinaryOperator.html#aac502d7d65e2996cf6b819b14e17499c">setIsExact</a>(BinOp-><a class="code" href="classllvm_1_1BinaryOperator.html#a0f67e7208255f5088f0d515185109174" title="isExact - Determine whether the exact flag is set.">isExact</a>());
+<a name="l00963"></a>00963         <span class="keywordflow">break</span>;
+<a name="l00964"></a>00964       }
+<a name="l00965"></a>00965       <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1MCID.html#accb16fffd544529ed4d816a45e40f425a32dbd2c72a98eaee90e3ad5ef7b5af16">Instruction::Select</a>: {
+<a name="l00966"></a>00966         <span class="comment">// Widen selects.</span>
+<a name="l00967"></a>00967         <span class="comment">// If the selector is loop invariant we can create a select</span>
+<a name="l00968"></a>00968         <span class="comment">// instruction with a scalar condition. Otherwise, use vector-select.</span>
+<a name="l00969"></a>00969         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Cond = Inst-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0);
+<a name="l00970"></a>00970         <span class="keywordtype">bool</span> InvariantCond = SE->isLoopInvariant(SE->getSCEV(Cond), OrigLoop);
+<a name="l00971"></a>00971 
+<a name="l00972"></a>00972         <span class="comment">// The condition can be loop invariant  but still defined inside the</span>
+<a name="l00973"></a>00973         <span class="comment">// loop. This means that we can't just use the original 'cond' value.</span>
+<a name="l00974"></a>00974         <span class="comment">// We have to take the 'vectorized' value and pick the first lane.</span>
+<a name="l00975"></a>00975         <span class="comment">// Instcombine will make this a no-op.</span>
+<a name="l00976"></a>00976         Cond = getVectorValue(Cond);
+<a name="l00977"></a>00977         <span class="keywordflow">if</span> (InvariantCond)
+<a name="l00978"></a>00978           Cond = Builder.CreateExtractElement(Cond, Builder.getInt32(0));
+<a name="l00979"></a>00979 
+<a name="l00980"></a>00980         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Op0 = getVectorValue(Inst-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(1));
+<a name="l00981"></a>00981         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Op1 = getVectorValue(Inst-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(2));
+<a name="l00982"></a>00982         WidenMap[Inst] = Builder.CreateSelect(Cond, Op0, Op1);
+<a name="l00983"></a>00983         <span class="keywordflow">break</span>;
+<a name="l00984"></a>00984       }
+<a name="l00985"></a>00985 
+<a name="l00986"></a>00986       <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a6a4ce50f71e29df6dd1920cf067a2eb5">Instruction::ICmp</a>:
+<a name="l00987"></a>00987       <span class="keywordflow">case</span> Instruction::FCmp: {
+<a name="l00988"></a>00988         <span class="comment">// Widen compares. Generate vector compares.</span>
+<a name="l00989"></a>00989         <span class="keywordtype">bool</span> FCmp = (Inst-><a class="code" href="classllvm_1_1Instruction.html#a021bb7c9aad6003fe8089f6327356c6c" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>() == Instruction::FCmp);
+<a name="l00990"></a>00990         <a class="code" href="classllvm_1_1CmpInst.html" title="Abstract base class of comparison instructions.">CmpInst</a> *Cmp = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1CmpInst.html" title="Abstract base class of comparison instructions.">CmpInst</a>>(Inst);
+<a name="l00991"></a>00991         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a> = getVectorValue(Inst-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0));
+<a name="l00992"></a>00992         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *B = getVectorValue(Inst-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(1));
+<a name="l00993"></a>00993         <span class="keywordflow">if</span> (FCmp)
+<a name="l00994"></a>00994           WidenMap[Inst] = Builder.CreateFCmp(Cmp-><a class="code" href="classllvm_1_1CmpInst.html#a8afd4995fae596b2c86eeed85b3d388b" title="Return the predicate for this instruction.">getPredicate</a>(), <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>, B);
+<a name="l00995"></a>00995         <span class="keywordflow">else</span>
+<a name="l00996"></a>00996           WidenMap[Inst] = Builder.CreateICmp(Cmp-><a class="code" href="classllvm_1_1CmpInst.html#a8afd4995fae596b2c86eeed85b3d388b" title="Return the predicate for this instruction.">getPredicate</a>(), <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>, B);
+<a name="l00997"></a>00997         <span class="keywordflow">break</span>;
+<a name="l00998"></a>00998       }
+<a name="l00999"></a>00999 
+<a name="l01000"></a>01000       <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPII.html#add994c36633ba2d8f6a1366b775e88a6a36b3dd3b84fde3f8494a9b18af131856">Instruction::Store</a>: {
+<a name="l01001"></a>01001         <span class="comment">// Attempt to issue a wide store.</span>
+<a name="l01002"></a>01002         <a class="code" href="classllvm_1_1StoreInst.html">StoreInst</a> *SI = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1StoreInst.html">StoreInst</a>>(Inst);
+<a name="l01003"></a>01003         <a class="code" href="classllvm_1_1Type.html">Type</a> *StTy = <a class="code" href="classllvm_1_1VectorType.html#ab43657ed1abe2e2ed3a6a394f233ebd0">VectorType::get</a>(SI-><a class="code" href="classllvm_1_1StoreInst.html#a14298313bdf734e2db5a921cc6e861a0">getValueOperand</a>()-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(), VF);
+<a name="l01004"></a>01004         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Ptr = SI-><a class="code" href="classllvm_1_1StoreInst.html#ac03c1c093059ea000216af8dd6f2dbf4">getPointerOperand</a>();
+<a name="l01005"></a>01005         <span class="keywordtype">unsigned</span> Alignment = SI-><a class="code" href="classllvm_1_1StoreInst.html#a3084f1dd69d67e1965fd1fe721a69f2e">getAlignment</a>();
+<a name="l01006"></a>01006 
+<a name="l01007"></a>01007         assert(!Legal->isUniform(Ptr) &&
+<a name="l01008"></a>01008                <span class="stringliteral">"We do not allow storing to uniform addresses"</span>);
+<a name="l01009"></a>01009 
+<a name="l01010"></a>01010         <a class="code" href="classllvm_1_1GetElementPtrInst.html">GetElementPtrInst</a> *Gep = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1GetElementPtrInst.html">GetElementPtrInst</a>>(Ptr);
+<a name="l01011"></a>01011 
+<a name="l01012"></a>01012         <span class="comment">// This store does not use GEPs.</span>
+<a name="l01013"></a>01013         <span class="keywordflow">if</span> (!Legal->isConsecutiveGep(Gep)) {
+<a name="l01014"></a>01014           scalarizeInstruction(Inst);
+<a name="l01015"></a>01015           <span class="keywordflow">break</span>;
+<a name="l01016"></a>01016         }
+<a name="l01017"></a>01017 
+<a name="l01018"></a>01018         <span class="comment">// The last index does not have to be the induction. It can be</span>
+<a name="l01019"></a>01019         <span class="comment">// consecutive and be a function of the index. For example A[I+1];</span>
+<a name="l01020"></a>01020         <span class="keywordtype">unsigned</span> NumOperands = Gep->getNumOperands();
+<a name="l01021"></a>01021         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *LastIndex = getVectorValue(Gep->getOperand(NumOperands - 1));
+<a name="l01022"></a>01022         LastIndex = Builder.CreateExtractElement(LastIndex, Zero);
+<a name="l01023"></a>01023 
+<a name="l01024"></a>01024         <span class="comment">// Create the new GEP with the new induction variable.</span>
+<a name="l01025"></a>01025         <a class="code" href="classllvm_1_1GetElementPtrInst.html">GetElementPtrInst</a> *Gep2 = cast<GetElementPtrInst>(Gep->clone());
+<a name="l01026"></a>01026         Gep2-><a class="code" href="classllvm_1_1User.html#a5fa9b8e1842b354f64c1ba6be0a4a17f">setOperand</a>(NumOperands - 1, LastIndex);
+<a name="l01027"></a>01027         Ptr = Builder.Insert(Gep2);
+<a name="l01028"></a>01028         Ptr = Builder.CreateBitCast(Ptr, StTy->getPointerTo());
+<a name="l01029"></a>01029         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Val = getVectorValue(SI-><a class="code" href="classllvm_1_1StoreInst.html#a14298313bdf734e2db5a921cc6e861a0">getValueOperand</a>());
+<a name="l01030"></a>01030         Builder.CreateStore(Val, Ptr)->setAlignment(Alignment);
+<a name="l01031"></a>01031         <span class="keywordflow">break</span>;
+<a name="l01032"></a>01032       }
+<a name="l01033"></a>01033       <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPII.html#add994c36633ba2d8f6a1366b775e88a6a5069619ca8fdce305534f3fe85091a0f">Instruction::Load</a>: {
+<a name="l01034"></a>01034         <span class="comment">// Attempt to issue a wide load.</span>
+<a name="l01035"></a>01035         <a class="code" href="classllvm_1_1LoadInst.html">LoadInst</a> *<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a> = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1LoadInst.html">LoadInst</a>>(Inst);
+<a name="l01036"></a>01036         <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="namespacellvm.html#ab83a048107217f63353d29f525d4794b">RetTy</a> = <a class="code" href="classllvm_1_1VectorType.html#ab43657ed1abe2e2ed3a6a394f233ebd0">VectorType::get</a>(LI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(), VF);
+<a name="l01037"></a>01037         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Ptr = LI-><a class="code" href="classllvm_1_1LoadInst.html#ad47eefa1d094f60494b6b927061ca001">getPointerOperand</a>();
+<a name="l01038"></a>01038         <span class="keywordtype">unsigned</span> Alignment = LI-><a class="code" href="classllvm_1_1LoadInst.html#ad1168fc42bcba1b71217a4969483671a">getAlignment</a>();
+<a name="l01039"></a>01039         <a class="code" href="classllvm_1_1GetElementPtrInst.html">GetElementPtrInst</a> *Gep = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1GetElementPtrInst.html">GetElementPtrInst</a>>(Ptr);
+<a name="l01040"></a>01040 
+<a name="l01041"></a>01041         <span class="comment">// If we don't have a gep, or that the pointer is loop invariant,</span>
+<a name="l01042"></a>01042         <span class="comment">// scalarize the load.</span>
+<a name="l01043"></a>01043         <span class="keywordflow">if</span> (!Gep || Legal->isUniform(Gep) || !Legal->isConsecutiveGep(Gep)) {
+<a name="l01044"></a>01044           scalarizeInstruction(Inst);
+<a name="l01045"></a>01045           <span class="keywordflow">break</span>;
+<a name="l01046"></a>01046         }
+<a name="l01047"></a>01047 
+<a name="l01048"></a>01048         <span class="comment">// The last index does not have to be the induction. It can be</span>
+<a name="l01049"></a>01049         <span class="comment">// consecutive and be a function of the index. For example A[I+1];</span>
+<a name="l01050"></a>01050         <span class="keywordtype">unsigned</span> NumOperands = Gep-><a class="code" href="classllvm_1_1User.html#a2f81e0c1fc6554df7ad2eafabf5fc5a5">getNumOperands</a>();
+<a name="l01051"></a>01051         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *LastIndex = getVectorValue(Gep-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(NumOperands -1));
+<a name="l01052"></a>01052         LastIndex = Builder.CreateExtractElement(LastIndex, Zero);
+<a name="l01053"></a>01053 
+<a name="l01054"></a>01054         <span class="comment">// Create the new GEP with the new induction variable.</span>
+<a name="l01055"></a>01055         <a class="code" href="classllvm_1_1GetElementPtrInst.html">GetElementPtrInst</a> *Gep2 = cast<GetElementPtrInst>(Gep-><a class="code" href="classllvm_1_1Instruction.html#af6aad0c9ba7b8720130235c9621b55b5">clone</a>());
+<a name="l01056"></a>01056         Gep2-><a class="code" href="classllvm_1_1User.html#a5fa9b8e1842b354f64c1ba6be0a4a17f">setOperand</a>(NumOperands - 1, LastIndex);
+<a name="l01057"></a>01057         Ptr = Builder.Insert(Gep2);
+<a name="l01058"></a>01058         Ptr = Builder.CreateBitCast(Ptr, RetTy->getPointerTo());
+<a name="l01059"></a>01059         LI = Builder.CreateLoad(Ptr);
+<a name="l01060"></a>01060         LI-><a class="code" href="classllvm_1_1LoadInst.html#a218ef27c964707a907f12db0f9b002ba">setAlignment</a>(Alignment);
+<a name="l01061"></a>01061         <span class="comment">// Use this vector value for all users of the load.</span>
+<a name="l01062"></a>01062         WidenMap[Inst] = <a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>;
+<a name="l01063"></a>01063         <span class="keywordflow">break</span>;
+<a name="l01064"></a>01064       }
+<a name="l01065"></a>01065       <span class="keywordflow">case</span> Instruction::ZExt:
+<a name="l01066"></a>01066       <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#ae2dfc57500e32ee6f5ac871f7ec55d5b">Instruction::SExt</a>:
+<a name="l01067"></a>01067       <span class="keywordflow">case</span> Instruction::FPToUI:
+<a name="l01068"></a>01068       <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a3677968984dd841410ed46288fd5ab6c">Instruction::FPToSI</a>:
+<a name="l01069"></a>01069       <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a24e13352d9c828e3de6682f4baae88fd">Instruction::FPExt</a>:
+<a name="l01070"></a>01070       <span class="keywordflow">case</span> Instruction::PtrToInt:
+<a name="l01071"></a>01071       <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a20744d4958a3cd24012862024a8b5851">Instruction::IntToPtr</a>:
+<a name="l01072"></a>01072       <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#aa7d131dc7d18431127ae9fe7d4429fa7">Instruction::SIToFP</a>:
+<a name="l01073"></a>01073       <span class="keywordflow">case</span> Instruction::UIToFP:
+<a name="l01074"></a>01074       <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a3da04da2a51c5da491960f875a3222ad">Instruction::Trunc</a>:
+<a name="l01075"></a>01075       <span class="keywordflow">case</span> Instruction::FPTrunc:
+<a name="l01076"></a>01076       <span class="keywordflow">case</span> Instruction::BitCast: {<span class="comment"></span>
+<a name="l01077"></a>01077 <span class="comment">        /// Vectorize bitcasts.</span>
+<a name="l01078"></a>01078 <span class="comment"></span>        <a class="code" href="classllvm_1_1CastInst.html" title="Base class of casting instructions.">CastInst</a> *CI = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1CastInst.html" title="Base class of casting instructions.">CastInst</a>>(Inst);
+<a name="l01079"></a>01079         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a> = getVectorValue(Inst-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0));
+<a name="l01080"></a>01080         <a class="code" href="classllvm_1_1Type.html">Type</a> *DestTy = <a class="code" href="classllvm_1_1VectorType.html#ab43657ed1abe2e2ed3a6a394f233ebd0">VectorType::get</a>(CI-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()-><a class="code" href="classllvm_1_1Type.html#a8eafa71cf399da8f21b2af5549f3f9e7">getScalarType</a>(), VF);
+<a name="l01081"></a>01081         WidenMap[Inst] = Builder.CreateCast(CI-><a class="code" href="classllvm_1_1CastInst.html#adc3489e61d5f37a0e4c5589859fbccc2" title="Return the opcode of this CastInst.">getOpcode</a>(), <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11bad9577456b5bb7a03b7f42a710e122ab5">A</a>, DestTy);
+<a name="l01082"></a>01082         <span class="keywordflow">break</span>;
+<a name="l01083"></a>01083       }
+<a name="l01084"></a>01084 
+<a name="l01085"></a>01085       <span class="keywordflow">default</span>:<span class="comment"></span>
+<a name="l01086"></a>01086 <span class="comment">        /// All other instructions are unsupported. Scalarize them.</span>
+<a name="l01087"></a>01087 <span class="comment"></span>        scalarizeInstruction(Inst);
+<a name="l01088"></a>01088         <span class="keywordflow">break</span>;
+<a name="l01089"></a>01089     }<span class="comment">// end of switch.</span>
+<a name="l01090"></a>01090   }<span class="comment">// end of for_each instr.</span>
+<a name="l01091"></a>01091 
+<a name="l01092"></a>01092   <span class="comment">// At this point every instruction in the original loop is widended to</span>
+<a name="l01093"></a>01093   <span class="comment">// a vector form. We are almost done. Now, we need to fix the PHI nodes</span>
+<a name="l01094"></a>01094   <span class="comment">// that we vectorized. The PHI nodes are currently empty because we did</span>
+<a name="l01095"></a>01095   <span class="comment">// not want to introduce cycles. Notice that the remaining PHI nodes</span>
+<a name="l01096"></a>01096   <span class="comment">// that we need to fix are reduction variables.</span>
+<a name="l01097"></a>01097 
+<a name="l01098"></a>01098   <span class="comment">// Create the 'reduced' values for each of the induction vars.</span>
+<a name="l01099"></a>01099   <span class="comment">// The reduced values are the vector values that we scalarize and combine</span>
+<a name="l01100"></a>01100   <span class="comment">// after the loop is finished.</span>
+<a name="l01101"></a>01101   <span class="keywordflow">for</span> (PhiVector::iterator it = PHIsToFix.begin(), e = PHIsToFix.end();
+<a name="l01102"></a>01102        it != e; ++it) {
+<a name="l01103"></a>01103     <a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *RdxPhi = *it;
+<a name="l01104"></a>01104     <a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *VecRdxPhi = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1PHINode.html">PHINode</a>>(WidenMap[RdxPhi]);
+<a name="l01105"></a>01105     assert(RdxPhi && <span class="stringliteral">"Unable to recover vectorized PHI"</span>);
+<a name="l01106"></a>01106 
+<a name="l01107"></a>01107     <span class="comment">// Find the reduction variable descriptor.</span>
+<a name="l01108"></a>01108     assert(Legal->getReductionVars()->count(RdxPhi) &&
+<a name="l01109"></a>01109            <span class="stringliteral">"Unable to find the reduction variable"</span>);
+<a name="l01110"></a>01110     LoopVectorizationLegality::ReductionDescriptor RdxDesc =
+<a name="l01111"></a>01111       (*Legal->getReductionVars())[RdxPhi];
+<a name="l01112"></a>01112 
+<a name="l01113"></a>01113     <span class="comment">// We need to generate a reduction vector from the incoming scalar.</span>
+<a name="l01114"></a>01114     <span class="comment">// To do so, we need to generate the 'identity' vector and overide</span>
+<a name="l01115"></a>01115     <span class="comment">// one of the elements with the incoming scalar reduction. We need</span>
+<a name="l01116"></a>01116     <span class="comment">// to do it in the vector-loop preheader.</span>
+<a name="l01117"></a>01117     Builder.SetInsertPoint(LoopBypassBlock->getTerminator());
+<a name="l01118"></a>01118 
+<a name="l01119"></a>01119     <span class="comment">// This is the vector-clone of the value that leaves the loop.</span>
+<a name="l01120"></a>01120     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *VectorExit = getVectorValue(RdxDesc.LoopExitInstr);
+<a name="l01121"></a>01121     <a class="code" href="classllvm_1_1Type.html">Type</a> *VecTy = VectorExit-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>();
+<a name="l01122"></a>01122 
+<a name="l01123"></a>01123     <span class="comment">// Find the reduction identity variable. Zero for addition, or, xor,</span>
+<a name="l01124"></a>01124     <span class="comment">// one for multiplication, -1 for And.</span>
+<a name="l01125"></a>01125     <a class="code" href="classllvm_1_1Constant.html" title="LLVM Constant Representation.">Constant</a> *Identity = getUniformVector(getReductionIdentity(RdxDesc.Kind),
+<a name="l01126"></a>01126                                           VecTy-><a class="code" href="classllvm_1_1Type.html#a8eafa71cf399da8f21b2af5549f3f9e7">getScalarType</a>());
+<a name="l01127"></a>01127 
+<a name="l01128"></a>01128     <span class="comment">// This vector is the Identity vector where the first element is the</span>
+<a name="l01129"></a>01129     <span class="comment">// incoming scalar reduction.</span>
+<a name="l01130"></a>01130     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *VectorStart = Builder.CreateInsertElement(Identity,
+<a name="l01131"></a>01131                                                     RdxDesc.StartValue, Zero);
+<a name="l01132"></a>01132 
+<a name="l01133"></a>01133 
+<a name="l01134"></a>01134     <span class="comment">// Fix the vector-loop phi.</span>
+<a name="l01135"></a>01135     <span class="comment">// We created the induction variable so we know that the</span>
+<a name="l01136"></a>01136     <span class="comment">// preheader is the first entry.</span>
+<a name="l01137"></a>01137     <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *VecPreheader = Induction->getIncomingBlock(0);
+<a name="l01138"></a>01138 
+<a name="l01139"></a>01139     <span class="comment">// Reductions do not have to start at zero. They can start with</span>
+<a name="l01140"></a>01140     <span class="comment">// any loop invariant values.</span>
+<a name="l01141"></a>01141     VecRdxPhi-><a class="code" href="classllvm_1_1PHINode.html#a089cccb6f231efee72abc76d0f9c695f">addIncoming</a>(VectorStart, VecPreheader);
+<a name="l01142"></a>01142     <span class="keywordtype">unsigned</span> SelfEdgeIdx = (RdxPhi)->getBasicBlockIndex(LoopScalarBody);
+<a name="l01143"></a>01143     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Val = getVectorValue(RdxPhi-><a class="code" href="classllvm_1_1PHINode.html#aba6a4cc4ed6d6fef3664b8d65ef04820">getIncomingValue</a>(SelfEdgeIdx));
+<a name="l01144"></a>01144     VecRdxPhi-><a class="code" href="classllvm_1_1PHINode.html#a089cccb6f231efee72abc76d0f9c695f">addIncoming</a>(Val, LoopVectorBody);
+<a name="l01145"></a>01145 
+<a name="l01146"></a>01146     <span class="comment">// Before each round, move the insertion point right between</span>
+<a name="l01147"></a>01147     <span class="comment">// the PHIs and the values we are going to write.</span>
+<a name="l01148"></a>01148     <span class="comment">// This allows us to write both PHINodes and the extractelement</span>
+<a name="l01149"></a>01149     <span class="comment">// instructions.</span>
+<a name="l01150"></a>01150     Builder.SetInsertPoint(LoopMiddleBlock->getFirstInsertionPt());
+<a name="l01151"></a>01151 
+<a name="l01152"></a>01152     <span class="comment">// This PHINode contains the vectorized reduction variable, or</span>
+<a name="l01153"></a>01153     <span class="comment">// the initial value vector, if we bypass the vector loop.</span>
+<a name="l01154"></a>01154     <a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *NewPhi = Builder.CreatePHI(VecTy, 2, <span class="stringliteral">"rdx.vec.exit.phi"</span>);
+<a name="l01155"></a>01155     NewPhi-><a class="code" href="classllvm_1_1PHINode.html#a089cccb6f231efee72abc76d0f9c695f">addIncoming</a>(VectorStart, LoopBypassBlock);
+<a name="l01156"></a>01156     NewPhi-><a class="code" href="classllvm_1_1PHINode.html#a089cccb6f231efee72abc76d0f9c695f">addIncoming</a>(getVectorValue(RdxDesc.LoopExitInstr), LoopVectorBody);
+<a name="l01157"></a>01157 
+<a name="l01158"></a>01158     <span class="comment">// Extract the first scalar.</span>
+<a name="l01159"></a>01159     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Scalar0 =
+<a name="l01160"></a>01160       Builder.CreateExtractElement(NewPhi, Builder.getInt32(0));
+<a name="l01161"></a>01161     <span class="comment">// Extract and reduce the remaining vector elements.</span>
+<a name="l01162"></a>01162     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i=1; i < VF; ++i) {
+<a name="l01163"></a>01163       <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Scalar1 =
+<a name="l01164"></a>01164         Builder.CreateExtractElement(NewPhi, Builder.getInt32(i));
+<a name="l01165"></a>01165       <span class="keywordflow">switch</span> (RdxDesc.Kind) {
+<a name="l01166"></a>01166         <span class="keywordflow">case</span> LoopVectorizationLegality::IntegerAdd:
+<a name="l01167"></a>01167           Scalar0 = Builder.CreateAdd(Scalar0, Scalar1);
+<a name="l01168"></a>01168           <span class="keywordflow">break</span>;
+<a name="l01169"></a>01169         <span class="keywordflow">case</span> LoopVectorizationLegality::IntegerMult:
+<a name="l01170"></a>01170           Scalar0 = Builder.CreateMul(Scalar0, Scalar1);
+<a name="l01171"></a>01171           <span class="keywordflow">break</span>;
+<a name="l01172"></a>01172         <span class="keywordflow">case</span> LoopVectorizationLegality::IntegerOr:
+<a name="l01173"></a>01173           Scalar0 = Builder.CreateOr(Scalar0, Scalar1);
+<a name="l01174"></a>01174           <span class="keywordflow">break</span>;
+<a name="l01175"></a>01175         <span class="keywordflow">case</span> LoopVectorizationLegality::IntegerAnd:
+<a name="l01176"></a>01176           Scalar0 = Builder.CreateAnd(Scalar0, Scalar1);
+<a name="l01177"></a>01177           <span class="keywordflow">break</span>;
+<a name="l01178"></a>01178         <span class="keywordflow">case</span> LoopVectorizationLegality::IntegerXor:
+<a name="l01179"></a>01179           Scalar0 = Builder.CreateXor(Scalar0, Scalar1);
+<a name="l01180"></a>01180           <span class="keywordflow">break</span>;
+<a name="l01181"></a>01181         <span class="keywordflow">default</span>:
+<a name="l01182"></a>01182           <a class="code" href="ErrorHandling_8h.html#ace243f5c25697a1107cce46626b3dc94">llvm_unreachable</a>(<span class="stringliteral">"Unknown reduction operation"</span>);
+<a name="l01183"></a>01183       }
+<a name="l01184"></a>01184     }
+<a name="l01185"></a>01185 
+<a name="l01186"></a>01186     <span class="comment">// Now, we need to fix the users of the reduction variable</span>
+<a name="l01187"></a>01187     <span class="comment">// inside and outside of the scalar remainder loop.</span>
+<a name="l01188"></a>01188     <span class="comment">// We know that the loop is in LCSSA form. We need to update the</span>
+<a name="l01189"></a>01189     <span class="comment">// PHI nodes in the exit blocks.</span>
+<a name="l01190"></a>01190     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> LEI = LoopExitBlock->begin(),
+<a name="l01191"></a>01191          LEE = LoopExitBlock->end(); LEI != LEE; ++LEI) {
+<a name="l01192"></a>01192       <a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *LCSSAPhi = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1PHINode.html">PHINode</a>>(LEI);
+<a name="l01193"></a>01193       <span class="keywordflow">if</span> (!LCSSAPhi) <span class="keywordflow">continue</span>;
+<a name="l01194"></a>01194 
+<a name="l01195"></a>01195       <span class="comment">// All PHINodes need to have a single entry edge, or two if</span>
+<a name="l01196"></a>01196       <span class="comment">// we already fixed them.</span>
+<a name="l01197"></a>01197       assert(LCSSAPhi-><a class="code" href="classllvm_1_1PHINode.html#aa45f6c0433576e3858a6209a43750ad4">getNumIncomingValues</a>() < 3 && <span class="stringliteral">"Invalid LCSSA PHI"</span>);
+<a name="l01198"></a>01198 
+<a name="l01199"></a>01199       <span class="comment">// We found our reduction value exit-PHI. Update it with the</span>
+<a name="l01200"></a>01200       <span class="comment">// incoming bypass edge.</span>
+<a name="l01201"></a>01201       <span class="keywordflow">if</span> (LCSSAPhi-><a class="code" href="classllvm_1_1PHINode.html#aba6a4cc4ed6d6fef3664b8d65ef04820">getIncomingValue</a>(0) == RdxDesc.LoopExitInstr) {
+<a name="l01202"></a>01202         <span class="comment">// Add an edge coming from the bypass.</span>
+<a name="l01203"></a>01203         LCSSAPhi-><a class="code" href="classllvm_1_1PHINode.html#a089cccb6f231efee72abc76d0f9c695f">addIncoming</a>(Scalar0, LoopMiddleBlock);
+<a name="l01204"></a>01204         <span class="keywordflow">break</span>;
+<a name="l01205"></a>01205       }
+<a name="l01206"></a>01206     }<span class="comment">// end of the LCSSA phi scan.</span>
+<a name="l01207"></a>01207 
+<a name="l01208"></a>01208     <span class="comment">// Fix the scalar loop reduction variable with the incoming reduction sum</span>
+<a name="l01209"></a>01209     <span class="comment">// from the vector body and from the backedge value.</span>
+<a name="l01210"></a>01210     <span class="keywordtype">int</span> IncomingEdgeBlockIdx = (RdxPhi)->getBasicBlockIndex(LoopScalarBody);
+<a name="l01211"></a>01211     <span class="keywordtype">int</span> SelfEdgeBlockIdx = (IncomingEdgeBlockIdx ? 0 : 1); <span class="comment">// The other block.</span>
+<a name="l01212"></a>01212     (RdxPhi)->setIncomingValue(SelfEdgeBlockIdx, Scalar0);
+<a name="l01213"></a>01213     (RdxPhi)->setIncomingValue(IncomingEdgeBlockIdx, RdxDesc.LoopExitInstr);
+<a name="l01214"></a>01214   }<span class="comment">// end of for each redux variable.</span>
+<a name="l01215"></a>01215 }
+<a name="l01216"></a>01216 
+<a name="l01217"></a>01217 <span class="keywordtype">void</span> SingleBlockLoopVectorizer::updateAnalysis() {
+<a name="l01218"></a>01218   <span class="comment">// The original basic block.</span>
+<a name="l01219"></a>01219   SE->forgetLoop(OrigLoop);
+<a name="l01220"></a>01220 
+<a name="l01221"></a>01221   <span class="comment">// Update the dominator tree information.</span>
+<a name="l01222"></a>01222   assert(DT->properlyDominates(LoopBypassBlock, LoopExitBlock) &&
+<a name="l01223"></a>01223          <span class="stringliteral">"Entry does not dominate exit."</span>);
+<a name="l01224"></a>01224 
+<a name="l01225"></a>01225   DT->addNewBlock(LoopVectorPreHeader, LoopBypassBlock);
+<a name="l01226"></a>01226   DT->addNewBlock(LoopVectorBody, LoopVectorPreHeader);
+<a name="l01227"></a>01227   DT->addNewBlock(LoopMiddleBlock, LoopBypassBlock);
+<a name="l01228"></a>01228   DT->addNewBlock(LoopScalarPreHeader, LoopMiddleBlock);
+<a name="l01229"></a>01229   DT->changeImmediateDominator(LoopScalarBody, LoopScalarPreHeader);
+<a name="l01230"></a>01230   DT->changeImmediateDominator(LoopExitBlock, LoopMiddleBlock);
+<a name="l01231"></a>01231 
+<a name="l01232"></a>01232   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(DT->verifyAnalysis());
+<a name="l01233"></a>01233 }
+<a name="l01234"></a>01234 
+<a name="l01235"></a>01235 <span class="keywordtype">bool</span> LoopVectorizationLegality::canVectorize() {
+<a name="l01236"></a>01236   <span class="keywordflow">if</span> (!TheLoop->getLoopPreheader()) {
+<a name="l01237"></a>01237     assert(<span class="keyword">false</span> && <span class="stringliteral">"No preheader!!"</span>);
+<a name="l01238"></a>01238     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Loop not normalized."</span> << <span class="stringliteral">"\n"</span>);
+<a name="l01239"></a>01239     <span class="keywordflow">return</span>  <span class="keyword">false</span>;
+<a name="l01240"></a>01240   }
+<a name="l01241"></a>01241 
+<a name="l01242"></a>01242   <span class="comment">// We can only vectorize single basic block loops.</span>
+<a name="l01243"></a>01243   <span class="keywordtype">unsigned</span> NumBlocks = TheLoop->getNumBlocks();
+<a name="l01244"></a>01244   <span class="keywordflow">if</span> (NumBlocks != 1) {
+<a name="l01245"></a>01245     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Too many blocks:"</span> << NumBlocks << <span class="stringliteral">"\n"</span>);
+<a name="l01246"></a>01246     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01247"></a>01247   }
+<a name="l01248"></a>01248 
+<a name="l01249"></a>01249   <span class="comment">// We need to have a loop header.</span>
+<a name="l01250"></a>01250   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *BB = TheLoop->getHeader();
+<a name="l01251"></a>01251   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found a loop: "</span> << BB-><a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>() << <span class="stringliteral">"\n"</span>);
+<a name="l01252"></a>01252 
+<a name="l01253"></a>01253   <span class="comment">// ScalarEvolution needs to be able to find the exit count.</span>
+<a name="l01254"></a>01254   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEV.html">SCEV</a> *ExitCount = SE->getExitCount(TheLoop, BB);
+<a name="l01255"></a>01255   <span class="keywordflow">if</span> (ExitCount == SE->getCouldNotCompute()) {
+<a name="l01256"></a>01256     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: SCEV could not compute the loop exit count.\n"</span>);
+<a name="l01257"></a>01257     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01258"></a>01258   }
+<a name="l01259"></a>01259 
+<a name="l01260"></a>01260   <span class="comment">// Do not loop-vectorize loops with a tiny trip count.</span>
+<a name="l01261"></a>01261   <span class="keywordtype">unsigned</span> TC = SE->getSmallConstantTripCount(TheLoop, BB);
+<a name="l01262"></a>01262   <span class="keywordflow">if</span> (TC > 0u && TC < <a class="code" href="LoopVectorize_8cpp.html#ad59a718a5efbaeb28e491479d0cad580" title="We don't vectorize loops with a known constant trip count below this number.">TinyTripCountThreshold</a>) {
+<a name="l01263"></a>01263     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found a loop with a very small trip count. "</span> <<
+<a name="l01264"></a>01264           <span class="stringliteral">"This loop is not worth vectorizing.\n"</span>);
+<a name="l01265"></a>01265     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01266"></a>01266   }
+<a name="l01267"></a>01267 
+<a name="l01268"></a>01268   <span class="comment">// Go over each instruction and look at memory deps.</span>
+<a name="l01269"></a>01269   <span class="keywordflow">if</span> (!canVectorizeBlock(*BB)) {
+<a name="l01270"></a>01270     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Can't vectorize this loop header\n"</span>);
+<a name="l01271"></a>01271     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01272"></a>01272   }
+<a name="l01273"></a>01273 
+<a name="l01274"></a>01274   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: We can vectorize this loop"</span> <<
+<a name="l01275"></a>01275         (PtrRtCheck.Need ? <span class="stringliteral">" (with a runtime bound check)"</span> : <span class="stringliteral">""</span>)
+<a name="l01276"></a>01276         <<<span class="stringliteral">"!\n"</span>);
+<a name="l01277"></a>01277 
+<a name="l01278"></a>01278   <span class="comment">// Okay! We can vectorize. At this point we don't have any other mem analysis</span>
+<a name="l01279"></a>01279   <span class="comment">// which may limit our maximum vectorization factor, so just return true with</span>
+<a name="l01280"></a>01280   <span class="comment">// no restrictions.</span>
+<a name="l01281"></a>01281   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01282"></a>01282 }
+<a name="l01283"></a>01283 
+<a name="l01284"></a>01284 <span class="keywordtype">bool</span> LoopVectorizationLegality::canVectorizeBlock(<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> &BB) {
+<a name="l01285"></a>01285   <span class="comment">// Scan the instructions in the block and look for hazards.</span>
+<a name="l01286"></a>01286   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> it = BB.<a class="code" href="classllvm_1_1BasicBlock.html#a0ed5f3ab3c2e4196ee0cffffa080c062">begin</a>(), e = BB.<a class="code" href="classllvm_1_1BasicBlock.html#a0b4e7bee9b8575cc7db73329f1a561bd">end</a>(); it != e; ++it) {
+<a name="l01287"></a>01287     <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = it;
+<a name="l01288"></a>01288 
+<a name="l01289"></a>01289     <a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *Phi = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1PHINode.html">PHINode</a>>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>);
+<a name="l01290"></a>01290     <span class="keywordflow">if</span> (Phi) {
+<a name="l01291"></a>01291       <span class="comment">// This should not happen because the loop should be normalized.</span>
+<a name="l01292"></a>01292       <span class="keywordflow">if</span> (Phi-><a class="code" href="classllvm_1_1PHINode.html#aa45f6c0433576e3858a6209a43750ad4">getNumIncomingValues</a>() != 2) {
+<a name="l01293"></a>01293         <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found an invalid PHI.\n"</span>);
+<a name="l01294"></a>01294         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01295"></a>01295       }
+<a name="l01296"></a>01296       <span class="comment">// We only look at integer phi nodes.</span>
+<a name="l01297"></a>01297       <span class="keywordflow">if</span> (!Phi-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()-><a class="code" href="classllvm_1_1Type.html#a6e328feb83afa5cf1c966d6704e43fc1">isIntegerTy</a>()) {
+<a name="l01298"></a>01298         <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found an non-int PHI.\n"</span>);
+<a name="l01299"></a>01299         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01300"></a>01300       }
+<a name="l01301"></a>01301 
+<a name="l01302"></a>01302       <span class="keywordflow">if</span> (isInductionVariable(Phi)) {
+<a name="l01303"></a>01303         <span class="keywordflow">if</span> (Induction) {
+<a name="l01304"></a>01304           <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found too many inductions."</span><< *Phi <<<span class="stringliteral">"\n"</span>);
+<a name="l01305"></a>01305           <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01306"></a>01306         }
+<a name="l01307"></a>01307         <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found the induction PHI."</span><< *Phi <<<span class="stringliteral">"\n"</span>);
+<a name="l01308"></a>01308         Induction = Phi;
+<a name="l01309"></a>01309         <span class="keywordflow">continue</span>;
+<a name="l01310"></a>01310       }
+<a name="l01311"></a>01311       <span class="keywordflow">if</span> (AddReductionVar(Phi, IntegerAdd)) {
+<a name="l01312"></a>01312         <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found an ADD reduction PHI."</span><< *Phi <<<span class="stringliteral">"\n"</span>);
+<a name="l01313"></a>01313         <span class="keywordflow">continue</span>;
+<a name="l01314"></a>01314       }
+<a name="l01315"></a>01315       <span class="keywordflow">if</span> (AddReductionVar(Phi, IntegerMult)) {
+<a name="l01316"></a>01316         <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found a MUL reduction PHI."</span><< *Phi <<<span class="stringliteral">"\n"</span>);
+<a name="l01317"></a>01317         <span class="keywordflow">continue</span>;
+<a name="l01318"></a>01318       }
+<a name="l01319"></a>01319       <span class="keywordflow">if</span> (AddReductionVar(Phi, IntegerOr)) {
+<a name="l01320"></a>01320         <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found an OR reduction PHI."</span><< *Phi <<<span class="stringliteral">"\n"</span>);
+<a name="l01321"></a>01321         <span class="keywordflow">continue</span>;
+<a name="l01322"></a>01322       }
+<a name="l01323"></a>01323       <span class="keywordflow">if</span> (AddReductionVar(Phi, IntegerAnd)) {
+<a name="l01324"></a>01324         <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found an AND reduction PHI."</span><< *Phi <<<span class="stringliteral">"\n"</span>);
+<a name="l01325"></a>01325         <span class="keywordflow">continue</span>;
+<a name="l01326"></a>01326       }
+<a name="l01327"></a>01327       <span class="keywordflow">if</span> (AddReductionVar(Phi, IntegerXor)) {
+<a name="l01328"></a>01328         <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found a XOR reduction PHI."</span><< *Phi <<<span class="stringliteral">"\n"</span>);
+<a name="l01329"></a>01329         <span class="keywordflow">continue</span>;
+<a name="l01330"></a>01330       }
+<a name="l01331"></a>01331 
+<a name="l01332"></a>01332       <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found an unidentified PHI."</span><< *Phi <<<span class="stringliteral">"\n"</span>);
+<a name="l01333"></a>01333       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01334"></a>01334     }<span class="comment">// end of PHI handling</span>
+<a name="l01335"></a>01335 
+<a name="l01336"></a>01336     <span class="comment">// We still don't handle functions.</span>
+<a name="l01337"></a>01337     <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1CallInst.html">CallInst</a>>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>);
+<a name="l01338"></a>01338     <span class="keywordflow">if</span> (CI) {
+<a name="l01339"></a>01339       <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found a call site.\n"</span>);
+<a name="l01340"></a>01340       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01341"></a>01341     }
+<a name="l01342"></a>01342 
+<a name="l01343"></a>01343     <span class="comment">// We do not re-vectorize vectors.</span>
+<a name="l01344"></a>01344     <span class="keywordflow">if</span> (!<a class="code" href="classllvm_1_1VectorType.html#a071e25c5c6eae5299b1cdc3350c6d55c">VectorType::isValidElementType</a>(I-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()) &&
+<a name="l01345"></a>01345         !I-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>()-><a class="code" href="classllvm_1_1Type.html#af5c7041df3ad5edffe5da17b5264c1fc" title="isVoidTy - Return true if this is 'void'.">isVoidTy</a>()) {
+<a name="l01346"></a>01346       <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found unvectorizable type."</span> << <span class="stringliteral">"\n"</span>);
+<a name="l01347"></a>01347       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01348"></a>01348     }
+<a name="l01349"></a>01349 
+<a name="l01350"></a>01350     <span class="comment">// Reduction instructions are allowed to have exit users.</span>
+<a name="l01351"></a>01351     <span class="comment">// All other instructions must not have external users.</span>
+<a name="l01352"></a>01352     <span class="keywordflow">if</span> (!AllowedExit.count(I))
+<a name="l01353"></a>01353       <span class="comment">//Check that all of the users of the loop are inside the BB.</span>
+<a name="l01354"></a>01354       <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1value__use__iterator.html">Value::use_iterator</a> it = I-><a class="code" href="classllvm_1_1Value.html#a413abcab8dbc3900fc2fde96a5d8fca6">use_begin</a>(), e = I-><a class="code" href="classllvm_1_1Value.html#ad86469939d2a8bdd4169be9403b89f5a">use_end</a>();
+<a name="l01355"></a>01355            it != e; ++it) {
+<a name="l01356"></a>01356         <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *U = cast<Instruction>(*it);
+<a name="l01357"></a>01357         <span class="comment">// This user may be a reduction exit value.</span>
+<a name="l01358"></a>01358         <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *Parent = U-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>();
+<a name="l01359"></a>01359         <span class="keywordflow">if</span> (Parent != &BB) {
+<a name="l01360"></a>01360           <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found an outside user for : "</span><< *U << <span class="stringliteral">"\n"</span>);
+<a name="l01361"></a>01361           <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01362"></a>01362         }
+<a name="l01363"></a>01363     }
+<a name="l01364"></a>01364   } <span class="comment">// next instr.</span>
+<a name="l01365"></a>01365 
+<a name="l01366"></a>01366   <span class="keywordflow">if</span> (!Induction) {
+<a name="l01367"></a>01367       <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Did not find an induction var.\n"</span>);
+<a name="l01368"></a>01368       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01369"></a>01369   }
+<a name="l01370"></a>01370 
+<a name="l01371"></a>01371   <span class="comment">// Don't vectorize if the memory dependencies do not allow vectorization.</span>
+<a name="l01372"></a>01372   <span class="keywordflow">if</span> (!canVectorizeMemory(BB))
+<a name="l01373"></a>01373     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01374"></a>01374 
+<a name="l01375"></a>01375   <span class="comment">// We now know that the loop is vectorizable!</span>
+<a name="l01376"></a>01376   <span class="comment">// Collect variables that will remain uniform after vectorization.</span>
+<a name="l01377"></a>01377   std::vector<Value*> Worklist;
+<a name="l01378"></a>01378 
+<a name="l01379"></a>01379   <span class="comment">// Start with the conditional branch and walk up the block.</span>
+<a name="l01380"></a>01380   Worklist.push_back(BB.<a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>()-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0));
+<a name="l01381"></a>01381 
+<a name="l01382"></a>01382   <span class="keywordflow">while</span> (Worklist.size()) {
+<a name="l01383"></a>01383     <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1Instruction.html">Instruction</a>>(Worklist.back());
+<a name="l01384"></a>01384     Worklist.pop_back();
+<a name="l01385"></a>01385     <span class="comment">// Look at instructions inside this block.</span>
+<a name="l01386"></a>01386     <span class="keywordflow">if</span> (!I) <span class="keywordflow">continue</span>;
+<a name="l01387"></a>01387     <span class="keywordflow">if</span> (I-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>() != &BB) <span class="keywordflow">continue</span>;
+<a name="l01388"></a>01388 
+<a name="l01389"></a>01389     <span class="comment">// Stop when reaching PHI nodes.</span>
+<a name="l01390"></a>01390     <span class="keywordflow">if</span> (isa<PHINode>(I)) {
+<a name="l01391"></a>01391       assert(I == Induction && <span class="stringliteral">"Found a uniform PHI that is not the induction"</span>);
+<a name="l01392"></a>01392       <span class="keywordflow">break</span>;
+<a name="l01393"></a>01393     }
+<a name="l01394"></a>01394 
+<a name="l01395"></a>01395     <span class="comment">// This is a known uniform.</span>
+<a name="l01396"></a>01396     Uniforms.insert(I);
+<a name="l01397"></a>01397 
+<a name="l01398"></a>01398     <span class="comment">// Insert all operands.</span>
+<a name="l01399"></a>01399     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0, Op = I-><a class="code" href="classllvm_1_1User.html#a2f81e0c1fc6554df7ad2eafabf5fc5a5">getNumOperands</a>(); i < Op; ++i) {
+<a name="l01400"></a>01400       Worklist.push_back(I-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(i));
+<a name="l01401"></a>01401     }
+<a name="l01402"></a>01402   }
+<a name="l01403"></a>01403 
+<a name="l01404"></a>01404   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01405"></a>01405 }
+<a name="l01406"></a>01406 
+<a name="l01407"></a>01407 <span class="keywordtype">bool</span> LoopVectorizationLegality::canVectorizeMemory(<a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> &BB) {
+<a name="l01408"></a>01408   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Value*, 16></a> ValueVector;
+<a name="l01409"></a>01409   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1SmallPtrSet.html">SmallPtrSet<Value*, 16></a> ValueSet;
+<a name="l01410"></a>01410   <span class="comment">// Holds the Load and Store *instructions*.</span>
+<a name="l01411"></a>01411   ValueVector Loads;
+<a name="l01412"></a>01412   ValueVector Stores;
+<a name="l01413"></a>01413   PtrRtCheck.Pointers.<a class="code" href="classllvm_1_1SmallPtrSetImpl.html#aa72472422d95c7052d62432ec279ff85">clear</a>();
+<a name="l01414"></a>01414   PtrRtCheck.Need = <span class="keyword">false</span>;
+<a name="l01415"></a>01415 
+<a name="l01416"></a>01416   <span class="comment">// Scan the BB and collect legal loads and stores.</span>
+<a name="l01417"></a>01417   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> it = BB.<a class="code" href="classllvm_1_1BasicBlock.html#a0ed5f3ab3c2e4196ee0cffffa080c062">begin</a>(), e = BB.<a class="code" href="classllvm_1_1BasicBlock.html#a0b4e7bee9b8575cc7db73329f1a561bd">end</a>(); it != e; ++it) {
+<a name="l01418"></a>01418     <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = it;
+<a name="l01419"></a>01419 
+<a name="l01420"></a>01420     <span class="comment">// If this is a load, save it. If this instruction can read from memory</span>
+<a name="l01421"></a>01421     <span class="comment">// but is not a load, then we quit. Notice that we don't handle function</span>
+<a name="l01422"></a>01422     <span class="comment">// calls that read or write.</span>
+<a name="l01423"></a>01423     <span class="keywordflow">if</span> (I-><a class="code" href="classllvm_1_1Instruction.html#a0fd8d3c26bf5cd614b0e6a9b8886a5d0">mayReadFromMemory</a>()) {
+<a name="l01424"></a>01424       <a class="code" href="classllvm_1_1LoadInst.html">LoadInst</a> *Ld = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1LoadInst.html">LoadInst</a>>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>);
+<a name="l01425"></a>01425       <span class="keywordflow">if</span> (!Ld) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01426"></a>01426       <span class="keywordflow">if</span> (!Ld-><a class="code" href="classllvm_1_1LoadInst.html#a156c478ee8e7d1602143cdbad4bd5385">isSimple</a>()) {
+<a name="l01427"></a>01427         <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found a non-simple load.\n"</span>);
+<a name="l01428"></a>01428         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01429"></a>01429       }
+<a name="l01430"></a>01430       Loads.push_back(Ld);
+<a name="l01431"></a>01431       <span class="keywordflow">continue</span>;
+<a name="l01432"></a>01432     }
+<a name="l01433"></a>01433 
+<a name="l01434"></a>01434     <span class="comment">// Save store instructions. Abort if other instructions write to memory.</span>
+<a name="l01435"></a>01435     <span class="keywordflow">if</span> (I-><a class="code" href="classllvm_1_1Instruction.html#aa26de3d6e38997b9041e824ea558c770">mayWriteToMemory</a>()) {
+<a name="l01436"></a>01436       <a class="code" href="classllvm_1_1StoreInst.html">StoreInst</a> *St = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1StoreInst.html">StoreInst</a>>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>);
+<a name="l01437"></a>01437       <span class="keywordflow">if</span> (!St) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01438"></a>01438       <span class="keywordflow">if</span> (!St-><a class="code" href="classllvm_1_1StoreInst.html#a1149c7eeefca671ac2685bca13843568">isSimple</a>()) {
+<a name="l01439"></a>01439         <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found a non-simple store.\n"</span>);
+<a name="l01440"></a>01440         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01441"></a>01441       }
+<a name="l01442"></a>01442       Stores.push_back(St);
+<a name="l01443"></a>01443     }
+<a name="l01444"></a>01444   } <span class="comment">// next instr.</span>
+<a name="l01445"></a>01445 
+<a name="l01446"></a>01446   <span class="comment">// Now we have two lists that hold the loads and the stores.</span>
+<a name="l01447"></a>01447   <span class="comment">// Next, we find the pointers that they use.</span>
+<a name="l01448"></a>01448 
+<a name="l01449"></a>01449   <span class="comment">// Check if we see any stores. If there are no stores, then we don't</span>
+<a name="l01450"></a>01450   <span class="comment">// care if the pointers are *restrict*.</span>
+<a name="l01451"></a>01451   <span class="keywordflow">if</span> (!Stores.size()) {
+<a name="l01452"></a>01452         <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found a read-only loop!\n"</span>);
+<a name="l01453"></a>01453         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01454"></a>01454   }
+<a name="l01455"></a>01455 
+<a name="l01456"></a>01456   <span class="comment">// Holds the read and read-write *pointers* that we find.</span>
+<a name="l01457"></a>01457   ValueVector Reads;
+<a name="l01458"></a>01458   ValueVector ReadWrites;
+<a name="l01459"></a>01459 
+<a name="l01460"></a>01460   <span class="comment">// Holds the analyzed pointers. We don't want to call GetUnderlyingObjects</span>
+<a name="l01461"></a>01461   <span class="comment">// multiple times on the same object. If the ptr is accessed twice, once</span>
+<a name="l01462"></a>01462   <span class="comment">// for read and once for write, it will only appear once (on the write</span>
+<a name="l01463"></a>01463   <span class="comment">// list). This is okay, since we are going to check for conflicts between</span>
+<a name="l01464"></a>01464   <span class="comment">// writes and between reads and writes, but not between reads and reads.</span>
+<a name="l01465"></a>01465   ValueSet Seen;
+<a name="l01466"></a>01466 
+<a name="l01467"></a>01467   ValueVector::iterator <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>, <a class="code" href="namespacellvm_1_1ARM__PROC.html#a1add7850fad3f66c140ecee871460ea4ae9d798593a4a6b5cc48486a453a59e5e">IE</a>;
+<a name="l01468"></a>01468   <span class="keywordflow">for</span> (I = Stores.begin(), IE = Stores.end(); I != <a class="code" href="namespacellvm_1_1ARM__PROC.html#a1add7850fad3f66c140ecee871460ea4ae9d798593a4a6b5cc48486a453a59e5e">IE</a>; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l01469"></a>01469     <a class="code" href="classllvm_1_1StoreInst.html">StoreInst</a> *<a class="code" href="namespacellvm_1_1ARM__MB.html#ad70272e2a9ec2a7e3a497458e1edbc85aed0b9bef861c96eee19e89db753db7b2">ST</a> = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1StoreInst.html">StoreInst</a>>(*I);
+<a name="l01470"></a>01470     assert(ST && <span class="stringliteral">"Bad StoreInst"</span>);
+<a name="l01471"></a>01471     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>* Ptr = ST-><a class="code" href="classllvm_1_1StoreInst.html#ac03c1c093059ea000216af8dd6f2dbf4">getPointerOperand</a>();
+<a name="l01472"></a>01472 
+<a name="l01473"></a>01473     <span class="keywordflow">if</span> (isUniform(Ptr)) {
+<a name="l01474"></a>01474       <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: We don't allow storing to uniform addresses\n"</span>);
+<a name="l01475"></a>01475       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01476"></a>01476     }
+<a name="l01477"></a>01477 
+<a name="l01478"></a>01478     <span class="comment">// If we did *not* see this pointer before, insert it to</span>
+<a name="l01479"></a>01479     <span class="comment">// the read-write list. At this phase it is only a 'write' list.</span>
+<a name="l01480"></a>01480     <span class="keywordflow">if</span> (Seen.insert(Ptr))
+<a name="l01481"></a>01481       ReadWrites.push_back(Ptr);
+<a name="l01482"></a>01482   }
+<a name="l01483"></a>01483 
+<a name="l01484"></a>01484   <span class="keywordflow">for</span> (I = Loads.begin(), IE = Loads.end(); I != <a class="code" href="namespacellvm_1_1ARM__PROC.html#a1add7850fad3f66c140ecee871460ea4ae9d798593a4a6b5cc48486a453a59e5e">IE</a>; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l01485"></a>01485     <a class="code" href="classllvm_1_1LoadInst.html">LoadInst</a> *LD = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1LoadInst.html">LoadInst</a>>(*I);
+<a name="l01486"></a>01486     assert(LD && <span class="stringliteral">"Bad LoadInst"</span>);
+<a name="l01487"></a>01487     <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>* Ptr = LD-><a class="code" href="classllvm_1_1LoadInst.html#ad47eefa1d094f60494b6b927061ca001">getPointerOperand</a>();
+<a name="l01488"></a>01488     <span class="comment">// If we did *not* see this pointer before, insert it to the</span>
+<a name="l01489"></a>01489     <span class="comment">// read list. If we *did* see it before, then it is already in</span>
+<a name="l01490"></a>01490     <span class="comment">// the read-write list. This allows us to vectorize expressions</span>
+<a name="l01491"></a>01491     <span class="comment">// such as A[i] += x;  Because the address of A[i] is a read-write</span>
+<a name="l01492"></a>01492     <span class="comment">// pointer. This only works if the index of A[i] is consecutive.</span>
+<a name="l01493"></a>01493     <span class="comment">// If the address of i is unknown (for example A[B[i]]) then we may</span>
+<a name="l01494"></a>01494     <span class="comment">// read a few words, modify, and write a few words, and some of the</span>
+<a name="l01495"></a>01495     <span class="comment">// words may be written to the same address.</span>
+<a name="l01496"></a>01496     <span class="keywordflow">if</span> (Seen.insert(Ptr) || !isConsecutiveGep(Ptr))
+<a name="l01497"></a>01497       Reads.push_back(Ptr);
+<a name="l01498"></a>01498   }
+<a name="l01499"></a>01499 
+<a name="l01500"></a>01500   <span class="comment">// If we write (or read-write) to a single destination and there are no</span>
+<a name="l01501"></a>01501   <span class="comment">// other reads in this loop then is it safe to vectorize.</span>
+<a name="l01502"></a>01502   <span class="keywordflow">if</span> (ReadWrites.size() == 1 && Reads.size() == 0) {
+<a name="l01503"></a>01503     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found a write-only loop!\n"</span>);
+<a name="l01504"></a>01504     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01505"></a>01505   }
+<a name="l01506"></a>01506 
+<a name="l01507"></a>01507   <span class="comment">// Find pointers with computable bounds. We are going to use this information</span>
+<a name="l01508"></a>01508   <span class="comment">// to place a runtime bound check.</span>
+<a name="l01509"></a>01509   <span class="keywordtype">bool</span> RT = <span class="keyword">true</span>;
+<a name="l01510"></a>01510   <span class="keywordflow">for</span> (I = ReadWrites.begin(), IE = ReadWrites.end(); I != <a class="code" href="namespacellvm_1_1ARM__PROC.html#a1add7850fad3f66c140ecee871460ea4ae9d798593a4a6b5cc48486a453a59e5e">IE</a>; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>)
+<a name="l01511"></a>01511     <span class="keywordflow">if</span> (hasComputableBounds(*I)) {
+<a name="l01512"></a>01512       PtrRtCheck.Pointers.push_back(*I);
+<a name="l01513"></a>01513       <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found a runtime check ptr:"</span> << **I <<<span class="stringliteral">"\n"</span>);
+<a name="l01514"></a>01514     } <span class="keywordflow">else</span> {
+<a name="l01515"></a>01515       RT = <span class="keyword">false</span>;
+<a name="l01516"></a>01516       <span class="keywordflow">break</span>;
+<a name="l01517"></a>01517     }
+<a name="l01518"></a>01518   <span class="keywordflow">for</span> (I = Reads.begin(), IE = Reads.end(); I != <a class="code" href="namespacellvm_1_1ARM__PROC.html#a1add7850fad3f66c140ecee871460ea4ae9d798593a4a6b5cc48486a453a59e5e">IE</a>; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>)
+<a name="l01519"></a>01519     <span class="keywordflow">if</span> (hasComputableBounds(*I)) {
+<a name="l01520"></a>01520       PtrRtCheck.Pointers.push_back(*I);
+<a name="l01521"></a>01521       <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found a runtime check ptr:"</span> << **I <<<span class="stringliteral">"\n"</span>);
+<a name="l01522"></a>01522     } <span class="keywordflow">else</span> {
+<a name="l01523"></a>01523       RT = <span class="keyword">false</span>;
+<a name="l01524"></a>01524       <span class="keywordflow">break</span>;
+<a name="l01525"></a>01525     }
+<a name="l01526"></a>01526 
+<a name="l01527"></a>01527   <span class="comment">// Check that we did not collect too many pointers or found a</span>
+<a name="l01528"></a>01528   <span class="comment">// unsizeable pointer.</span>
+<a name="l01529"></a>01529   <span class="keywordflow">if</span> (!RT || PtrRtCheck.Pointers.size() > <a class="code" href="LoopVectorize_8cpp.html#a952c05caf05575f974ed5bf7c1cf305f">RuntimeMemoryCheckThreshold</a>) {
+<a name="l01530"></a>01530     PtrRtCheck.Pointers.clear();
+<a name="l01531"></a>01531     RT = <span class="keyword">false</span>;
+<a name="l01532"></a>01532   }
+<a name="l01533"></a>01533 
+<a name="l01534"></a>01534   PtrRtCheck.Need = RT;
+<a name="l01535"></a>01535 
+<a name="l01536"></a>01536   <span class="keywordflow">if</span> (RT) {
+<a name="l01537"></a>01537     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: We can perform a memory runtime check if needed.\n"</span>);
+<a name="l01538"></a>01538   }
+<a name="l01539"></a>01539 
+<a name="l01540"></a>01540   <span class="comment">// Now that the pointers are in two lists (Reads and ReadWrites), we</span>
+<a name="l01541"></a>01541   <span class="comment">// can check that there are no conflicts between each of the writes and</span>
+<a name="l01542"></a>01542   <span class="comment">// between the writes to the reads.</span>
+<a name="l01543"></a>01543   ValueSet WriteObjects;
+<a name="l01544"></a>01544   ValueVector TempObjects;
+<a name="l01545"></a>01545 
+<a name="l01546"></a>01546   <span class="comment">// Check that the read-writes do not conflict with other read-write</span>
+<a name="l01547"></a>01547   <span class="comment">// pointers.</span>
+<a name="l01548"></a>01548   <span class="keywordflow">for</span> (I = ReadWrites.begin(), IE = ReadWrites.end(); I != <a class="code" href="namespacellvm_1_1ARM__PROC.html#a1add7850fad3f66c140ecee871460ea4ae9d798593a4a6b5cc48486a453a59e5e">IE</a>; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l01549"></a>01549     <a class="code" href="namespacellvm.html#ae7484b83e7c2b58ffd67422a919aba40">GetUnderlyingObjects</a>(*I, TempObjects, DL);
+<a name="l01550"></a>01550     <span class="keywordflow">for</span> (ValueVector::iterator it=TempObjects.begin(), e=TempObjects.end();
+<a name="l01551"></a>01551          it != e; ++it) {
+<a name="l01552"></a>01552       <span class="keywordflow">if</span> (!<a class="code" href="namespacellvm.html#aed2c5dd2a303159f87771db83f54352b">isIdentifiedObject</a>(*it)) {
+<a name="l01553"></a>01553         <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found an unidentified write ptr:"</span><< **it <<<span class="stringliteral">"\n"</span>);
+<a name="l01554"></a>01554         <span class="keywordflow">return</span> RT;
+<a name="l01555"></a>01555       }
+<a name="l01556"></a>01556       <span class="keywordflow">if</span> (!WriteObjects.insert(*it)) {
+<a name="l01557"></a>01557         <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found a possible write-write reorder:"</span>
+<a name="l01558"></a>01558               << **it <<<span class="stringliteral">"\n"</span>);
+<a name="l01559"></a>01559         <span class="keywordflow">return</span> RT;
+<a name="l01560"></a>01560       }
+<a name="l01561"></a>01561     }
+<a name="l01562"></a>01562     TempObjects.clear();
+<a name="l01563"></a>01563   }
+<a name="l01564"></a>01564 <span class="comment"></span>
+<a name="l01565"></a>01565 <span class="comment">  /// Check that the reads don't conflict with the read-writes.</span>
+<a name="l01566"></a>01566 <span class="comment"></span>  <span class="keywordflow">for</span> (I = Reads.begin(), IE = Reads.end(); I != <a class="code" href="namespacellvm_1_1ARM__PROC.html#a1add7850fad3f66c140ecee871460ea4ae9d798593a4a6b5cc48486a453a59e5e">IE</a>; ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l01567"></a>01567     <a class="code" href="namespacellvm.html#ae7484b83e7c2b58ffd67422a919aba40">GetUnderlyingObjects</a>(*I, TempObjects, DL);
+<a name="l01568"></a>01568     <span class="keywordflow">for</span> (ValueVector::iterator it=TempObjects.begin(), e=TempObjects.end();
+<a name="l01569"></a>01569          it != e; ++it) {
+<a name="l01570"></a>01570       <span class="keywordflow">if</span> (!<a class="code" href="namespacellvm.html#aed2c5dd2a303159f87771db83f54352b">isIdentifiedObject</a>(*it)) {
+<a name="l01571"></a>01571         <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found an unidentified read ptr:"</span><< **it <<<span class="stringliteral">"\n"</span>);
+<a name="l01572"></a>01572         <span class="keywordflow">return</span> RT;
+<a name="l01573"></a>01573       }
+<a name="l01574"></a>01574       <span class="keywordflow">if</span> (WriteObjects.count(*it)) {
+<a name="l01575"></a>01575         <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found a possible read/write reorder:"</span>
+<a name="l01576"></a>01576               << **it <<<span class="stringliteral">"\n"</span>);
+<a name="l01577"></a>01577         <span class="keywordflow">return</span> RT;
+<a name="l01578"></a>01578       }
+<a name="l01579"></a>01579     }
+<a name="l01580"></a>01580     TempObjects.clear();
+<a name="l01581"></a>01581   }
+<a name="l01582"></a>01582 
+<a name="l01583"></a>01583   <span class="comment">// It is safe to vectorize and we don't need any runtime checks.</span>
+<a name="l01584"></a>01584   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: We don't need a runtime memory check.\n"</span>);
+<a name="l01585"></a>01585   PtrRtCheck.Pointers.clear();
+<a name="l01586"></a>01586   PtrRtCheck.Need = <span class="keyword">false</span>;
+<a name="l01587"></a>01587   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01588"></a>01588 }
+<a name="l01589"></a>01589 
+<a name="l01590"></a>01590 <span class="keywordtype">bool</span> LoopVectorizationLegality::AddReductionVar(<a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *Phi,
+<a name="l01591"></a>01591                                                 ReductionKind <a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a>) {
+<a name="l01592"></a>01592   <span class="keywordflow">if</span> (Phi-><a class="code" href="classllvm_1_1PHINode.html#aa45f6c0433576e3858a6209a43750ad4">getNumIncomingValues</a>() != 2)
+<a name="l01593"></a>01593     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01594"></a>01594 
+<a name="l01595"></a>01595   <span class="comment">// Find the possible incoming reduction variable.</span>
+<a name="l01596"></a>01596   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *BB = Phi-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>();
+<a name="l01597"></a>01597   <span class="keywordtype">int</span> SelfEdgeIdx = Phi-><a class="code" href="classllvm_1_1PHINode.html#a5c2b7d7f19aac93b27b845858a7eb73e">getBasicBlockIndex</a>(BB);
+<a name="l01598"></a>01598   <span class="keywordtype">int</span> InEdgeBlockIdx = (SelfEdgeIdx ? 0 : 1); <span class="comment">// The other entry.</span>
+<a name="l01599"></a>01599   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *RdxStart = Phi-><a class="code" href="classllvm_1_1PHINode.html#aba6a4cc4ed6d6fef3664b8d65ef04820">getIncomingValue</a>(InEdgeBlockIdx);
+<a name="l01600"></a>01600 
+<a name="l01601"></a>01601   <span class="comment">// ExitInstruction is the single value which is used outside the loop.</span>
+<a name="l01602"></a>01602   <span class="comment">// We only allow for a single reduction value to be used outside the loop.</span>
+<a name="l01603"></a>01603   <span class="comment">// This includes users of the reduction, variables (which form a cycle</span>
+<a name="l01604"></a>01604   <span class="comment">// which ends in the phi node).</span>
+<a name="l01605"></a>01605   <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *ExitInstruction = 0;
+<a name="l01606"></a>01606 
+<a name="l01607"></a>01607   <span class="comment">// Iter is our iterator. We start with the PHI node and scan for all of the</span>
+<a name="l01608"></a>01608   <span class="comment">// users of this instruction. All users must be instructions which can be</span>
+<a name="l01609"></a>01609   <span class="comment">// used as reduction variables (such as ADD). We may have a single</span>
+<a name="l01610"></a>01610   <span class="comment">// out-of-block user. They cycle must end with the original PHI.</span>
+<a name="l01611"></a>01611   <span class="comment">// Also, we can't have multiple block-local users.</span>
+<a name="l01612"></a>01612   <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *Iter = Phi;
+<a name="l01613"></a>01613   <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l01614"></a>01614     <span class="comment">// Any reduction instr must be of one of the allowed kinds.</span>
+<a name="l01615"></a>01615     <span class="keywordflow">if</span> (!isReductionInstr(Iter, Kind))
+<a name="l01616"></a>01616       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01617"></a>01617 
+<a name="l01618"></a>01618     <span class="comment">// Did we found a user inside this block ?</span>
+<a name="l01619"></a>01619     <span class="keywordtype">bool</span> FoundInBlockUser = <span class="keyword">false</span>;
+<a name="l01620"></a>01620     <span class="comment">// Did we reach the initial PHI node ?</span>
+<a name="l01621"></a>01621     <span class="keywordtype">bool</span> FoundStartPHI = <span class="keyword">false</span>;
+<a name="l01622"></a>01622 
+<a name="l01623"></a>01623     <span class="comment">// If the instruction has no users then this is a broken</span>
+<a name="l01624"></a>01624     <span class="comment">// chain and can't be a reduction variable.</span>
+<a name="l01625"></a>01625     <span class="keywordflow">if</span> (Iter-><a class="code" href="classllvm_1_1Value.html#ac38c53f76ef532f91f1666c8a87370e9">use_empty</a>())
+<a name="l01626"></a>01626       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01627"></a>01627 
+<a name="l01628"></a>01628     <span class="comment">// For each of the *users* of iter.</span>
+<a name="l01629"></a>01629     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1value__use__iterator.html">Value::use_iterator</a> it = Iter-><a class="code" href="classllvm_1_1Value.html#a413abcab8dbc3900fc2fde96a5d8fca6">use_begin</a>(), e = Iter-><a class="code" href="classllvm_1_1Value.html#ad86469939d2a8bdd4169be9403b89f5a">use_end</a>();
+<a name="l01630"></a>01630          it != e; ++it) {
+<a name="l01631"></a>01631       <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *U = cast<Instruction>(*it);
+<a name="l01632"></a>01632       <span class="comment">// We already know that the PHI is a user.</span>
+<a name="l01633"></a>01633       <span class="keywordflow">if</span> (U == Phi) {
+<a name="l01634"></a>01634         FoundStartPHI = <span class="keyword">true</span>;
+<a name="l01635"></a>01635         <span class="keywordflow">continue</span>;
+<a name="l01636"></a>01636       }
+<a name="l01637"></a>01637       <span class="comment">// Check if we found the exit user.</span>
+<a name="l01638"></a>01638       <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *Parent = U-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>();
+<a name="l01639"></a>01639       <span class="keywordflow">if</span> (Parent != BB) {
+<a name="l01640"></a>01640         <span class="comment">// We must have a single exit instruction.</span>
+<a name="l01641"></a>01641         <span class="keywordflow">if</span> (ExitInstruction != 0)
+<a name="l01642"></a>01642           <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01643"></a>01643         ExitInstruction = Iter;
+<a name="l01644"></a>01644       }
+<a name="l01645"></a>01645       <span class="comment">// We can't have multiple inside users.</span>
+<a name="l01646"></a>01646       <span class="keywordflow">if</span> (FoundInBlockUser)
+<a name="l01647"></a>01647         <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01648"></a>01648       FoundInBlockUser = <span class="keyword">true</span>;
+<a name="l01649"></a>01649       Iter = U;
+<a name="l01650"></a>01650     }
+<a name="l01651"></a>01651 
+<a name="l01652"></a>01652     <span class="comment">// We found a reduction var if we have reached the original</span>
+<a name="l01653"></a>01653     <span class="comment">// phi node and we only have a single instruction with out-of-loop</span>
+<a name="l01654"></a>01654     <span class="comment">// users.</span>
+<a name="l01655"></a>01655    <span class="keywordflow">if</span> (FoundStartPHI && ExitInstruction) {
+<a name="l01656"></a>01656      <span class="comment">// This instruction is allowed to have out-of-loop users.</span>
+<a name="l01657"></a>01657      AllowedExit.insert(ExitInstruction);
+<a name="l01658"></a>01658 
+<a name="l01659"></a>01659      <span class="comment">// Save the description of this reduction variable.</span>
+<a name="l01660"></a>01660      ReductionDescriptor RD(RdxStart, ExitInstruction, Kind);
+<a name="l01661"></a>01661      Reductions[Phi] = RD;
+<a name="l01662"></a>01662      <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01663"></a>01663    }
+<a name="l01664"></a>01664   }
+<a name="l01665"></a>01665 }
+<a name="l01666"></a>01666 
+<a name="l01667"></a>01667 <span class="keywordtype">bool</span>
+<a name="l01668"></a>01668 LoopVectorizationLegality::isReductionInstr(<a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>,
+<a name="l01669"></a>01669                                             ReductionKind Kind) {
+<a name="l01670"></a>01670     <span class="keywordflow">switch</span> (I-><a class="code" href="classllvm_1_1Instruction.html#a021bb7c9aad6003fe8089f6327356c6c" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>()) {
+<a name="l01671"></a>01671     <span class="keywordflow">default</span>:
+<a name="l01672"></a>01672       <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01673"></a>01673     <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a332cde6eadc39e042b35937d137c83f6">Instruction::PHI</a>:
+<a name="l01674"></a>01674       <span class="comment">// possibly.</span>
+<a name="l01675"></a>01675       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01676"></a>01676     <span class="keywordflow">case</span> Instruction::Add:
+<a name="l01677"></a>01677     <span class="keywordflow">case</span> Instruction::Sub:
+<a name="l01678"></a>01678       <span class="keywordflow">return</span> Kind == IntegerAdd;
+<a name="l01679"></a>01679     <span class="keywordflow">case</span> Instruction::Mul:
+<a name="l01680"></a>01680     <span class="keywordflow">case</span> Instruction::UDiv:
+<a name="l01681"></a>01681     <span class="keywordflow">case</span> Instruction::SDiv:
+<a name="l01682"></a>01682       <span class="keywordflow">return</span> Kind == IntegerMult;
+<a name="l01683"></a>01683     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1APIntOps.html#a684cfe02c582e8d75cd6d457e63e6c25" title="Bitwise AND function for APInt.">Instruction::And</a>:
+<a name="l01684"></a>01684       <span class="keywordflow">return</span> Kind == IntegerAnd;
+<a name="l01685"></a>01685     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1APIntOps.html#a22f056804d2b9882f74adc905872bc39" title="Bitwise OR function for APInt.">Instruction::Or</a>:
+<a name="l01686"></a>01686       <span class="keywordflow">return</span> Kind == IntegerOr;
+<a name="l01687"></a>01687     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1APIntOps.html#afc7c4d88d09cba0c5e920f8a3a3ace55" title="Bitwise XOR function for APInt.">Instruction::Xor</a>:
+<a name="l01688"></a>01688       <span class="keywordflow">return</span> Kind == IntegerXor;
+<a name="l01689"></a>01689     }
+<a name="l01690"></a>01690 }
+<a name="l01691"></a>01691 
+<a name="l01692"></a>01692 <span class="keywordtype">bool</span> LoopVectorizationLegality::isInductionVariable(<a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *Phi) {
+<a name="l01693"></a>01693   <span class="comment">// Check that the PHI is consecutive and starts at zero.</span>
+<a name="l01694"></a>01694   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEV.html">SCEV</a> *PhiScev = SE->getSCEV(Phi);
+<a name="l01695"></a>01695   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEVAddRecExpr.html">SCEVAddRecExpr</a> *AR = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1SCEVAddRecExpr.html">SCEVAddRecExpr</a>>(PhiScev);
+<a name="l01696"></a>01696   <span class="keywordflow">if</span> (!AR) {
+<a name="l01697"></a>01697     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: PHI is not a poly recurrence.\n"</span>);
+<a name="l01698"></a>01698     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01699"></a>01699   }
+<a name="l01700"></a>01700   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEV.html">SCEV</a> *Step = AR-><a class="code" href="classllvm_1_1SCEVAddRecExpr.html#a443e9130cd9f3e3baaa1b566e6aa5060">getStepRecurrence</a>(*SE);
+<a name="l01701"></a>01701 
+<a name="l01702"></a>01702   <span class="keywordflow">if</span> (!Step-><a class="code" href="classllvm_1_1SCEV.html#a3935a9de0ebdf3dc625cfb28e35bd009">isOne</a>()) {
+<a name="l01703"></a>01703     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: PHI stride does not equal one.\n"</span>);
+<a name="l01704"></a>01704     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01705"></a>01705   }
+<a name="l01706"></a>01706   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l01707"></a>01707 }
+<a name="l01708"></a>01708 
+<a name="l01709"></a>01709 <span class="keywordtype">bool</span> LoopVectorizationLegality::hasComputableBounds(<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Ptr) {
+<a name="l01710"></a>01710   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEV.html">SCEV</a> *PhiScev = SE->getSCEV(Ptr);
+<a name="l01711"></a>01711   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEVAddRecExpr.html">SCEVAddRecExpr</a> *AR = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1SCEVAddRecExpr.html">SCEVAddRecExpr</a>>(PhiScev);
+<a name="l01712"></a>01712   <span class="keywordflow">if</span> (!AR)
+<a name="l01713"></a>01713     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l01714"></a>01714 
+<a name="l01715"></a>01715   <span class="keywordflow">return</span> AR-><a class="code" href="classllvm_1_1SCEVAddRecExpr.html#a88f514461ddb0af0fc59ac4639f644bc">isAffine</a>();
+<a name="l01716"></a>01716 }
+<a name="l01717"></a>01717 
+<a name="l01718"></a>01718 <span class="keywordtype">unsigned</span>
+<a name="l01719"></a>01719 LoopVectorizationCostModel::findBestVectorizationFactor(<span class="keywordtype">unsigned</span> VF) {
+<a name="l01720"></a>01720   <span class="keywordflow">if</span> (!VTTI) {
+<a name="l01721"></a>01721     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: No vector target information. Not vectorizing. \n"</span>);
+<a name="l01722"></a>01722     <span class="keywordflow">return</span> 1;
+<a name="l01723"></a>01723   }
+<a name="l01724"></a>01724 
+<a name="l01725"></a>01725   <span class="keywordtype">float</span> Cost = expectedCost(1);
+<a name="l01726"></a>01726   <span class="keywordtype">unsigned</span> Width = 1;
+<a name="l01727"></a>01727   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Scalar loop costs: "</span><< (<span class="keywordtype">int</span>)Cost << <span class="stringliteral">".\n"</span>);
+<a name="l01728"></a>01728   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i=2; i <= VF; i*=2) {
+<a name="l01729"></a>01729     <span class="comment">// Notice that the vector loop needs to be executed less times, so</span>
+<a name="l01730"></a>01730     <span class="comment">// we need to divide the cost of the vector loops by the width of</span>
+<a name="l01731"></a>01731     <span class="comment">// the vector elements.</span>
+<a name="l01732"></a>01732     <span class="keywordtype">float</span> VectorCost = expectedCost(i) / (float)i;
+<a name="l01733"></a>01733     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Vector loop of width "</span><< i << <span class="stringliteral">" costs: "</span> <<
+<a name="l01734"></a>01734           (<span class="keywordtype">int</span>)VectorCost << <span class="stringliteral">".\n"</span>);
+<a name="l01735"></a>01735     <span class="keywordflow">if</span> (VectorCost < Cost) {
+<a name="l01736"></a>01736       Cost = VectorCost;
+<a name="l01737"></a>01737       Width = i;
+<a name="l01738"></a>01738     }
+<a name="l01739"></a>01739   }
+<a name="l01740"></a>01740 
+<a name="l01741"></a>01741   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Selecting VF = : "</span><< Width << <span class="stringliteral">".\n"</span>);
+<a name="l01742"></a>01742   <span class="keywordflow">return</span> Width;
+<a name="l01743"></a>01743 }
+<a name="l01744"></a>01744 
+<a name="l01745"></a>01745 <span class="keywordtype">unsigned</span> LoopVectorizationCostModel::expectedCost(<span class="keywordtype">unsigned</span> VF) {
+<a name="l01746"></a>01746   <span class="comment">// We can only estimate the cost of single basic block loops.</span>
+<a name="l01747"></a>01747   assert(1 == TheLoop->getNumBlocks() && <span class="stringliteral">"Too many blocks in loop"</span>);
+<a name="l01748"></a>01748 
+<a name="l01749"></a>01749   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *BB = TheLoop->getHeader();
+<a name="l01750"></a>01750   <span class="keywordtype">unsigned</span> Cost = 0;
+<a name="l01751"></a>01751 
+<a name="l01752"></a>01752   <span class="comment">// For each instruction in the old loop.</span>
+<a name="l01753"></a>01753   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> it = BB->begin(), e = BB->end(); it != e; ++it) {
+<a name="l01754"></a>01754     <a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *Inst = it;
+<a name="l01755"></a>01755     <span class="keywordtype">unsigned</span> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a> = getInstructionCost(Inst, VF);
+<a name="l01756"></a>01756     Cost += <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>;
+<a name="l01757"></a>01757     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LV: Found an estimated cost of "</span><< C <<<span class="stringliteral">" for VF "</span><< VF <<
+<a name="l01758"></a>01758           <span class="stringliteral">" For instruction: "</span><< *Inst << <span class="stringliteral">"\n"</span>);
+<a name="l01759"></a>01759   }
+<a name="l01760"></a>01760 
+<a name="l01761"></a>01761   <span class="keywordflow">return</span> Cost;
+<a name="l01762"></a>01762 }
+<a name="l01763"></a>01763 
+<a name="l01764"></a>01764 <span class="keywordtype">unsigned</span>
+<a name="l01765"></a>01765 LoopVectorizationCostModel::getInstructionCost(<a class="code" href="classllvm_1_1Instruction.html">Instruction</a> *I, <span class="keywordtype">unsigned</span> VF) {
+<a name="l01766"></a>01766   assert(VTTI && <span class="stringliteral">"Invalid vector target transformation info"</span>);
+<a name="l01767"></a>01767 
+<a name="l01768"></a>01768   <span class="comment">// If we know that this instruction will remain uniform, check the cost of</span>
+<a name="l01769"></a>01769   <span class="comment">// the scalar version.</span>
+<a name="l01770"></a>01770   <span class="keywordflow">if</span> (Legal->isUniformAfterVectorization(I))
+<a name="l01771"></a>01771     VF = 1;
+<a name="l01772"></a>01772 
+<a name="l01773"></a>01773   <a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="namespacellvm.html#ab83a048107217f63353d29f525d4794b">RetTy</a> = I-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>();
+<a name="l01774"></a>01774   <a class="code" href="classllvm_1_1Type.html">Type</a> *VectorTy = ToVectorTy(RetTy, VF);
+<a name="l01775"></a>01775 
+<a name="l01776"></a>01776 
+<a name="l01777"></a>01777   <span class="comment">// TODO: We need to estimate the cost of intrinsic calls.</span>
+<a name="l01778"></a>01778   <span class="keywordflow">switch</span> (I-><a class="code" href="classllvm_1_1Instruction.html#a021bb7c9aad6003fe8089f6327356c6c" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>()) {
+<a name="l01779"></a>01779     <span class="keywordflow">case</span> Instruction::GetElementPtr:
+<a name="l01780"></a>01780       <span class="comment">// We mark this instruction as zero-cost because scalar GEPs are usually</span>
+<a name="l01781"></a>01781       <span class="comment">// lowered to the intruction addressing mode. At the moment we don't</span>
+<a name="l01782"></a>01782       <span class="comment">// generate vector geps.</span>
+<a name="l01783"></a>01783       <span class="keywordflow">return</span> 0;
+<a name="l01784"></a>01784     <span class="keywordflow">case</span> Instruction::Br: {
+<a name="l01785"></a>01785       <span class="keywordflow">return</span> VTTI->getCFInstrCost(I-><a class="code" href="classllvm_1_1Instruction.html#a021bb7c9aad6003fe8089f6327356c6c" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>());
+<a name="l01786"></a>01786     }
+<a name="l01787"></a>01787     <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a332cde6eadc39e042b35937d137c83f6">Instruction::PHI</a>:
+<a name="l01788"></a>01788       <span class="keywordflow">return</span> 0;
+<a name="l01789"></a>01789     <span class="keywordflow">case</span> Instruction::Add:
+<a name="l01790"></a>01790     <span class="keywordflow">case</span> Instruction::FAdd:
+<a name="l01791"></a>01791     <span class="keywordflow">case</span> Instruction::Sub:
+<a name="l01792"></a>01792     <span class="keywordflow">case</span> Instruction::FSub:
+<a name="l01793"></a>01793     <span class="keywordflow">case</span> Instruction::Mul:
+<a name="l01794"></a>01794     <span class="keywordflow">case</span> Instruction::FMul:
+<a name="l01795"></a>01795     <span class="keywordflow">case</span> Instruction::UDiv:
+<a name="l01796"></a>01796     <span class="keywordflow">case</span> Instruction::SDiv:
+<a name="l01797"></a>01797     <span class="keywordflow">case</span> Instruction::FDiv:
+<a name="l01798"></a>01798     <span class="keywordflow">case</span> Instruction::URem:
+<a name="l01799"></a>01799     <span class="keywordflow">case</span> Instruction::SRem:
+<a name="l01800"></a>01800     <span class="keywordflow">case</span> Instruction::FRem:
+<a name="l01801"></a>01801     <span class="keywordflow">case</span> Instruction::Shl:
+<a name="l01802"></a>01802     <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a5d76973fd2e5e0fd234e129d3fb03db0">Instruction::LShr</a>:
+<a name="l01803"></a>01803     <span class="keywordflow">case</span> Instruction::AShr:
+<a name="l01804"></a>01804     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1APIntOps.html#a684cfe02c582e8d75cd6d457e63e6c25" title="Bitwise AND function for APInt.">Instruction::And</a>:
+<a name="l01805"></a>01805     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1APIntOps.html#a22f056804d2b9882f74adc905872bc39" title="Bitwise OR function for APInt.">Instruction::Or</a>:
+<a name="l01806"></a>01806     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1APIntOps.html#afc7c4d88d09cba0c5e920f8a3a3ace55" title="Bitwise XOR function for APInt.">Instruction::Xor</a>: {
+<a name="l01807"></a>01807       <span class="keywordflow">return</span> VTTI->getArithmeticInstrCost(I-><a class="code" href="classllvm_1_1Instruction.html#a021bb7c9aad6003fe8089f6327356c6c" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>(), VectorTy);
+<a name="l01808"></a>01808     }
+<a name="l01809"></a>01809     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1MCID.html#accb16fffd544529ed4d816a45e40f425a32dbd2c72a98eaee90e3ad5ef7b5af16">Instruction::Select</a>: {
+<a name="l01810"></a>01810       <a class="code" href="classllvm_1_1SelectInst.html">SelectInst</a> *SI = cast<SelectInst>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>);
+<a name="l01811"></a>01811       <span class="keyword">const</span> <a class="code" href="classllvm_1_1SCEV.html">SCEV</a> *CondSCEV = SE->getSCEV(SI-><a class="code" href="classllvm_1_1SelectInst.html#ad285a69e32ddeee367fed93b5f392801">getCondition</a>());
+<a name="l01812"></a>01812       <span class="keywordtype">bool</span> ScalarCond = (SE->isLoopInvariant(CondSCEV, TheLoop));
+<a name="l01813"></a>01813       <a class="code" href="classllvm_1_1Type.html">Type</a> *CondTy = SI-><a class="code" href="classllvm_1_1SelectInst.html#ad285a69e32ddeee367fed93b5f392801">getCondition</a>()-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>();
+<a name="l01814"></a>01814       <span class="keywordflow">if</span> (ScalarCond)
+<a name="l01815"></a>01815         CondTy = <a class="code" href="classllvm_1_1VectorType.html#ab43657ed1abe2e2ed3a6a394f233ebd0">VectorType::get</a>(CondTy, VF);
+<a name="l01816"></a>01816 
+<a name="l01817"></a>01817       <span class="keywordflow">return</span> VTTI->getCmpSelInstrCost(I-><a class="code" href="classllvm_1_1Instruction.html#a021bb7c9aad6003fe8089f6327356c6c" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>(), VectorTy, CondTy);
+<a name="l01818"></a>01818     }
+<a name="l01819"></a>01819     <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a6a4ce50f71e29df6dd1920cf067a2eb5">Instruction::ICmp</a>:
+<a name="l01820"></a>01820     <span class="keywordflow">case</span> Instruction::FCmp: {
+<a name="l01821"></a>01821       <a class="code" href="classllvm_1_1Type.html">Type</a> *ValTy = I-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0)-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>();
+<a name="l01822"></a>01822       VectorTy = ToVectorTy(ValTy, VF);
+<a name="l01823"></a>01823       <span class="keywordflow">return</span> VTTI->getCmpSelInstrCost(I-><a class="code" href="classllvm_1_1Instruction.html#a021bb7c9aad6003fe8089f6327356c6c" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>(), VectorTy);
+<a name="l01824"></a>01824     }
+<a name="l01825"></a>01825     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPII.html#add994c36633ba2d8f6a1366b775e88a6a36b3dd3b84fde3f8494a9b18af131856">Instruction::Store</a>: {
+<a name="l01826"></a>01826       <a class="code" href="classllvm_1_1StoreInst.html">StoreInst</a> *SI = cast<StoreInst>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>);
+<a name="l01827"></a>01827       <a class="code" href="classllvm_1_1Type.html">Type</a> *ValTy = SI-><a class="code" href="classllvm_1_1StoreInst.html#a14298313bdf734e2db5a921cc6e861a0">getValueOperand</a>()-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>();
+<a name="l01828"></a>01828       VectorTy = ToVectorTy(ValTy, VF);
+<a name="l01829"></a>01829 
+<a name="l01830"></a>01830       <span class="keywordflow">if</span> (VF == 1)
+<a name="l01831"></a>01831         <span class="keywordflow">return</span> VTTI->getMemoryOpCost(I-><a class="code" href="classllvm_1_1Instruction.html#a021bb7c9aad6003fe8089f6327356c6c" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>(), ValTy,
+<a name="l01832"></a>01832                               SI-><a class="code" href="classllvm_1_1StoreInst.html#a3084f1dd69d67e1965fd1fe721a69f2e">getAlignment</a>(), SI-><a class="code" href="classllvm_1_1StoreInst.html#a6cac341b1b354174d0e0a81a2e7a9109" title="Returns the address space of the pointer operand.">getPointerAddressSpace</a>());
+<a name="l01833"></a>01833 
+<a name="l01834"></a>01834       <span class="comment">// Scalarized stores.</span>
+<a name="l01835"></a>01835       <span class="keywordflow">if</span> (!Legal->isConsecutiveGep(SI-><a class="code" href="classllvm_1_1StoreInst.html#ac03c1c093059ea000216af8dd6f2dbf4">getPointerOperand</a>())) {
+<a name="l01836"></a>01836         <span class="keywordtype">unsigned</span> Cost = 0;
+<a name="l01837"></a>01837         <span class="keywordtype">unsigned</span> ExtCost = VTTI->getInstrCost(<a class="code" href="InstCombineCompares_8cpp.html#aa5ab8c7b55d8bc7cab66be444daa70a1">Instruction::ExtractElement</a>,
+<a name="l01838"></a>01838                                               ValTy);
+<a name="l01839"></a>01839         <span class="comment">// The cost of extracting from the value vector.</span>
+<a name="l01840"></a>01840         Cost += VF * (ExtCost);
+<a name="l01841"></a>01841         <span class="comment">// The cost of the scalar stores.</span>
+<a name="l01842"></a>01842         Cost += VF * VTTI->getMemoryOpCost(I-><a class="code" href="classllvm_1_1Instruction.html#a021bb7c9aad6003fe8089f6327356c6c" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>(),
+<a name="l01843"></a>01843                                            ValTy->getScalarType(),
+<a name="l01844"></a>01844                                            SI-><a class="code" href="classllvm_1_1StoreInst.html#a3084f1dd69d67e1965fd1fe721a69f2e">getAlignment</a>(),
+<a name="l01845"></a>01845                                            SI-><a class="code" href="classllvm_1_1StoreInst.html#a6cac341b1b354174d0e0a81a2e7a9109" title="Returns the address space of the pointer operand.">getPointerAddressSpace</a>());
+<a name="l01846"></a>01846         <span class="keywordflow">return</span> Cost;
+<a name="l01847"></a>01847       }
+<a name="l01848"></a>01848 
+<a name="l01849"></a>01849       <span class="comment">// Wide stores.</span>
+<a name="l01850"></a>01850       <span class="keywordflow">return</span> VTTI->getMemoryOpCost(I-><a class="code" href="classllvm_1_1Instruction.html#a021bb7c9aad6003fe8089f6327356c6c" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>(), VectorTy, SI-><a class="code" href="classllvm_1_1StoreInst.html#a3084f1dd69d67e1965fd1fe721a69f2e">getAlignment</a>(),
+<a name="l01851"></a>01851                                    SI-><a class="code" href="classllvm_1_1StoreInst.html#a6cac341b1b354174d0e0a81a2e7a9109" title="Returns the address space of the pointer operand.">getPointerAddressSpace</a>());
+<a name="l01852"></a>01852     }
+<a name="l01853"></a>01853     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1SPII.html#add994c36633ba2d8f6a1366b775e88a6a5069619ca8fdce305534f3fe85091a0f">Instruction::Load</a>: {
+<a name="l01854"></a>01854       <a class="code" href="classllvm_1_1LoadInst.html">LoadInst</a> *<a class="code" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a> = cast<LoadInst>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>);
+<a name="l01855"></a>01855 
+<a name="l01856"></a>01856       <span class="keywordflow">if</span> (VF == 1)
+<a name="l01857"></a>01857         <span class="keywordflow">return</span> VTTI->getMemoryOpCost(I-><a class="code" href="classllvm_1_1Instruction.html#a021bb7c9aad6003fe8089f6327356c6c" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>(), <a class="code" href="namespacellvm.html#ab83a048107217f63353d29f525d4794b">RetTy</a>,
+<a name="l01858"></a>01858                                      LI-><a class="code" href="classllvm_1_1LoadInst.html#ad1168fc42bcba1b71217a4969483671a">getAlignment</a>(),
+<a name="l01859"></a>01859                                      LI-><a class="code" href="classllvm_1_1LoadInst.html#a2efd55778217d045b121de696c4f6452" title="Returns the address space of the pointer operand.">getPointerAddressSpace</a>());
+<a name="l01860"></a>01860 
+<a name="l01861"></a>01861       <span class="comment">// Scalarized loads.</span>
+<a name="l01862"></a>01862       <span class="keywordflow">if</span> (!Legal->isConsecutiveGep(LI-><a class="code" href="classllvm_1_1LoadInst.html#ad47eefa1d094f60494b6b927061ca001">getPointerOperand</a>())) {
+<a name="l01863"></a>01863         <span class="keywordtype">unsigned</span> Cost = 0;
+<a name="l01864"></a>01864         <span class="keywordtype">unsigned</span> InCost = VTTI->getInstrCost(Instruction::InsertElement, RetTy);
+<a name="l01865"></a>01865         <span class="comment">// The cost of inserting the loaded value into the result vector.</span>
+<a name="l01866"></a>01866         Cost += VF * (InCost);
+<a name="l01867"></a>01867         <span class="comment">// The cost of the scalar stores.</span>
+<a name="l01868"></a>01868         Cost += VF * VTTI->getMemoryOpCost(I-><a class="code" href="classllvm_1_1Instruction.html#a021bb7c9aad6003fe8089f6327356c6c" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>(),
+<a name="l01869"></a>01869                                            RetTy-><a class="code" href="classllvm_1_1Type.html#a8eafa71cf399da8f21b2af5549f3f9e7">getScalarType</a>(),
+<a name="l01870"></a>01870                                            LI-><a class="code" href="classllvm_1_1LoadInst.html#ad1168fc42bcba1b71217a4969483671a">getAlignment</a>(),
+<a name="l01871"></a>01871                                            LI-><a class="code" href="classllvm_1_1LoadInst.html#a2efd55778217d045b121de696c4f6452" title="Returns the address space of the pointer operand.">getPointerAddressSpace</a>());
+<a name="l01872"></a>01872         <span class="keywordflow">return</span> Cost;
+<a name="l01873"></a>01873       }
+<a name="l01874"></a>01874 
+<a name="l01875"></a>01875       <span class="comment">// Wide loads.</span>
+<a name="l01876"></a>01876       <span class="keywordflow">return</span> VTTI->getMemoryOpCost(I-><a class="code" href="classllvm_1_1Instruction.html#a021bb7c9aad6003fe8089f6327356c6c" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>(), VectorTy, LI-><a class="code" href="classllvm_1_1LoadInst.html#ad1168fc42bcba1b71217a4969483671a">getAlignment</a>(),
+<a name="l01877"></a>01877                                    LI-><a class="code" href="classllvm_1_1LoadInst.html#a2efd55778217d045b121de696c4f6452" title="Returns the address space of the pointer operand.">getPointerAddressSpace</a>());
+<a name="l01878"></a>01878     }
+<a name="l01879"></a>01879     <span class="keywordflow">case</span> Instruction::ZExt:
+<a name="l01880"></a>01880     <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#ae2dfc57500e32ee6f5ac871f7ec55d5b">Instruction::SExt</a>:
+<a name="l01881"></a>01881     <span class="keywordflow">case</span> Instruction::FPToUI:
+<a name="l01882"></a>01882     <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a3677968984dd841410ed46288fd5ab6c">Instruction::FPToSI</a>:
+<a name="l01883"></a>01883     <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a24e13352d9c828e3de6682f4baae88fd">Instruction::FPExt</a>:
+<a name="l01884"></a>01884     <span class="keywordflow">case</span> Instruction::PtrToInt:
+<a name="l01885"></a>01885     <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a20744d4958a3cd24012862024a8b5851">Instruction::IntToPtr</a>:
+<a name="l01886"></a>01886     <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#aa7d131dc7d18431127ae9fe7d4429fa7">Instruction::SIToFP</a>:
+<a name="l01887"></a>01887     <span class="keywordflow">case</span> Instruction::UIToFP:
+<a name="l01888"></a>01888     <span class="keywordflow">case</span> <a class="code" href="namespacellvm.html#a3da04da2a51c5da491960f875a3222ad">Instruction::Trunc</a>:
+<a name="l01889"></a>01889     <span class="keywordflow">case</span> Instruction::FPTrunc:
+<a name="l01890"></a>01890     <span class="keywordflow">case</span> Instruction::BitCast: {
+<a name="l01891"></a>01891       <a class="code" href="classllvm_1_1Type.html">Type</a> *SrcVecTy = ToVectorTy(I-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0)-><a class="code" href="classllvm_1_1Value.html#a0cf3748dba54f931bb1241ae4adc76bc">getType</a>(), VF);
+<a name="l01892"></a>01892       <span class="keywordflow">return</span> VTTI->getCastInstrCost(I-><a class="code" href="classllvm_1_1Instruction.html#a021bb7c9aad6003fe8089f6327356c6c" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>(), VectorTy, SrcVecTy);
+<a name="l01893"></a>01893     }
+<a name="l01894"></a>01894     <span class="keywordflow">default</span>: {
+<a name="l01895"></a>01895       <span class="comment">// We are scalarizing the instruction. Return the cost of the scalar</span>
+<a name="l01896"></a>01896       <span class="comment">// instruction, plus the cost of insert and extract into vector</span>
+<a name="l01897"></a>01897       <span class="comment">// elements, times the vector width.</span>
+<a name="l01898"></a>01898       <span class="keywordtype">unsigned</span> Cost = 0;
+<a name="l01899"></a>01899 
+<a name="l01900"></a>01900       <span class="keywordtype">bool</span> IsVoid = RetTy-><a class="code" href="classllvm_1_1Type.html#af5c7041df3ad5edffe5da17b5264c1fc" title="isVoidTy - Return true if this is 'void'.">isVoidTy</a>();
+<a name="l01901"></a>01901 
+<a name="l01902"></a>01902       <span class="keywordtype">unsigned</span> InsCost = (IsVoid ? 0 :
+<a name="l01903"></a>01903                           VTTI->getInstrCost(Instruction::InsertElement,
+<a name="l01904"></a>01904                                              VectorTy));
+<a name="l01905"></a>01905 
+<a name="l01906"></a>01906       <span class="keywordtype">unsigned</span> ExtCost = VTTI->getInstrCost(<a class="code" href="InstCombineCompares_8cpp.html#aa5ab8c7b55d8bc7cab66be444daa70a1">Instruction::ExtractElement</a>,
+<a name="l01907"></a>01907                                             VectorTy);
+<a name="l01908"></a>01908 
+<a name="l01909"></a>01909       <span class="comment">// The cost of inserting the results plus extracting each one of the</span>
+<a name="l01910"></a>01910       <span class="comment">// operands.</span>
+<a name="l01911"></a>01911       Cost += VF * (InsCost + ExtCost * I-><a class="code" href="classllvm_1_1User.html#a2f81e0c1fc6554df7ad2eafabf5fc5a5">getNumOperands</a>());
+<a name="l01912"></a>01912 
+<a name="l01913"></a>01913       <span class="comment">// The cost of executing VF copies of the scalar instruction.</span>
+<a name="l01914"></a>01914       Cost += VF * VTTI->getInstrCost(I-><a class="code" href="classllvm_1_1Instruction.html#a021bb7c9aad6003fe8089f6327356c6c" title="getOpcode() returns a member of one of the enums like Instruction::Add.">getOpcode</a>(), <a class="code" href="namespacellvm.html#ab83a048107217f63353d29f525d4794b">RetTy</a>);
+<a name="l01915"></a>01915       <span class="keywordflow">return</span> Cost;
+<a name="l01916"></a>01916     }
+<a name="l01917"></a>01917   }<span class="comment">// end of switch.</span>
+<a name="l01918"></a>01918 }
+<a name="l01919"></a>01919 
+<a name="l01920"></a>01920 <a class="code" href="classllvm_1_1Type.html">Type</a>* LoopVectorizationCostModel::ToVectorTy(<a class="code" href="classllvm_1_1Type.html">Type</a> *<a class="code" href="namespacellvm_1_1NVPTX_1_1PTXLdStInstCode.html#a91119cbee2be000c528a690252aee07ca09c68d67f7dbfa6cc77eaf73aa535217">Scalar</a>, <span class="keywordtype">unsigned</span> VF) {
+<a name="l01921"></a>01921   <span class="keywordflow">if</span> (Scalar-><a class="code" href="classllvm_1_1Type.html#af5c7041df3ad5edffe5da17b5264c1fc" title="isVoidTy - Return true if this is 'void'.">isVoidTy</a>() || VF == 1)
+<a name="l01922"></a>01922     <span class="keywordflow">return</span> Scalar;
+<a name="l01923"></a>01923   <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1VectorType.html#ab43657ed1abe2e2ed3a6a394f233ebd0">VectorType::get</a>(Scalar, VF);
+<a name="l01924"></a>01924 }
+<a name="l01925"></a>01925 
+<a name="l01926"></a>01926 } <span class="comment">// namespace</span>
+<a name="l01927"></a>01927 
+<a name="l01928"></a>01928 <span class="keywordtype">char</span> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">LoopVectorize::ID</a> = 0;
+<a name="l01929"></a><a class="code" href="LoopVectorize_8cpp.html#a5ce679c74f9d5aa21d8ea3d1a798f0a9">01929</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code" href="LoopVectorize_8cpp.html#a5ce679c74f9d5aa21d8ea3d1a798f0a9">lv_name</a>[] = <span class="stringliteral">"Loop Vectorization"</span>;
+<a name="l01930"></a>01930 <a class="code" href="PassSupport_8h.html#aaa970fc931c1c63037a8182e028d04b1">INITIALIZE_PASS_BEGIN</a>(LoopVectorize, <a class="code" href="LoopVectorize_8cpp.html#a0eff4a8bccb143ae91e197e6a59d4692">LV_NAME</a>, <a class="code" href="LoopVectorize_8cpp.html#a5ce679c74f9d5aa21d8ea3d1a798f0a9">lv_name</a>, <span class="keyword">false</span>, <span class="keyword">false</span>)
+<a name="l01931"></a>01931 <a class="code" href="PassSupport_8h.html#af0564bcdde2dd4400c670ca278c6035f">INITIALIZE_AG_DEPENDENCY</a>(<a class="code" href="classllvm_1_1AliasAnalysis.html">AliasAnalysis</a>)
+<a name="l01932"></a>01932 <a class="code" href="PassSupport_8h.html#a14724f1ccf528e73bb29bc9230737967">INITIALIZE_PASS_DEPENDENCY</a>(<a class="code" href="classllvm_1_1ScalarEvolution.html">ScalarEvolution</a>)
+<a name="l01933"></a>01933 <a class="code" href="PassSupport_8h.html#a14724f1ccf528e73bb29bc9230737967">INITIALIZE_PASS_DEPENDENCY</a>(LoopSimplify)
+<a name="l01934"></a>01934 <a class="code" href="PassSupport_8h.html#a74ce8276b89067e806f67c45a6d92575">INITIALIZE_PASS_END</a>(LoopVectorize, <a class="code" href="LoopVectorize_8cpp.html#a0eff4a8bccb143ae91e197e6a59d4692">LV_NAME</a>, <a class="code" href="LoopVectorize_8cpp.html#a5ce679c74f9d5aa21d8ea3d1a798f0a9">lv_name</a>, <a class="code" href="AliasAnalysisEvaluator_8cpp.html#a3898a228575af19a9b2052f2b3677dce">false</a>, false)
+<a name="l01935"></a>01935 
+<a name="l01936"></a>01936 namespace llvm {
+<a name="l01937"></a><a class="code" href="namespacellvm.html#afbbb84b4e3862dbf87ff3b6966dab634">01937</a>   <a class="code" href="classllvm_1_1Pass.html">Pass</a> *<a class="code" href="namespacellvm.html#afbbb84b4e3862dbf87ff3b6966dab634">createLoopVectorizePass</a>() {
+<a name="l01938"></a>01938     <span class="keywordflow">return</span> <span class="keyword">new</span> LoopVectorize();
+<a name="l01939"></a>01939   }
+<a name="l01940"></a>01940 }
+<a name="l01941"></a>01941 
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:35: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/LowerAtomic_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LowerAtomic_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LowerAtomic_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LowerAtomic_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,253 @@
+<!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: LowerAtomic.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_22ea62e2015f6a823fddac4ac38ba517.html">Transforms</a>      </li>
+      <li class="navelem"><a class="el" href="dir_19df7bbd99eeba0b048ee47f392d9ea7.html">Scalar</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#define-members">Defines</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">LowerAtomic.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="Transforms_2Scalar_8h_source.html">llvm/Transforms/Scalar.h</a>"</code><br/>
+<code>#include "<a class="el" href="Function_8h_source.html">llvm/Function.h</a>"</code><br/>
+<code>#include "<a class="el" href="IRBuilder_8h_source.html">llvm/IRBuilder.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="Pass_8h_source.html">llvm/Pass.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for LowerAtomic.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="LowerAtomic_8cpp__incl.png" border="0" usemap="#LowerAtomic_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="LowerAtomic_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="LowerAtomic_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">DEBUG_TYPE</a>   "loweratomic"</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="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="LowerAtomic_8cpp.html#a2b5c8771e0cc8646b57ded45c63ab516">LowerAtomicCmpXchgInst</a> (<a class="el" href="classllvm_1_1AtomicCmpXchgInst.html">AtomicCmpXchgInst</a> *CXI)</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="LowerAtomic_8cpp.html#accabb74146593269ab10d8cfa8cec5a7">LowerAtomicRMWInst</a> (<a class="el" href="classllvm_1_1AtomicRMWInst.html">AtomicRMWInst</a> *RMWI)</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="LowerAtomic_8cpp.html#a71a9a2cc77be9409f284b570894f16d2">LowerFenceInst</a> (<a class="el" href="classllvm_1_1FenceInst.html">FenceInst</a> *FI)</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="LowerAtomic_8cpp.html#a533cef247257a2fdcfbf3caed9edded6">LowerLoadInst</a> (<a class="el" href="classllvm_1_1LoadInst.html">LoadInst</a> *<a class="el" href="LoopInfoImpl_8h.html#ab7b7f3fe4279386eae18cf924053d077">LI</a>)</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="LowerAtomic_8cpp.html#a23409a4a384c75050e75b5e947f91a61">LowerStoreInst</a> (<a class="el" href="classllvm_1_1StoreInst.html">StoreInst</a> *SI)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="LowerAtomic_8cpp.html#ae1064ffca4ced76da572c094f92f95db">INITIALIZE_PASS</a> (LowerAtomic,"loweratomic","Lower atomic intrinsics to non-atomic form", false, <a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a>) <a class="el" href="classllvm_1_1Pass.html">Pass</a> *llvm</td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ad78e062f62e0d6e453941fb4ca843e4d"></a><!-- doxytag: member="LowerAtomic.cpp::DEBUG_TYPE" ref="ad78e062f62e0d6e453941fb4ca843e4d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define DEBUG_TYPE   "loweratomic"</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="LowerAtomic_8cpp_source.html#l00015">15</a> of file <a class="el" href="LowerAtomic_8cpp_source.html">LowerAtomic.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="ae1064ffca4ced76da572c094f92f95db"></a><!-- doxytag: member="LowerAtomic.cpp::INITIALIZE_PASS" ref="ae1064ffca4ced76da572c094f92f95db" args="(LowerAtomic,"loweratomic","Lower atomic intrinsics to non-atomic form", false, false) Pass *llvm" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">INITIALIZE_PASS </td>
+          <td>(</td>
+          <td class="paramtype">LowerAtomic </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"loweratomic" </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Lower atomic intrinsics to non-atomic form" </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a> </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a> </td>
+          <td class="paramname"> </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="LowerAtomic_8cpp_source.html#l00138">138</a> of file <a class="el" href="LowerAtomic_8cpp_source.html">LowerAtomic.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2b5c8771e0cc8646b57ded45c63ab516"></a><!-- doxytag: member="LowerAtomic.cpp::LowerAtomicCmpXchgInst" ref="a2b5c8771e0cc8646b57ded45c63ab516" args="(AtomicCmpXchgInst *CXI)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> LowerAtomicCmpXchgInst </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1AtomicCmpXchgInst.html">AtomicCmpXchgInst</a> * </td>
+          <td class="paramname"><em>CXI</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="LowerAtomic_8cpp_source.html#l00023">23</a> of file <a class="el" href="LowerAtomic_8cpp_source.html">LowerAtomic.cpp</a>.</p>
+
+<p>References <a class="el" href="Instruction_8cpp_source.html#l00071">llvm::Instruction::eraseFromParent()</a>, <a class="el" href="Instructions_8h_source.html#l00516">llvm::AtomicCmpXchgInst::getCompareOperand()</a>, <a class="el" href="Instructions_8h_source.html#l00519">llvm::AtomicCmpXchgInst::getNewValOperand()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a>, <a class="el" href="Instructions_8h_source.html#l00512">llvm::AtomicCmpXchgInst::getPointerOperand()</a>, and <a class="el" href="Value_8cpp_source.html#l00297">llvm::Value::replaceAllUsesWith()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="accabb74146593269ab10d8cfa8cec5a7"></a><!-- doxytag: member="LowerAtomic.cpp::LowerAtomicRMWInst" ref="accabb74146593269ab10d8cfa8cec5a7" args="(AtomicRMWInst *RMWI)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> LowerAtomicRMWInst </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1AtomicRMWInst.html">AtomicRMWInst</a> * </td>
+          <td class="paramname"><em>RMWI</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="LowerAtomic_8cpp_source.html#l00039">39</a> of file <a class="el" href="LowerAtomic_8cpp_source.html">LowerAtomic.cpp</a>.</p>
+
+<p>References <a class="el" href="Instructions_8h_source.html#l00570">llvm::AtomicRMWInst::Add</a>, <a class="el" href="Instructions_8h_source.html#l00574">llvm::AtomicRMWInst::And</a>, <a class="el" href="Instruction_8cpp_source.html#l00071">llvm::Instruction::eraseFromParent()</a>, <a class="el" href="Instructions_8h_source.html#l00606">llvm::AtomicRMWInst::getOperation()</a>, <a class="el" href="Instruction_8h_source.html#l00051">llvm::Instruction::getParent()</a>, <a class="el" href="Instructions_8h_source.html#l00659">llvm::AtomicRMWInst::getPointerOperand()</a>, <a class="el" href="Instructions_8h_source.html#l00663">llvm::AtomicRMWInst::getValOperand()</a>, <a class="el" href="ErrorHandling_8h_source.html#l00098">llvm_unreachable</a>, <a class="el" href="Instructions_8h_source.html#l00582">llvm::AtomicRMWInst::Max</a>, <a class="el" href="Instructions_8h_source.html#l00584">llvm::AtomicRMWInst::Min</a>, <a class="el" href="Instructions_8h_source.html#l00576">llvm::Ato
 micRMWInst::Nand</a>, <a class="el" href="Instructions_8h_source.html#l00578">llvm::AtomicRMWInst::Or</a>, <a class="el" href="Value_8cpp_source.html#l00297">llvm::Value::replaceAllUsesWith()</a>, <a class="el" href="Instructions_8h_source.html#l00572">llvm::AtomicRMWInst::Sub</a>, <a class="el" href="Instructions_8h_source.html#l00586">llvm::AtomicRMWInst::UMax</a>, <a class="el" href="Instructions_8h_source.html#l00588">llvm::AtomicRMWInst::UMin</a>, <a class="el" href="Instructions_8h_source.html#l00568">llvm::AtomicRMWInst::Xchg</a>, and <a class="el" href="Instructions_8h_source.html#l00580">llvm::AtomicRMWInst::Xor</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a71a9a2cc77be9409f284b570894f16d2"></a><!-- doxytag: member="LowerAtomic.cpp::LowerFenceInst" ref="a71a9a2cc77be9409f284b570894f16d2" args="(FenceInst *FI)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> LowerFenceInst </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1FenceInst.html">FenceInst</a> * </td>
+          <td class="paramname"><em>FI</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="LowerAtomic_8cpp_source.html#l00093">93</a> of file <a class="el" href="LowerAtomic_8cpp_source.html">LowerAtomic.cpp</a>.</p>
+
+<p>References <a class="el" href="Instruction_8cpp_source.html#l00071">llvm::Instruction::eraseFromParent()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a533cef247257a2fdcfbf3caed9edded6"></a><!-- doxytag: member="LowerAtomic.cpp::LowerLoadInst" ref="a533cef247257a2fdcfbf3caed9edded6" args="(LoadInst *LI)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> LowerLoadInst </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1LoadInst.html">LoadInst</a> * </td>
+          <td class="paramname"><em>LI</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="LowerAtomic_8cpp_source.html#l00098">98</a> of file <a class="el" href="LowerAtomic_8cpp_source.html">LowerAtomic.cpp</a>.</p>
+
+<p>References <a class="el" href="Instructions_8h_source.html#l00038">llvm::NotAtomic</a>, and <a class="el" href="Instructions_8h_source.html#l00213">llvm::LoadInst::setAtomic()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a23409a4a384c75050e75b5e947f91a61"></a><!-- doxytag: member="LowerAtomic.cpp::LowerStoreInst" ref="a23409a4a384c75050e75b5e947f91a61" args="(StoreInst *SI)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static <a class="el" href="X86DisassemblerDecoder_8c.html#a6156fe0b594c9754f386f6c6a30c8165">bool</a> LowerStoreInst </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1StoreInst.html">StoreInst</a> * </td>
+          <td class="paramname"><em>SI</em></td><td>)</td>
+          <td><code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="LowerAtomic_8cpp_source.html#l00103">103</a> of file <a class="el" href="LowerAtomic_8cpp_source.html">LowerAtomic.cpp</a>.</p>
+
+<p>References <a class="el" href="Instructions_8h_source.html#l00038">llvm::NotAtomic</a>, and <a class="el" href="Instructions_8h_source.html#l00333">llvm::StoreInst::setAtomic()</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:31 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/LowerExpectIntrinsic_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LowerExpectIntrinsic_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LowerExpectIntrinsic_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LowerExpectIntrinsic_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,212 @@
+<!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: LowerExpectIntrinsic.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_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="summary">
+<a href="#define-members">Defines</a> |
+<a href="#func-members">Functions</a> |
+<a href="#var-members">Variables</a>  </div>
+  <div class="headertitle">
+<div class="title">LowerExpectIntrinsic.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="BasicBlock_8h_source.html">llvm/BasicBlock.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="Function_8h_source.html">llvm/Function.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="LLVMContext_8h_source.html">llvm/LLVMContext.h</a>"</code><br/>
+<code>#include "<a class="el" href="MDBuilder_8h_source.html">llvm/MDBuilder.h</a>"</code><br/>
+<code>#include "<a class="el" href="Metadata_8h_source.html">llvm/Metadata.h</a>"</code><br/>
+<code>#include "<a class="el" href="Pass_8h_source.html">llvm/Pass.h</a>"</code><br/>
+<code>#include "<a class="el" href="Statistic_8h_source.html">llvm/ADT/Statistic.h</a>"</code><br/>
+<code>#include "<a class="el" href="Transforms_2Scalar_8h_source.html">llvm/Transforms/Scalar.h</a>"</code><br/>
+<code>#include "<a class="el" href="CommandLine_8h_source.html">llvm/Support/CommandLine.h</a>"</code><br/>
+<code>#include "<a class="el" href="Debug_8h_source.html">llvm/Support/Debug.h</a>"</code><br/>
+<code>#include <vector></code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for LowerExpectIntrinsic.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="LowerExpectIntrinsic_8cpp__incl.png" border="0" usemap="#LowerExpectIntrinsic_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="LowerExpectIntrinsic_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="LowerExpectIntrinsic_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">DEBUG_TYPE</a>   "lower-expect-intrinsic"</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="LowerExpectIntrinsic_8cpp.html#a894091c1972b7bab7f4684a6193b9f50">STATISTIC</a> (IfHandled,"Number of 'expect' intrinsic intructions handled")</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="LowerExpectIntrinsic_8cpp.html#a4ddc6597ec433bcb50681c53e6ab3c51">INITIALIZE_PASS</a> (LowerExpectIntrinsic,"lower-expect","Lower 'expect' ""Intrinsics", false, <a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a>) <a class="el" href="classllvm_1_1FunctionPass.html">FunctionPass</a> *llvm</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 <a class="el" href="classllvm_1_1cl_1_1opt.html">cl::opt</a>< uint32_t > </td><td class="memItemRight" valign="bottom"><a class="el" href="LowerExpectIntrinsic_8cpp.html#a0767d265572b6e7a4b4bcf2e84d5ee12">LikelyBranchWeight</a> ("likely-branch-weight", cl::Hidden, cl::init(64), <a class="el" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>("Weight of the branch likely to be taken (default = 64)"))</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classllvm_1_1cl_1_1opt.html">cl::opt</a>< uint32_t > </td><td class="memItemRight" valign="bottom"><a class="el" href="LowerExpectIntrinsic_8cpp.html#a72ea56b60e6a78dffb6f58bba4a85752">UnlikelyBranchWeight</a> ("unlikely-branch-weight", cl::Hidden, cl::init(4), <a class="el" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>("Weight of the branch unlikely to be taken (default = 4)"))</td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ad78e062f62e0d6e453941fb4ca843e4d"></a><!-- doxytag: member="LowerExpectIntrinsic.cpp::DEBUG_TYPE" ref="ad78e062f62e0d6e453941fb4ca843e4d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define DEBUG_TYPE   "lower-expect-intrinsic"</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="LowerExpectIntrinsic_8cpp_source.html#l00014">14</a> of file <a class="el" href="LowerExpectIntrinsic_8cpp_source.html">LowerExpectIntrinsic.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a4ddc6597ec433bcb50681c53e6ab3c51"></a><!-- doxytag: member="LowerExpectIntrinsic.cpp::INITIALIZE_PASS" ref="a4ddc6597ec433bcb50681c53e6ab3c51" args="(LowerExpectIntrinsic,"lower-expect","Lower 'expect' ""Intrinsics", false, false) FunctionPass *llvm" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">INITIALIZE_PASS </td>
+          <td>(</td>
+          <td class="paramtype">LowerExpectIntrinsic </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"lower-expect" </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Lower 'expect' ""Intrinsics" </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a> </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="SimplifyInstructions_8cpp.html#a6dd713bd88673625bb181528a61bdc85">false</a> </td>
+          <td class="paramname"> </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="LowerExpectIntrinsic_8cpp_source.html#l00169">169</a> of file <a class="el" href="LowerExpectIntrinsic_8cpp_source.html">LowerExpectIntrinsic.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a894091c1972b7bab7f4684a6193b9f50"></a><!-- doxytag: member="LowerExpectIntrinsic.cpp::STATISTIC" ref="a894091c1972b7bab7f4684a6193b9f50" args="(IfHandled,"Number of 'expect' intrinsic intructions handled")" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">STATISTIC </td>
+          <td>(</td>
+          <td class="paramtype">IfHandled </td>
+          <td class="paramname">, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">"Number of 'expect' intrinsic intructions handled" </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="a0767d265572b6e7a4b4bcf2e84d5ee12"></a><!-- doxytag: member="LowerExpectIntrinsic.cpp::LikelyBranchWeight" ref="a0767d265572b6e7a4b4bcf2e84d5ee12" args="("likely-branch-weight", cl::Hidden, cl::init(64), cl::desc("Weight of the branch likely to be taken (default = 64)"))" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classllvm_1_1cl_1_1opt.html">cl::opt</a><uint32_t> <a class="el" href="LowerExpectIntrinsic_8cpp.html#a0767d265572b6e7a4b4bcf2e84d5ee12">LikelyBranchWeight</a>("likely-branch-weight", cl::Hidden, cl::init(64), <a class="el" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>("Weight of the branch likely to be taken (default = 64)"))<code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a72ea56b60e6a78dffb6f58bba4a85752"></a><!-- doxytag: member="LowerExpectIntrinsic.cpp::UnlikelyBranchWeight" ref="a72ea56b60e6a78dffb6f58bba4a85752" args="("unlikely-branch-weight", cl::Hidden, cl::init(4), cl::desc("Weight of the branch unlikely to be taken (default = 4)"))" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="classllvm_1_1cl_1_1opt.html">cl::opt</a><uint32_t> <a class="el" href="LowerExpectIntrinsic_8cpp.html#a72ea56b60e6a78dffb6f58bba4a85752">UnlikelyBranchWeight</a>("unlikely-branch-weight", cl::Hidden, cl::init(4), <a class="el" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>("Weight of the branch unlikely to be taken (default = 4)"))<code> [static]</code></td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:31 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/LowerExpectIntrinsic_8cpp__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LowerExpectIntrinsic_8cpp__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/LowerExpectIntrinsic_8cpp__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/LowerExpectIntrinsic_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LowerExpectIntrinsic_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LowerExpectIntrinsic_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LowerExpectIntrinsic_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,230 @@
+<!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: LowerExpectIntrinsic.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">LowerExpectIntrinsic.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="LowerExpectIntrinsic_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===- LowerExpectIntrinsic.cpp - Lower expect intrinsic ------------------===//</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 pass lowers the 'expect' intrinsic to LLVM metadata.</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><a class="code" href="LowerExpectIntrinsic_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">00014</a> <span class="preprocessor">#define DEBUG_TYPE "lower-expect-intrinsic"</span>
+<a name="l00015"></a>00015 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="BasicBlock_8h.html">llvm/BasicBlock.h</a>"</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include "<a class="code" href="Constants_8h.html">llvm/Constants.h</a>"</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="Function_8h.html">llvm/Function.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="Instructions_8h.html">llvm/Instructions.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="Intrinsics_8h.html">llvm/Intrinsics.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="LLVMContext_8h.html">llvm/LLVMContext.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="MDBuilder_8h.html">llvm/MDBuilder.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="Metadata_8h.html">llvm/Metadata.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="Pass_8h.html">llvm/Pass.h</a>"</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="Statistic_8h.html">llvm/ADT/Statistic.h</a>"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="Transforms_2Scalar_8h.html">llvm/Transforms/Scalar.h</a>"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="CommandLine_8h.html">llvm/Support/CommandLine.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 <vector></span>
+<a name="l00029"></a>00029 
+<a name="l00030"></a>00030 <span class="keyword">using namespace </span>llvm;
+<a name="l00031"></a>00031 
+<a name="l00032"></a>00032 <a class="code" href="Statistic_8h.html#ad6117415b93e5675d5a6c8e1855b3b2f">STATISTIC</a>(IfHandled, <span class="stringliteral">"Number of 'expect' intrinsic intructions handled"</span>);
+<a name="l00033"></a>00033 
+<a name="l00034"></a>00034 <span class="keyword">static</span> <a class="code" href="classllvm_1_1cl_1_1opt.html">cl::opt<uint32_t></a>
+<a name="l00035"></a>00035 <a class="code" href="LowerExpectIntrinsic_8cpp.html#a0767d265572b6e7a4b4bcf2e84d5ee12">LikelyBranchWeight</a>(<span class="stringliteral">"likely-branch-weight"</span>, <a class="code" href="namespacellvm_1_1cl.html#a68075925a54790e71ca790e1d4f21a40a263ac008d8d31f13ce460395fc4cf7e6">cl::Hidden</a>, <a class="code" href="namespacellvm_1_1cl.html#a10a041239ae1870cfcc064bfaa79fb65">cl::init</a>(64),
+<a name="l00036"></a>00036                    <a class="code" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>(<span class="stringliteral">"Weight of the branch likely to be taken (default = 64)"</span>));
+<a name="l00037"></a>00037 <span class="keyword">static</span> <a class="code" href="classllvm_1_1cl_1_1opt.html">cl::opt<uint32_t></a>
+<a name="l00038"></a>00038 <a class="code" href="LowerExpectIntrinsic_8cpp.html#a72ea56b60e6a78dffb6f58bba4a85752">UnlikelyBranchWeight</a>(<span class="stringliteral">"unlikely-branch-weight"</span>, <a class="code" href="namespacellvm_1_1cl.html#a68075925a54790e71ca790e1d4f21a40a263ac008d8d31f13ce460395fc4cf7e6">cl::Hidden</a>, <a class="code" href="namespacellvm_1_1cl.html#a10a041239ae1870cfcc064bfaa79fb65">cl::init</a>(4),
+<a name="l00039"></a>00039                    <a class="code" href="structllvm_1_1cl_1_1desc.html">cl::desc</a>(<span class="stringliteral">"Weight of the branch unlikely to be taken (default = 4)"</span>));
+<a name="l00040"></a>00040 
+<a name="l00041"></a>00041 <span class="keyword">namespace </span>{
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043   <span class="keyword">class </span>LowerExpectIntrinsic : <span class="keyword">public</span> <a class="code" href="classllvm_1_1FunctionPass.html">FunctionPass</a> {
+<a name="l00044"></a>00044 
+<a name="l00045"></a>00045     <span class="keywordtype">bool</span> HandleSwitchExpect(<a class="code" href="classllvm_1_1SwitchInst.html">SwitchInst</a> *SI);
+<a name="l00046"></a>00046 
+<a name="l00047"></a>00047     <span class="keywordtype">bool</span> HandleIfExpect(<a class="code" href="classllvm_1_1BranchInst.html">BranchInst</a> *BI);
+<a name="l00048"></a>00048 
+<a name="l00049"></a>00049   <span class="keyword">public</span>:
+<a name="l00050"></a>00050     <span class="keyword">static</span> <span class="keywordtype">char</span> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>;
+<a name="l00051"></a>00051     LowerExpectIntrinsic() : <a class="code" href="classllvm_1_1FunctionPass.html">FunctionPass</a>(<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>) {
+<a name="l00052"></a>00052       <a class="code" href="namespacellvm.html#a905e81399147702d5f17cf907969989d">initializeLowerExpectIntrinsicPass</a>(*<a class="code" href="classllvm_1_1PassRegistry.html#a05a729900b76c89e808c6c3094921b2f">PassRegistry::getPassRegistry</a>());
+<a name="l00053"></a>00053     }
+<a name="l00054"></a>00054 
+<a name="l00055"></a>00055     <span class="keywordtype">bool</span> runOnFunction(<a class="code" href="classllvm_1_1Function.html">Function</a> &<a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>);
+<a name="l00056"></a>00056   };
+<a name="l00057"></a>00057 }
+<a name="l00058"></a>00058 
+<a name="l00059"></a>00059 
+<a name="l00060"></a>00060 <span class="keywordtype">bool</span> LowerExpectIntrinsic::HandleSwitchExpect(<a class="code" href="classllvm_1_1SwitchInst.html">SwitchInst</a> *SI) {
+<a name="l00061"></a>00061   <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1CallInst.html">CallInst</a>>(SI-><a class="code" href="classllvm_1_1SwitchInst.html#add5ee99852e9927d0777e74572c91708">getCondition</a>());
+<a name="l00062"></a>00062   <span class="keywordflow">if</span> (!CI)
+<a name="l00063"></a>00063     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00064"></a>00064 
+<a name="l00065"></a>00065   <a class="code" href="classllvm_1_1Function.html">Function</a> *Fn = CI-><a class="code" href="classllvm_1_1CallInst.html#a0bcd4131e1a1d92215f5385b4e16cd2e">getCalledFunction</a>();
+<a name="l00066"></a>00066   <span class="keywordflow">if</span> (!Fn || Fn-><a class="code" href="classllvm_1_1Function.html#a7e47131185becc5c96731a2e28441b77">getIntrinsicID</a>() != Intrinsic::expect)
+<a name="l00067"></a>00067     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00068"></a>00068 
+<a name="l00069"></a>00069   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *ArgValue = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0);
+<a name="l00070"></a>00070   <a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *ExpectedValue = <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="l00071"></a>00071   <span class="keywordflow">if</span> (!ExpectedValue)
+<a name="l00072"></a>00072     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00073"></a>00073 
+<a name="l00074"></a>00074   <a class="code" href="classllvm_1_1SwitchInst_1_1CaseIt.html">SwitchInst::CaseIt</a> Case = SI-><a class="code" href="classllvm_1_1SwitchInst.html#ad3a1537c850f63ce48bcf45694cde73f">findCaseValue</a>(ExpectedValue);
+<a name="l00075"></a>00075   <span class="keywordtype">unsigned</span> n = SI-><a class="code" href="classllvm_1_1SwitchInst.html#a4901d4ad48420014059e9393f75442ae">getNumCases</a>(); <span class="comment">// +1 for default case.</span>
+<a name="l00076"></a>00076   std::vector<uint32_t> Weights(n + 1);
+<a name="l00077"></a>00077 
+<a name="l00078"></a>00078   Weights[0] = Case == SI-><a class="code" href="classllvm_1_1SwitchInst.html#a96a201f56500af4dd70b4169f140cb4c">case_default</a>() ? <a class="code" href="LowerExpectIntrinsic_8cpp.html#a0767d265572b6e7a4b4bcf2e84d5ee12">LikelyBranchWeight</a>
+<a name="l00079"></a>00079                                           : <a class="code" href="LowerExpectIntrinsic_8cpp.html#a72ea56b60e6a78dffb6f58bba4a85752">UnlikelyBranchWeight</a>;
+<a name="l00080"></a>00080   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != n; ++i)
+<a name="l00081"></a>00081     Weights[i + 1] = i == Case.<a class="code" href="classllvm_1_1SwitchInst_1_1CaseIteratorT.html#a7c0fe8716b2fe36d19bfb6659975ef92" title="Returns number of current case.">getCaseIndex</a>() ? <a class="code" href="LowerExpectIntrinsic_8cpp.html#a0767d265572b6e7a4b4bcf2e84d5ee12">LikelyBranchWeight</a>
+<a name="l00082"></a>00082                                               : <a class="code" href="LowerExpectIntrinsic_8cpp.html#a72ea56b60e6a78dffb6f58bba4a85752">UnlikelyBranchWeight</a>;
+<a name="l00083"></a>00083 
+<a name="l00084"></a>00084   SI-><a class="code" href="classllvm_1_1Instruction.html#a9247a212ea89acc9573fa7e7f557eaba">setMetadata</a>(<a class="code" href="classllvm_1_1LLVMContext.html#a19d63434356844e2fd7116a9c0866ec9a31130c233c11d5b171bae969ee4c8af8">LLVMContext::MD_prof</a>,
+<a name="l00085"></a>00085                   <a class="code" href="classllvm_1_1MDBuilder.html">MDBuilder</a>(CI-><a class="code" href="classllvm_1_1Value.html#af85a4828b6b5a8de7fc0a55cc0e5b52f" title="All values hold a context through their type.">getContext</a>()).createBranchWeights(Weights));
+<a name="l00086"></a>00086 
+<a name="l00087"></a>00087   SI-><a class="code" href="classllvm_1_1SwitchInst.html#a48f1c68131a864a29455ce86c1d571b2">setCondition</a>(ArgValue);
+<a name="l00088"></a>00088   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 
+<a name="l00091"></a>00091 
+<a name="l00092"></a>00092 <span class="keywordtype">bool</span> LowerExpectIntrinsic::HandleIfExpect(<a class="code" href="classllvm_1_1BranchInst.html">BranchInst</a> *BI) {
+<a name="l00093"></a>00093   <span class="keywordflow">if</span> (BI-><a class="code" href="classllvm_1_1BranchInst.html#a382131e712e55e8324fbd5068de17b78">isUnconditional</a>())
+<a name="l00094"></a>00094     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00095"></a>00095 
+<a name="l00096"></a>00096   <span class="comment">// Handle non-optimized IR code like:</span>
+<a name="l00097"></a>00097   <span class="comment">//   %expval = call i64 @llvm.expect.i64.i64(i64 %conv1, i64 1)</span>
+<a name="l00098"></a>00098   <span class="comment">//   %tobool = icmp ne i64 %expval, 0</span>
+<a name="l00099"></a>00099   <span class="comment">//   br i1 %tobool, label %if.then, label %if.end</span>
+<a name="l00100"></a>00100 
+<a name="l00101"></a>00101   <a class="code" href="classllvm_1_1ICmpInst.html" title="Represent an integer comparison operator.">ICmpInst</a> *CmpI = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1ICmpInst.html" title="Represent an integer comparison operator.">ICmpInst</a>>(BI-><a class="code" href="classllvm_1_1BranchInst.html#a84309bb8c34c8bc5694ec5d48dd8668f">getCondition</a>());
+<a name="l00102"></a>00102   <span class="keywordflow">if</span> (!CmpI || CmpI-><a class="code" href="classllvm_1_1CmpInst.html#a8afd4995fae596b2c86eeed85b3d388b" title="Return the predicate for this instruction.">getPredicate</a>() != <a class="code" href="classllvm_1_1CmpInst.html#a283f9a5d4d843d20c40bb4d3e364bb05ac17897ebf2f6a6986280fc3bdf28a30a" title="not equal">CmpInst::ICMP_NE</a>)
+<a name="l00103"></a>00103     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00104"></a>00104 
+<a name="l00105"></a>00105   <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1CallInst.html">CallInst</a>>(CmpI-><a class="code" href="classllvm_1_1User.html#a997ff6a1758bf732b9b263fc61011644">getOperand</a>(0));
+<a name="l00106"></a>00106   <span class="keywordflow">if</span> (!CI)
+<a name="l00107"></a>00107     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00108"></a>00108 
+<a name="l00109"></a>00109   <a class="code" href="classllvm_1_1Function.html">Function</a> *Fn = CI-><a class="code" href="classllvm_1_1CallInst.html#a0bcd4131e1a1d92215f5385b4e16cd2e">getCalledFunction</a>();
+<a name="l00110"></a>00110   <span class="keywordflow">if</span> (!Fn || Fn-><a class="code" href="classllvm_1_1Function.html#a7e47131185becc5c96731a2e28441b77">getIntrinsicID</a>() != Intrinsic::expect)
+<a name="l00111"></a>00111     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00112"></a>00112 
+<a name="l00113"></a>00113   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *ArgValue = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0);
+<a name="l00114"></a>00114   <a class="code" href="classllvm_1_1ConstantInt.html" title="Class for constant integers.">ConstantInt</a> *ExpectedValue = <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="l00115"></a>00115   <span class="keywordflow">if</span> (!ExpectedValue)
+<a name="l00116"></a>00116     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00117"></a>00117 
+<a name="l00118"></a>00118   <a class="code" href="classllvm_1_1MDBuilder.html">MDBuilder</a> MDB(CI-><a class="code" href="classllvm_1_1Value.html#af85a4828b6b5a8de7fc0a55cc0e5b52f" title="All values hold a context through their type.">getContext</a>());
+<a name="l00119"></a>00119   <a class="code" href="classllvm_1_1MDNode.html" title="MDNode - a tuple of other values.">MDNode</a> *Node;
+<a name="l00120"></a>00120 
+<a name="l00121"></a>00121   <span class="comment">// If expect value is equal to 1 it means that we are more likely to take</span>
+<a name="l00122"></a>00122   <span class="comment">// branch 0, in other case more likely is branch 1.</span>
+<a name="l00123"></a>00123   <span class="keywordflow">if</span> (ExpectedValue-><a class="code" href="classllvm_1_1ConstantInt.html#aa96ca2cf0bb1e924523900fb911b0a45" title="Determine if the value is one.">isOne</a>())
+<a name="l00124"></a>00124     Node = MDB.createBranchWeights(<a class="code" href="LowerExpectIntrinsic_8cpp.html#a0767d265572b6e7a4b4bcf2e84d5ee12">LikelyBranchWeight</a>, <a class="code" href="LowerExpectIntrinsic_8cpp.html#a72ea56b60e6a78dffb6f58bba4a85752">UnlikelyBranchWeight</a>);
+<a name="l00125"></a>00125   <span class="keywordflow">else</span>
+<a name="l00126"></a>00126     Node = MDB.createBranchWeights(<a class="code" href="LowerExpectIntrinsic_8cpp.html#a72ea56b60e6a78dffb6f58bba4a85752">UnlikelyBranchWeight</a>, <a class="code" href="LowerExpectIntrinsic_8cpp.html#a0767d265572b6e7a4b4bcf2e84d5ee12">LikelyBranchWeight</a>);
+<a name="l00127"></a>00127 
+<a name="l00128"></a>00128   BI-><a class="code" href="classllvm_1_1Instruction.html#a9247a212ea89acc9573fa7e7f557eaba">setMetadata</a>(<a class="code" href="classllvm_1_1LLVMContext.html#a19d63434356844e2fd7116a9c0866ec9a31130c233c11d5b171bae969ee4c8af8">LLVMContext::MD_prof</a>, Node);
+<a name="l00129"></a>00129 
+<a name="l00130"></a>00130   CmpI-><a class="code" href="classllvm_1_1User.html#a5fa9b8e1842b354f64c1ba6be0a4a17f">setOperand</a>(0, ArgValue);
+<a name="l00131"></a>00131   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00132"></a>00132 }
+<a name="l00133"></a>00133 
+<a name="l00134"></a>00134 
+<a name="l00135"></a>00135 <span class="keywordtype">bool</span> LowerExpectIntrinsic::runOnFunction(<a class="code" href="classllvm_1_1Function.html">Function</a> &<a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>) {
+<a name="l00136"></a>00136   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">Function::iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = F.<a class="code" href="classllvm_1_1Function.html#a88a5e60837674780a9d812d661897ac5">begin</a>(), E = F.<a class="code" href="classllvm_1_1Function.html#ae4ca2261b8b901e415fda7feac5051ea">end</a>(); <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> != E;) {
+<a name="l00137"></a>00137     <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *BB = <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>++;
+<a name="l00138"></a>00138 
+<a name="l00139"></a>00139     <span class="comment">// Create "block_weights" metadata.</span>
+<a name="l00140"></a>00140     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1BranchInst.html">BranchInst</a> *BI = dyn_cast<BranchInst>(BB-><a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>())) {
+<a name="l00141"></a>00141       <span class="keywordflow">if</span> (HandleIfExpect(BI))
+<a name="l00142"></a>00142         IfHandled++;
+<a name="l00143"></a>00143     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1SwitchInst.html">SwitchInst</a> *SI = dyn_cast<SwitchInst>(BB-><a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>())) {
+<a name="l00144"></a>00144       <span class="keywordflow">if</span> (HandleSwitchExpect(SI))
+<a name="l00145"></a>00145         IfHandled++;
+<a name="l00146"></a>00146     }
+<a name="l00147"></a>00147 
+<a name="l00148"></a>00148     <span class="comment">// remove llvm.expect intrinsics.</span>
+<a name="l00149"></a>00149     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> BI = BB-><a class="code" href="classllvm_1_1BasicBlock.html#a0ed5f3ab3c2e4196ee0cffffa080c062">begin</a>(), BE = BB-><a class="code" href="classllvm_1_1BasicBlock.html#a0b4e7bee9b8575cc7db73329f1a561bd">end</a>();
+<a name="l00150"></a>00150          BI != BE; ) {
+<a name="l00151"></a>00151       <a class="code" href="classllvm_1_1CallInst.html">CallInst</a> *CI = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1CallInst.html">CallInst</a>>(BI++);
+<a name="l00152"></a>00152       <span class="keywordflow">if</span> (!CI)
+<a name="l00153"></a>00153         <span class="keywordflow">continue</span>;
+<a name="l00154"></a>00154 
+<a name="l00155"></a>00155       <a class="code" href="classllvm_1_1Function.html">Function</a> *Fn = CI-><a class="code" href="classllvm_1_1CallInst.html#a0bcd4131e1a1d92215f5385b4e16cd2e">getCalledFunction</a>();
+<a name="l00156"></a>00156       <span class="keywordflow">if</span> (Fn && Fn-><a class="code" href="classllvm_1_1Function.html#a7e47131185becc5c96731a2e28441b77">getIntrinsicID</a>() == Intrinsic::expect) {
+<a name="l00157"></a>00157         <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Exp = CI-><a class="code" href="classllvm_1_1CallInst.html#a150b33ecedbc8c7803c2db8040fbe3f8">getArgOperand</a>(0);
+<a name="l00158"></a>00158         CI-><a class="code" href="classllvm_1_1Value.html#a3ab5fc45117b450e8bb04e564cb6e5f2">replaceAllUsesWith</a>(Exp);
+<a name="l00159"></a>00159         CI-><a class="code" href="classllvm_1_1Instruction.html#a6fe2f06b8a4b2c3d6308afb223a0238a">eraseFromParent</a>();
+<a name="l00160"></a>00160       }
+<a name="l00161"></a>00161     }
+<a name="l00162"></a>00162   }
+<a name="l00163"></a>00163 
+<a name="l00164"></a>00164   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00165"></a>00165 }
+<a name="l00166"></a>00166 
+<a name="l00167"></a>00167 
+<a name="l00168"></a>00168 <span class="keywordtype">char</span> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">LowerExpectIntrinsic::ID</a> = 0;
+<a name="l00169"></a><a class="code" href="LowerExpectIntrinsic_8cpp.html#a4ddc6597ec433bcb50681c53e6ab3c51">00169</a> <a class="code" href="PassSupport_8h.html#af807c9595d50b45c0008924c4679c85c">INITIALIZE_PASS</a>(LowerExpectIntrinsic, <span class="stringliteral">"lower-expect"</span>, <span class="stringliteral">"Lower 'expect' "</span>
+<a name="l00170"></a>00170                 <span class="stringliteral">"Intrinsics"</span>, <span class="keyword">false</span>, <span class="keyword">false</span>)
+<a name="l00171"></a>00171 
+<a name="l00172"></a>00172 <a class="code" href="classllvm_1_1FunctionPass.html">FunctionPass</a> *llvm::<a class="code" href="namespacellvm.html#a7f96751b0dbbb50b5c9d8135ef2cddd6">createLowerExpectIntrinsicPass</a>() {
+<a name="l00173"></a>00173   <span class="keywordflow">return</span> <span class="keyword">new</span> LowerExpectIntrinsic();
+<a name="l00174"></a>00174 }
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:35: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/LowerInvoke_8cpp__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LowerInvoke_8cpp__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LowerInvoke_8cpp__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LowerInvoke_8cpp__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,45 @@
+<map id="G" name="G">
+<area shape="rect" href="$Transforms_2Scalar_8h.html" title="llvm/Transforms/Scalar.h" alt="" coords="5,84,181,111"/>
+<area shape="rect" href="$Constants_8h.html" title="llvm/Constants.h" alt="" coords="1664,471,1792,497"/>
+<area shape="rect" href="$SmallVector_8h.html" title="llvm/ADT/SmallVector.h" alt="" coords="1427,780,1595,807"/>
+<area shape="rect" href="$DerivedTypes_8h.html" title="llvm/DerivedTypes.h" alt="" coords="2043,471,2189,497"/>
+<area shape="rect" href="$Instructions_8h.html" title="llvm/Instructions.h" alt="" coords="1396,239,1532,265"/>
+<area shape="rect" href="$LLVMContext_8h.html" title="llvm/LLVMContext.h" alt="" coords="2500,471,2647,497"/>
+<area shape="rect" href="$Intrinsics_8h.html" title="llvm/Intrinsics.h" alt="" coords="1700,625,1820,652"/>
+<area shape="rect" href="$Module_8h.html" title="llvm/Module.h" alt="" coords="1053,393,1163,420"/>
+<area shape="rect" href="$Pass_8h.html" title="llvm/Pass.h" alt="" coords="2449,625,2540,652"/>
+<area shape="rect" href="$BasicBlockUtils_8h.html" title="llvm/Transforms/Utils/BasicBlockUtils.h" alt="" coords="703,239,967,265"/>
+<area shape="rect" href="$Local_8h.html" title="llvm/Transforms/Utils/Local.h" alt="" coords="2169,84,2372,111"/>
+<area shape="rect" href="$Statistic_8h.html" title="llvm/ADT/Statistic.h" alt="" coords="2772,84,2916,111"/>
+<area shape="rect" href="$CommandLine_8h.html" title="llvm/Support/CommandLine.h" alt="" coords="2385,703,2596,729"/>
+<area shape="rect" href="$TargetLowering_8h.html" title="llvm/Target/TargetLowering.h" alt="" coords="357,471,557,497"/>
+<area shape="rect" href="$Constant_8h.html" title="llvm/Constant.h" alt="" coords="1732,548,1852,575"/>
+<area shape="rect" href="$OperandTraits_8h.html" title="llvm/OperandTraits.h" alt="" coords="1188,548,1340,575"/>
+<area shape="rect" href="$APInt_8h.html" title="llvm/ADT/APInt.h" alt="" coords="1551,625,1676,652"/>
+<area shape="rect" href="$ArrayRef_8h.html" title="llvm/ADT/ArrayRef.h" alt="" coords="1439,703,1583,729"/>
+<area shape="rect" href="$APFloat_8h.html" title="llvm/ADT/APFloat.h" alt="" coords="1567,548,1708,575"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="1423,935,1596,961"/>
+<area shape="rect" href="$AlignOf_8h.html" title="llvm/Support/AlignOf.h" alt="" coords="1369,857,1532,884"/>
+<area shape="rect" href="$Type_8h.html" title="llvm/Type.h" alt="" coords="2233,548,2324,575"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="2140,625,2324,652"/>
+<area shape="rect" href="$InstrTypes_8h.html" title="llvm/InstrTypes.h" alt="" coords="1305,393,1431,420"/>
+<area shape="rect" href="$Attributes_8h.html" title="llvm/Attributes.h" alt="" coords="824,548,949,575"/>
+<area shape="rect" href="$CallingConv_8h.html" title="llvm/CallingConv.h" alt="" coords="613,548,749,575"/>
+<area shape="rect" href="$IntegersSubset_8h.html" title="llvm/Support/IntegersSubset.h" alt="" coords="1711,393,1927,420"/>
+<area shape="rect" href="$IntegersSubsetMapping_8h.html" title="llvm/Support/IntegersSubsetMapping.h" alt="" coords="1607,316,1876,343"/>
+<area shape="rect" href="$ErrorHandling_8h.html" title="llvm/Support/ErrorHandling.h" alt="" coords="1220,625,1425,652"/>
+<area shape="rect" href="$Function_8h.html" title="llvm/Function.h" alt="" coords="784,471,899,497"/>
+<area shape="rect" href="$GlobalVariable_8h.html" title="llvm/GlobalVariable.h" alt="" coords="1333,471,1488,497"/>
+<area shape="rect" href="$GlobalAlias_8h.html" title="llvm/GlobalAlias.h" alt="" coords="1176,471,1309,497"/>
+<area shape="rect" href="$Metadata_8h.html" title="llvm/Metadata.h" alt="" coords="1073,625,1196,652"/>
+<area shape="rect" href="$OwningPtr_8h.html" title="llvm/ADT/OwningPtr.h" alt="" coords="708,780,863,807"/>
+<area shape="rect" href="$BasicBlock_8h.html" title="llvm/BasicBlock.h" alt="" coords="1977,548,2108,575"/>
+<area shape="rect" href="$PassSupport_8h.html" title="llvm/PassSupport.h" alt="" coords="2217,703,2361,729"/>
+<area shape="rect" href="$PassAnalysisSupport_8h.html" title="llvm/PassAnalysisSupport.h" alt="" coords="1948,703,2143,729"/>
+<area shape="rect" href="$CFG_8h.html" title="llvm/Support/CFG.h" alt="" coords="708,316,852,343"/>
+<area shape="rect" href="$DebugLoc_8h.html" title="llvm/Support/DebugLoc.h" alt="" coords="307,548,488,575"/>
+<area shape="rect" href="$IRBuilder_8h.html" title="llvm/IRBuilder.h" alt="" coords="2308,161,2425,188"/>
+<area shape="rect" href="$DataLayout_8h.html" title="llvm/DataLayout.h" alt="" coords="2399,548,2535,575"/>
+<area shape="rect" href="$Operator_8h.html" title="llvm/Operator.h" alt="" coords="2153,393,2273,420"/>
+<area shape="rect" href="$GetElementPtrTypeIterator_8h.html" title="llvm/Support/GetElementPtrTypeIterator.h" alt="" coords="1948,161,2233,188"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/LowerInvoke_8cpp__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LowerInvoke_8cpp__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/LowerInvoke_8cpp__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/LowerSwitch_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/LowerSwitch_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/LowerSwitch_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/LowerSwitch_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,361 @@
+<!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: LowerSwitch.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">LowerSwitch.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="LowerSwitch_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===- LowerSwitch.cpp - Eliminate Switch instructions --------------------===//</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">// The LowerSwitch transformation rewrites switch instructions with a sequence</span>
+<a name="l00011"></a>00011 <span class="comment">// of branches, which allows targets to get away with not implementing the</span>
+<a name="l00012"></a>00012 <span class="comment">// switch instruction until it is convenient.</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">#include "<a class="code" href="Transforms_2Scalar_8h.html">llvm/Transforms/Scalar.h</a>"</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="UnifyFunctionExitNodes_8h.html">llvm/Transforms/Utils/UnifyFunctionExitNodes.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="Constants_8h.html">llvm/Constants.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="Function_8h.html">llvm/Function.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="Instructions_8h.html">llvm/Instructions.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="LLVMContext_8h.html">llvm/LLVMContext.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="Pass_8h.html">llvm/Pass.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="STLExtras_8h.html">llvm/ADT/STLExtras.h</a>"</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="Compiler_8h.html">llvm/Support/Compiler.h</a>"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="Debug_8h.html">llvm/Support/Debug.h</a>"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="raw__ostream_8h.html">llvm/Support/raw_ostream.h</a>"</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include <algorithm></span>
+<a name="l00028"></a>00028 <span class="keyword">using namespace </span>llvm;
+<a name="l00029"></a>00029 
+<a name="l00030"></a>00030 <span class="keyword">namespace </span>{<span class="comment"></span>
+<a name="l00031"></a>00031 <span class="comment">  /// LowerSwitch Pass - Replace all SwitchInst instructions with chained branch</span>
+<a name="l00032"></a>00032 <span class="comment">  /// instructions.</span>
+<a name="l00033"></a>00033 <span class="comment"></span>  <span class="keyword">class </span>LowerSwitch : <span class="keyword">public</span> <a class="code" href="classllvm_1_1FunctionPass.html">FunctionPass</a> {
+<a name="l00034"></a>00034   <span class="keyword">public</span>:
+<a name="l00035"></a>00035     <span class="keyword">static</span> <span class="keywordtype">char</span> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>; <span class="comment">// Pass identification, replacement for typeid</span>
+<a name="l00036"></a>00036     LowerSwitch() : <a class="code" href="classllvm_1_1FunctionPass.html">FunctionPass</a>(<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>) {
+<a name="l00037"></a>00037       <a class="code" href="namespacellvm.html#a9f5e25ad942e249864dcab11b5894eac">initializeLowerSwitchPass</a>(*<a class="code" href="classllvm_1_1PassRegistry.html#a05a729900b76c89e808c6c3094921b2f">PassRegistry::getPassRegistry</a>());
+<a name="l00038"></a>00038     } 
+<a name="l00039"></a>00039 
+<a name="l00040"></a>00040     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> runOnFunction(<a class="code" href="classllvm_1_1Function.html">Function</a> &<a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>);
+<a name="l00041"></a>00041     
+<a name="l00042"></a>00042     <span class="keyword">virtual</span> <span class="keywordtype">void</span> getAnalysisUsage(<a class="code" href="classllvm_1_1AnalysisUsage.html">AnalysisUsage</a> &AU)<span class="keyword"> const </span>{
+<a name="l00043"></a>00043       <span class="comment">// This is a cluster of orthogonal Transforms</span>
+<a name="l00044"></a>00044       AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#a884f90190bca4bd354f2d5c91c264028">addPreserved</a><<a class="code" href="structllvm_1_1UnifyFunctionExitNodes.html">UnifyFunctionExitNodes</a>>();
+<a name="l00045"></a>00045       AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#a884f90190bca4bd354f2d5c91c264028">addPreserved</a>(<span class="stringliteral">"mem2reg"</span>);
+<a name="l00046"></a>00046       AU.<a class="code" href="classllvm_1_1AnalysisUsage.html#a40970e5d42646fb2d9aa5f7a2c879516">addPreservedID</a>(<a class="code" href="namespacellvm.html#a490d92b549159125ab1a4deaae7a403f">LowerInvokePassID</a>);
+<a name="l00047"></a>00047     }
+<a name="l00048"></a>00048 
+<a name="l00049"></a>00049     <span class="keyword">struct </span>CaseRange {
+<a name="l00050"></a>00050       <a class="code" href="classllvm_1_1Constant.html" title="LLVM Constant Representation.">Constant</a>* Low;
+<a name="l00051"></a>00051       <a class="code" href="classllvm_1_1Constant.html" title="LLVM Constant Representation.">Constant</a>* High;
+<a name="l00052"></a>00052       <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* BB;
+<a name="l00053"></a>00053 
+<a name="l00054"></a>00054       CaseRange(<a class="code" href="classllvm_1_1Constant.html" title="LLVM Constant Representation.">Constant</a> *low = 0, <a class="code" href="classllvm_1_1Constant.html" title="LLVM Constant Representation.">Constant</a> *high = 0, <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *bb = 0) :
+<a name="l00055"></a>00055         Low(low), High(high), BB(bb) { }
+<a name="l00056"></a>00056     };
+<a name="l00057"></a>00057 
+<a name="l00058"></a>00058     <span class="keyword">typedef</span> std::vector<CaseRange>           CaseVector;
+<a name="l00059"></a>00059     <span class="keyword">typedef</span> std::vector<CaseRange>::iterator CaseItr;
+<a name="l00060"></a>00060   <span class="keyword">private</span>:
+<a name="l00061"></a>00061     <span class="keywordtype">void</span> processSwitchInst(<a class="code" href="classllvm_1_1SwitchInst.html">SwitchInst</a> *SI);
+<a name="l00062"></a>00062 
+<a name="l00063"></a>00063     <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* switchConvert(CaseItr Begin, CaseItr End, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>* Val,
+<a name="l00064"></a>00064                               <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* OrigBlock, <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* <a class="code" href="namespacellvm_1_1Reloc.html#af59f6dc86e80aaf56f1afd155eebf568a6f9fa4f118519f6df6435bd13317466e">Default</a>);
+<a name="l00065"></a>00065     <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* newLeafBlock(CaseRange& Leaf, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>* Val,
+<a name="l00066"></a>00066                              <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* OrigBlock, <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* <a class="code" href="namespacellvm_1_1Reloc.html#af59f6dc86e80aaf56f1afd155eebf568a6f9fa4f118519f6df6435bd13317466e">Default</a>);
+<a name="l00067"></a>00067     <span class="keywordtype">unsigned</span> Clusterify(CaseVector& Cases, <a class="code" href="classllvm_1_1SwitchInst.html">SwitchInst</a> *SI);
+<a name="l00068"></a>00068   };
+<a name="l00069"></a>00069 }
+<a name="l00070"></a>00070 
+<a name="l00071"></a>00071 <span class="keywordtype">char</span> <a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">LowerSwitch::ID</a> = 0;
+<a name="l00072"></a>00072 <a class="code" href="PassSupport_8h.html#af807c9595d50b45c0008924c4679c85c">INITIALIZE_PASS</a>(LowerSwitch, <span class="stringliteral">"lowerswitch"</span>,
+<a name="l00073"></a>00073                 <span class="stringliteral">"Lower SwitchInst's to branches"</span>, <span class="keyword">false</span>, <span class="keyword">false</span>)
+<a name="l00074"></a>00074 
+<a name="l00075"></a>00075 <span class="comment">// Publicly exposed interface to pass...</span>
+<a name="l00076"></a>00076 <a class="code" href="classchar.html">char</a> &llvm::<a class="code" href="namespacellvm.html#a84b419f26a692a58d8ed99124c68f89c">LowerSwitchID</a> = LowerSwitch::<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974" title="LLVM Calling Convention Representation.">ID</a>;
+<a name="l00077"></a>00077 <span class="comment">// createLowerSwitchPass - Interface to this file...</span>
+<a name="l00078"></a>00078 <a class="code" href="classllvm_1_1FunctionPass.html">FunctionPass</a> *llvm::<a class="code" href="namespacellvm.html#a256eb71cfded711708ae92c1f177c41b">createLowerSwitchPass</a>() {
+<a name="l00079"></a>00079   <span class="keywordflow">return</span> <span class="keyword">new</span> LowerSwitch();
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081 
+<a name="l00082"></a>00082 <span class="keywordtype">bool</span> LowerSwitch::runOnFunction(<a class="code" href="classllvm_1_1Function.html">Function</a> &<a class="code" href="LLParser_8cpp.html#a33ece1ef8074506a15d7f86eb76dbae6">F</a>) {
+<a name="l00083"></a>00083   <span class="keywordtype">bool</span> Changed = <span class="keyword">false</span>;
+<a name="l00084"></a>00084 
+<a name="l00085"></a>00085   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">Function::iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = F.<a class="code" href="classllvm_1_1Function.html#a88a5e60837674780a9d812d661897ac5">begin</a>(), E = F.<a class="code" href="classllvm_1_1Function.html#ae4ca2261b8b901e415fda7feac5051ea">end</a>(); <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> != E; ) {
+<a name="l00086"></a>00086     <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *Cur = <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>++; <span class="comment">// Advance over block so we don't traverse new blocks</span>
+<a name="l00087"></a>00087 
+<a name="l00088"></a>00088     <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1SwitchInst.html">SwitchInst</a> *SI = dyn_cast<SwitchInst>(Cur-><a class="code" href="classllvm_1_1BasicBlock.html#a5cb76a65b6524dba1493dd2b9dc3abbe">getTerminator</a>())) {
+<a name="l00089"></a>00089       Changed = <span class="keyword">true</span>;
+<a name="l00090"></a>00090       processSwitchInst(SI);
+<a name="l00091"></a>00091     }
+<a name="l00092"></a>00092   }
+<a name="l00093"></a>00093 
+<a name="l00094"></a>00094   <span class="keywordflow">return</span> Changed;
+<a name="l00095"></a>00095 }
+<a name="l00096"></a>00096 
+<a name="l00097"></a>00097 <span class="comment">// operator<< - Used for debugging purposes.</span>
+<a name="l00098"></a>00098 <span class="comment">//</span>
+<a name="l00099"></a>00099 <span class="keyword">static</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> &O,
+<a name="l00100"></a>00100                                <span class="keyword">const</span> LowerSwitch::CaseVector &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>)
+<a name="l00101"></a>00101     <a class="code" href="Compiler_8h.html#a6881c00738b22a600dfee25a1c32dab3">LLVM_ATTRIBUTE_USED</a>;
+<a name="l00102"></a><a class="code" href="LowerSwitch_8cpp.html#ad0752d4b3a0501bdf6d09efaaf6b51f4">00102</a> <span class="keyword">static</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> &O,
+<a name="l00103"></a>00103                                <span class="keyword">const</span> LowerSwitch::CaseVector &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a>) {
+<a name="l00104"></a>00104   O << <span class="stringliteral">"["</span>;
+<a name="l00105"></a>00105 
+<a name="l00106"></a>00106   <span class="keywordflow">for</span> (LowerSwitch::CaseVector::const_iterator B = C.begin(),
+<a name="l00107"></a>00107          E = C.end(); B != E; ) {
+<a name="l00108"></a>00108     O << *B->Low << <span class="stringliteral">" -"</span> << *B->High;
+<a name="l00109"></a>00109     <span class="keywordflow">if</span> (++B != E) O << <span class="stringliteral">", "</span>;
+<a name="l00110"></a>00110   }
+<a name="l00111"></a>00111 
+<a name="l00112"></a>00112   <span class="keywordflow">return</span> O << <span class="stringliteral">"]"</span>;
+<a name="l00113"></a>00113 }
+<a name="l00114"></a>00114 
+<a name="l00115"></a>00115 <span class="comment">// switchConvert - Convert the switch statement into a binary lookup of</span>
+<a name="l00116"></a>00116 <span class="comment">// the case values. The function recursively builds this tree.</span>
+<a name="l00117"></a>00117 <span class="comment">//</span>
+<a name="l00118"></a>00118 <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* LowerSwitch::switchConvert(CaseItr Begin, CaseItr End,
+<a name="l00119"></a>00119                                        <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>* Val, <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* OrigBlock,
+<a name="l00120"></a>00120                                        <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* <a class="code" href="namespacellvm_1_1Reloc.html#af59f6dc86e80aaf56f1afd155eebf568a6f9fa4f118519f6df6435bd13317466e">Default</a>)
+<a name="l00121"></a>00121 {
+<a name="l00122"></a>00122   <span class="keywordtype">unsigned</span> Size = End - Begin;
+<a name="l00123"></a>00123 
+<a name="l00124"></a>00124   <span class="keywordflow">if</span> (Size == 1)
+<a name="l00125"></a>00125     <span class="keywordflow">return</span> newLeafBlock(*Begin, Val, OrigBlock, Default);
+<a name="l00126"></a>00126 
+<a name="l00127"></a>00127   <span class="keywordtype">unsigned</span> Mid = Size / 2;
+<a name="l00128"></a>00128   std::vector<CaseRange> LHS(Begin, Begin + Mid);
+<a name="l00129"></a>00129   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"LHS: "</span> << LHS << <span class="stringliteral">"\n"</span>);
+<a name="l00130"></a>00130   std::vector<CaseRange> RHS(Begin + Mid, End);
+<a name="l00131"></a>00131   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"RHS: "</span> << RHS << <span class="stringliteral">"\n"</span>);
+<a name="l00132"></a>00132 
+<a name="l00133"></a>00133   CaseRange& Pivot = *(Begin + Mid);
+<a name="l00134"></a>00134   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"Pivot ==> "</span> 
+<a name="l00135"></a>00135                << cast<ConstantInt>(Pivot.Low)->getValue() << <span class="stringliteral">" -"</span>
+<a name="l00136"></a>00136                << cast<ConstantInt>(Pivot.High)->getValue() << <span class="stringliteral">"\n"</span>);
+<a name="l00137"></a>00137 
+<a name="l00138"></a>00138   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* LBranch = switchConvert(LHS.begin(), LHS.end(), Val,
+<a name="l00139"></a>00139                                       OrigBlock, <a class="code" href="namespacellvm_1_1Reloc.html#af59f6dc86e80aaf56f1afd155eebf568a6f9fa4f118519f6df6435bd13317466e">Default</a>);
+<a name="l00140"></a>00140   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* RBranch = switchConvert(RHS.begin(), RHS.end(), Val,
+<a name="l00141"></a>00141                                       OrigBlock, <a class="code" href="namespacellvm_1_1Reloc.html#af59f6dc86e80aaf56f1afd155eebf568a6f9fa4f118519f6df6435bd13317466e">Default</a>);
+<a name="l00142"></a>00142 
+<a name="l00143"></a>00143   <span class="comment">// Create a new node that checks if the value is < pivot. Go to the</span>
+<a name="l00144"></a>00144   <span class="comment">// left branch if it is and right branch if not.</span>
+<a name="l00145"></a>00145   <a class="code" href="classllvm_1_1Function.html">Function</a>* F = OrigBlock-><a class="code" href="classllvm_1_1GlobalValue.html#a9e1fc23a17e97d2d1732e753ae9251ac">getParent</a>();
+<a name="l00146"></a>00146   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* NewNode = <a class="code" href="classllvm_1_1BasicBlock.html#ae1d53a21892854816885c7288f8b46f1">BasicBlock::Create</a>(Val-><a class="code" href="classllvm_1_1Value.html#af85a4828b6b5a8de7fc0a55cc0e5b52f" title="All values hold a context through their type.">getContext</a>(), <span class="stringliteral">"NodeBlock"</span>);
+<a name="l00147"></a>00147   <a class="code" href="classllvm_1_1ilist__iterator.html">Function::iterator</a> FI = OrigBlock;
+<a name="l00148"></a>00148   F->getBasicBlockList().insert(++FI, NewNode);
+<a name="l00149"></a>00149 
+<a name="l00150"></a>00150   <a class="code" href="classllvm_1_1ICmpInst.html" title="Represent an integer comparison operator.">ICmpInst</a>* Comp = <span class="keyword">new</span> <a class="code" href="classllvm_1_1ICmpInst.html" title="Represent an integer comparison operator.">ICmpInst</a>(<a class="code" href="classllvm_1_1CmpInst.html#a283f9a5d4d843d20c40bb4d3e364bb05a91d86a4753c8bd7624e01bf565d87f8e" title="unsigned less than">ICmpInst::ICMP_ULT</a>,
+<a name="l00151"></a>00151                                 Val, Pivot.Low, <span class="stringliteral">"Pivot"</span>);
+<a name="l00152"></a>00152   NewNode-><a class="code" href="classllvm_1_1BasicBlock.html#a531d11ba36ed48d86057d507cc8d5567">getInstList</a>().push_back(Comp);
+<a name="l00153"></a>00153   <a class="code" href="classllvm_1_1BranchInst.html#ae9cbc599309fd2da33ec1c61df01ce1f">BranchInst::Create</a>(LBranch, RBranch, Comp, NewNode);
+<a name="l00154"></a>00154   <span class="keywordflow">return</span> NewNode;
+<a name="l00155"></a>00155 }
+<a name="l00156"></a>00156 
+<a name="l00157"></a>00157 <span class="comment">// newLeafBlock - Create a new leaf block for the binary lookup tree. It</span>
+<a name="l00158"></a>00158 <span class="comment">// checks if the switch's value == the case's value. If not, then it</span>
+<a name="l00159"></a>00159 <span class="comment">// jumps to the default branch. At this point in the tree, the value</span>
+<a name="l00160"></a>00160 <span class="comment">// can't be another valid case value, so the jump to the "default" branch</span>
+<a name="l00161"></a>00161 <span class="comment">// is warranted.</span>
+<a name="l00162"></a>00162 <span class="comment">//</span>
+<a name="l00163"></a>00163 <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* LowerSwitch::newLeafBlock(CaseRange& Leaf, <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>* Val,
+<a name="l00164"></a>00164                                       <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* OrigBlock,
+<a name="l00165"></a>00165                                       <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* Default)
+<a name="l00166"></a>00166 {
+<a name="l00167"></a>00167   <a class="code" href="classllvm_1_1Function.html">Function</a>* F = OrigBlock-><a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>();
+<a name="l00168"></a>00168   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* NewLeaf = <a class="code" href="classllvm_1_1BasicBlock.html#ae1d53a21892854816885c7288f8b46f1">BasicBlock::Create</a>(Val-><a class="code" href="classllvm_1_1Value.html#af85a4828b6b5a8de7fc0a55cc0e5b52f" title="All values hold a context through their type.">getContext</a>(), <span class="stringliteral">"LeafBlock"</span>);
+<a name="l00169"></a>00169   <a class="code" href="classllvm_1_1ilist__iterator.html">Function::iterator</a> FI = OrigBlock;
+<a name="l00170"></a>00170   F-><a class="code" href="classllvm_1_1Function.html#a4d34a40b2667246539b80589adf2028e">getBasicBlockList</a>().insert(++FI, NewLeaf);
+<a name="l00171"></a>00171 
+<a name="l00172"></a>00172   <span class="comment">// Emit comparison</span>
+<a name="l00173"></a>00173   <a class="code" href="classllvm_1_1ICmpInst.html" title="Represent an integer comparison operator.">ICmpInst</a>* Comp = NULL;
+<a name="l00174"></a>00174   <span class="keywordflow">if</span> (Leaf.Low == Leaf.High) {
+<a name="l00175"></a>00175     <span class="comment">// Make the seteq instruction...</span>
+<a name="l00176"></a>00176     Comp = <span class="keyword">new</span> <a class="code" href="classllvm_1_1ICmpInst.html" title="Represent an integer comparison operator.">ICmpInst</a>(*NewLeaf, <a class="code" href="classllvm_1_1CmpInst.html#a283f9a5d4d843d20c40bb4d3e364bb05aa719225e2de4059f93fd3209e1f48218" title="equal">ICmpInst::ICMP_EQ</a>, Val,
+<a name="l00177"></a>00177                         Leaf.Low, <span class="stringliteral">"SwitchLeaf"</span>);
+<a name="l00178"></a>00178   } <span class="keywordflow">else</span> {
+<a name="l00179"></a>00179     <span class="comment">// Make range comparison</span>
+<a name="l00180"></a>00180     <span class="keywordflow">if</span> (cast<ConstantInt>(Leaf.Low)->isMinValue(<span class="keyword">true</span> <span class="comment">/*isSigned*/</span>)) {
+<a name="l00181"></a>00181       <span class="comment">// Val >= Min && Val <= Hi --> Val <= Hi</span>
+<a name="l00182"></a>00182       Comp = <span class="keyword">new</span> <a class="code" href="classllvm_1_1ICmpInst.html" title="Represent an integer comparison operator.">ICmpInst</a>(*NewLeaf, <a class="code" href="classllvm_1_1CmpInst.html#a283f9a5d4d843d20c40bb4d3e364bb05a2751d6136a2819749dcef65dc19a4246" title="signed less or equal">ICmpInst::ICMP_SLE</a>, Val, Leaf.High,
+<a name="l00183"></a>00183                           <span class="stringliteral">"SwitchLeaf"</span>);
+<a name="l00184"></a>00184     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cast<ConstantInt>(Leaf.Low)->isZero()) {
+<a name="l00185"></a>00185       <span class="comment">// Val >= 0 && Val <= Hi --> Val <=u Hi</span>
+<a name="l00186"></a>00186       Comp = <span class="keyword">new</span> <a class="code" href="classllvm_1_1ICmpInst.html" title="Represent an integer comparison operator.">ICmpInst</a>(*NewLeaf, <a class="code" href="classllvm_1_1CmpInst.html#a283f9a5d4d843d20c40bb4d3e364bb05ad92f160316221fd4090520bb2b3cefc5" title="unsigned less or equal">ICmpInst::ICMP_ULE</a>, Val, Leaf.High,
+<a name="l00187"></a>00187                           <span class="stringliteral">"SwitchLeaf"</span>);      
+<a name="l00188"></a>00188     } <span class="keywordflow">else</span> {
+<a name="l00189"></a>00189       <span class="comment">// Emit V-Lo <=u Hi-Lo</span>
+<a name="l00190"></a>00190       <a class="code" href="classllvm_1_1Constant.html" title="LLVM Constant Representation.">Constant</a>* NegLo = <a class="code" href="classllvm_1_1ConstantExpr.html#afa29f0cd072ab9b3a2630681ffe5760f">ConstantExpr::getNeg</a>(Leaf.Low);
+<a name="l00191"></a>00191       <a class="code" href="classllvm_1_1Instruction.html">Instruction</a>* Add = BinaryOperator::CreateAdd(Val, NegLo,
+<a name="l00192"></a>00192                                                    Val-><a class="code" href="classllvm_1_1Value.html#ad452febc1ac0b394876e640ec03ffa38">getName</a>()+<span class="stringliteral">".off"</span>,
+<a name="l00193"></a>00193                                                    NewLeaf);
+<a name="l00194"></a>00194       <a class="code" href="classllvm_1_1Constant.html" title="LLVM Constant Representation.">Constant</a> *UpperBound = <a class="code" href="classllvm_1_1ConstantExpr.html#ae6f1c15034bc5515033874630a8ecce6">ConstantExpr::getAdd</a>(NegLo, Leaf.High);
+<a name="l00195"></a>00195       Comp = <span class="keyword">new</span> <a class="code" href="classllvm_1_1ICmpInst.html" title="Represent an integer comparison operator.">ICmpInst</a>(*NewLeaf, <a class="code" href="classllvm_1_1CmpInst.html#a283f9a5d4d843d20c40bb4d3e364bb05ad92f160316221fd4090520bb2b3cefc5" title="unsigned less or equal">ICmpInst::ICMP_ULE</a>, Add, UpperBound,
+<a name="l00196"></a>00196                           <span class="stringliteral">"SwitchLeaf"</span>);
+<a name="l00197"></a>00197     }
+<a name="l00198"></a>00198   }
+<a name="l00199"></a>00199 
+<a name="l00200"></a>00200   <span class="comment">// Make the conditional branch...</span>
+<a name="l00201"></a>00201   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* Succ = Leaf.BB;
+<a name="l00202"></a>00202   <a class="code" href="classllvm_1_1BranchInst.html#ae9cbc599309fd2da33ec1c61df01ce1f">BranchInst::Create</a>(Succ, Default, Comp, NewLeaf);
+<a name="l00203"></a>00203 
+<a name="l00204"></a>00204   <span class="comment">// If there were any PHI nodes in this successor, rewrite one entry</span>
+<a name="l00205"></a>00205   <span class="comment">// from OrigBlock to come from NewLeaf.</span>
+<a name="l00206"></a>00206   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = Succ-><a class="code" href="classllvm_1_1BasicBlock.html#a0ed5f3ab3c2e4196ee0cffffa080c062">begin</a>(); isa<PHINode>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>); ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l00207"></a>00207     <a class="code" href="classllvm_1_1PHINode.html">PHINode</a>* PN = cast<PHINode>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>);
+<a name="l00208"></a>00208     <span class="comment">// Remove all but one incoming entries from the cluster</span>
+<a name="l00209"></a>00209     uint64_t Range = cast<ConstantInt>(Leaf.High)->getSExtValue() -
+<a name="l00210"></a>00210                      cast<ConstantInt>(Leaf.Low)->getSExtValue();    
+<a name="l00211"></a>00211     <span class="keywordflow">for</span> (uint64_t j = 0; j < Range; ++j) {
+<a name="l00212"></a>00212       PN-><a class="code" href="classllvm_1_1PHINode.html#a6f01dbe965b38186b1a78378689d4105">removeIncomingValue</a>(OrigBlock);
+<a name="l00213"></a>00213     }
+<a name="l00214"></a>00214     
+<a name="l00215"></a>00215     <span class="keywordtype">int</span> BlockIdx = PN-><a class="code" href="classllvm_1_1PHINode.html#a5c2b7d7f19aac93b27b845858a7eb73e">getBasicBlockIndex</a>(OrigBlock);
+<a name="l00216"></a>00216     assert(BlockIdx != -1 && <span class="stringliteral">"Switch didn't go to this successor??"</span>);
+<a name="l00217"></a>00217     PN-><a class="code" href="classllvm_1_1PHINode.html#a5ba57877c55dfdbe6e3bbfdacd9ef8c1">setIncomingBlock</a>((<span class="keywordtype">unsigned</span>)BlockIdx, NewLeaf);
+<a name="l00218"></a>00218   }
+<a name="l00219"></a>00219 
+<a name="l00220"></a>00220   <span class="keywordflow">return</span> NewLeaf;
+<a name="l00221"></a>00221 }
+<a name="l00222"></a>00222 
+<a name="l00223"></a>00223 <span class="comment">// Clusterify - Transform simple list of Cases into list of CaseRange's</span>
+<a name="l00224"></a>00224 <span class="keywordtype">unsigned</span> LowerSwitch::Clusterify(CaseVector& Cases, <a class="code" href="classllvm_1_1SwitchInst.html">SwitchInst</a> *SI) {
+<a name="l00225"></a>00225 
+<a name="l00226"></a>00226   <a class="code" href="classllvm_1_1IntegersSubsetMapping.html">IntegersSubsetToBB</a> TheClusterifier;
+<a name="l00227"></a>00227 
+<a name="l00228"></a>00228   <span class="comment">// Start with "simple" cases</span>
+<a name="l00229"></a>00229   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1SwitchInst_1_1CaseIt.html">SwitchInst::CaseIt</a> i = SI-><a class="code" href="classllvm_1_1SwitchInst.html#ae69c15ce940c41719cb96209e113a26e">case_begin</a>(), e = SI-><a class="code" href="classllvm_1_1SwitchInst.html#a219f2a3514d904d05dc8003a4ee5d291">case_end</a>();
+<a name="l00230"></a>00230        i != e; ++i) {
+<a name="l00231"></a>00231     <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *SuccBB = i.getCaseSuccessor();
+<a name="l00232"></a>00232     <a class="code" href="classllvm_1_1IntegersSubset.html">IntegersSubset</a> CaseRanges = i.getCaseValueEx();
+<a name="l00233"></a>00233     TheClusterifier.<a class="code" href="classllvm_1_1IntegersSubsetMapping.html#a4eca595acba5e4c98ba0f4670cd11274" title="Adds a constant value.">add</a>(CaseRanges, SuccBB);
+<a name="l00234"></a>00234   }
+<a name="l00235"></a>00235   
+<a name="l00236"></a>00236   TheClusterifier.<a class="code" href="classllvm_1_1IntegersSubsetMapping.html#a27ecc7eeefe50cc4770da2d2e1633a02">optimize</a>();
+<a name="l00237"></a>00237   
+<a name="l00238"></a>00238   <span class="keywordtype">size_t</span> numCmps = 0;
+<a name="l00239"></a>00239   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1IntegersSubsetMapping.html#a469b0c80e7884db3c371407d9c6b2cfb">IntegersSubsetToBB::RangeIterator</a> i = TheClusterifier.<a class="code" href="classllvm_1_1IntegersSubsetMapping.html#aa0f43c8faa0e78b648389043fefb8fd4">begin</a>(),
+<a name="l00240"></a>00240        e = TheClusterifier.<a class="code" href="classllvm_1_1IntegersSubsetMapping.html#a0b6813e4fb8c65adb7656c15bf79aefe">end</a>(); i != e; ++i, ++numCmps) {
+<a name="l00241"></a>00241     <a class="code" href="classllvm_1_1IntegersSubsetMapping.html#a24e241fd98dc7dc7ef7a430db6044463">IntegersSubsetToBB::Cluster</a> &<a class="code" href="namespacellvm_1_1CallingConv.html#a4f861731fc6dbfdccc05af5968d98974afd841a49aec1539bc88abc8ff9e170fb">C</a> = *i;
+<a name="l00242"></a>00242     
+<a name="l00243"></a>00243     <span class="comment">// FIXME: Currently work with ConstantInt based numbers.</span>
+<a name="l00244"></a>00244     <span class="comment">// Changing it to APInt based is a pretty heavy for this commit.</span>
+<a name="l00245"></a>00245     Cases.push_back(CaseRange(C.first.getLow().toConstantInt(),
+<a name="l00246"></a>00246                               C.first.getHigh().toConstantInt(), C.second));
+<a name="l00247"></a>00247     <span class="keywordflow">if</span> (C.first.isSingleNumber())
+<a name="l00248"></a>00248       <span class="comment">// A range counts double, since it requires two compares.</span>
+<a name="l00249"></a>00249       ++numCmps;
+<a name="l00250"></a>00250   }
+<a name="l00251"></a>00251 
+<a name="l00252"></a>00252   <span class="keywordflow">return</span> numCmps;  
+<a name="l00253"></a>00253 }
+<a name="l00254"></a>00254 
+<a name="l00255"></a>00255 <span class="comment">// processSwitchInst - Replace the specified switch instruction with a sequence</span>
+<a name="l00256"></a>00256 <span class="comment">// of chained if-then insts in a balanced binary search.</span>
+<a name="l00257"></a>00257 <span class="comment">//</span>
+<a name="l00258"></a>00258 <span class="keywordtype">void</span> LowerSwitch::processSwitchInst(<a class="code" href="classllvm_1_1SwitchInst.html">SwitchInst</a> *SI) {
+<a name="l00259"></a>00259   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *CurBlock = SI-><a class="code" href="classllvm_1_1Instruction.html#a9cd49851904f15060edb782ef4dd1b2d">getParent</a>();
+<a name="l00260"></a>00260   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a> *OrigBlock = CurBlock;
+<a name="l00261"></a>00261   <a class="code" href="classllvm_1_1Function.html">Function</a> *F = CurBlock-><a class="code" href="classllvm_1_1BasicBlock.html#aca229503e4f5c83a187a6a921c625fa8">getParent</a>();
+<a name="l00262"></a>00262   <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a> *Val = SI-><a class="code" href="classllvm_1_1SwitchInst.html#add5ee99852e9927d0777e74572c91708">getCondition</a>();  <span class="comment">// The value we are switching on...</span>
+<a name="l00263"></a>00263   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* Default = SI-><a class="code" href="classllvm_1_1SwitchInst.html#a3feb6090a53e81f06d82da0a97be6e19">getDefaultDest</a>();
+<a name="l00264"></a>00264 
+<a name="l00265"></a>00265   <span class="comment">// If there is only the default destination, don't bother with the code below.</span>
+<a name="l00266"></a>00266   <span class="keywordflow">if</span> (!SI-><a class="code" href="classllvm_1_1SwitchInst.html#a4901d4ad48420014059e9393f75442ae">getNumCases</a>()) {
+<a name="l00267"></a>00267     <a class="code" href="classllvm_1_1BranchInst.html#ae9cbc599309fd2da33ec1c61df01ce1f">BranchInst::Create</a>(SI-><a class="code" href="classllvm_1_1SwitchInst.html#a3feb6090a53e81f06d82da0a97be6e19">getDefaultDest</a>(), CurBlock);
+<a name="l00268"></a>00268     CurBlock-><a class="code" href="classllvm_1_1BasicBlock.html#a531d11ba36ed48d86057d507cc8d5567">getInstList</a>().erase(SI);
+<a name="l00269"></a>00269     <span class="keywordflow">return</span>;
+<a name="l00270"></a>00270   }
+<a name="l00271"></a>00271 
+<a name="l00272"></a>00272   <span class="comment">// Create a new, empty default block so that the new hierarchy of</span>
+<a name="l00273"></a>00273   <span class="comment">// if-then statements go to this and the PHI nodes are happy.</span>
+<a name="l00274"></a>00274   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* NewDefault = <a class="code" href="classllvm_1_1BasicBlock.html#ae1d53a21892854816885c7288f8b46f1">BasicBlock::Create</a>(SI-><a class="code" href="classllvm_1_1Value.html#af85a4828b6b5a8de7fc0a55cc0e5b52f" title="All values hold a context through their type.">getContext</a>(), <span class="stringliteral">"NewDefault"</span>);
+<a name="l00275"></a>00275   F-><a class="code" href="classllvm_1_1Function.html#a4d34a40b2667246539b80589adf2028e">getBasicBlockList</a>().insert(Default, NewDefault);
+<a name="l00276"></a>00276 
+<a name="l00277"></a>00277   <a class="code" href="classllvm_1_1BranchInst.html#ae9cbc599309fd2da33ec1c61df01ce1f">BranchInst::Create</a>(Default, NewDefault);
+<a name="l00278"></a>00278 
+<a name="l00279"></a>00279   <span class="comment">// If there is an entry in any PHI nodes for the default edge, make sure</span>
+<a name="l00280"></a>00280   <span class="comment">// to update them as well.</span>
+<a name="l00281"></a>00281   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1ilist__iterator.html">BasicBlock::iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = Default-><a class="code" href="classllvm_1_1BasicBlock.html#a0ed5f3ab3c2e4196ee0cffffa080c062">begin</a>(); isa<PHINode>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>); ++<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>) {
+<a name="l00282"></a>00282     <a class="code" href="classllvm_1_1PHINode.html">PHINode</a> *PN = cast<PHINode>(<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>);
+<a name="l00283"></a>00283     <span class="keywordtype">int</span> BlockIdx = PN-><a class="code" href="classllvm_1_1PHINode.html#a5c2b7d7f19aac93b27b845858a7eb73e">getBasicBlockIndex</a>(OrigBlock);
+<a name="l00284"></a>00284     assert(BlockIdx != -1 && <span class="stringliteral">"Switch didn't go to this successor??"</span>);
+<a name="l00285"></a>00285     PN-><a class="code" href="classllvm_1_1PHINode.html#a5ba57877c55dfdbe6e3bbfdacd9ef8c1">setIncomingBlock</a>((<span class="keywordtype">unsigned</span>)BlockIdx, NewDefault);
+<a name="l00286"></a>00286   }
+<a name="l00287"></a>00287 
+<a name="l00288"></a>00288   <span class="comment">// Prepare cases vector.</span>
+<a name="l00289"></a>00289   CaseVector Cases;
+<a name="l00290"></a>00290   <span class="keywordtype">unsigned</span> numCmps = Clusterify(Cases, SI);
+<a name="l00291"></a>00291 
+<a name="l00292"></a>00292   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"Clusterify finished. Total clusters: "</span> << Cases.size()
+<a name="l00293"></a>00293                << <span class="stringliteral">". Total compares: "</span> << numCmps << <span class="stringliteral">"\n"</span>);
+<a name="l00294"></a>00294   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#a7c46c742c31be54870e2038048e6b391" title="dbgs - Return a circular-buffered debug stream.">dbgs</a>() << <span class="stringliteral">"Cases: "</span> << Cases << <span class="stringliteral">"\n"</span>);
+<a name="l00295"></a>00295   (void)numCmps;
+<a name="l00296"></a>00296   
+<a name="l00297"></a>00297   <a class="code" href="classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation.">BasicBlock</a>* SwitchBlock = switchConvert(Cases.begin(), Cases.end(), Val,
+<a name="l00298"></a>00298                                           OrigBlock, NewDefault);
+<a name="l00299"></a>00299 
+<a name="l00300"></a>00300   <span class="comment">// Branch to our shiny new if-then stuff...</span>
+<a name="l00301"></a>00301   <a class="code" href="classllvm_1_1BranchInst.html#ae9cbc599309fd2da33ec1c61df01ce1f">BranchInst::Create</a>(SwitchBlock, OrigBlock);
+<a name="l00302"></a>00302 
+<a name="l00303"></a>00303   <span class="comment">// We are now done with the switch instruction, delete it.</span>
+<a name="l00304"></a>00304   CurBlock-><a class="code" href="classllvm_1_1BasicBlock.html#a531d11ba36ed48d86057d507cc8d5567">getInstList</a>().erase(SI);
+<a name="l00305"></a>00305 }
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:35: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/MBlazeAsmLexer_8cpp__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MBlazeAsmLexer_8cpp__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/MBlazeAsmLexer_8cpp__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/MBlazeAsmParser_8cpp__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MBlazeAsmParser_8cpp__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/MBlazeAsmParser_8cpp__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/MBlazeAsmParser_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MBlazeAsmParser_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MBlazeAsmParser_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MBlazeAsmParser_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,618 @@
+<!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: MBlazeAsmParser.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_f975b82d147a340f2ab6ec1753ee61b7.html">MBlaze</a>      </li>
+      <li class="navelem"><a class="el" href="dir_06443a0bda898e490943f0baf8bc0a78.html">AsmParser</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">MBlazeAsmParser.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="MBlazeAsmParser_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- MBlazeAsmParser.cpp - Parse MBlaze asm to MCInst instructions -----===//</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 
+<a name="l00010"></a>00010 <span class="preprocessor">#include "<a class="code" href="MBlazeBaseInfo_8h.html">MCTargetDesc/MBlazeBaseInfo.h</a>"</span>
+<a name="l00011"></a>00011 <span class="preprocessor">#include "<a class="code" href="MCAsmLexer_8h.html">llvm/MC/MCParser/MCAsmLexer.h</a>"</span>
+<a name="l00012"></a>00012 <span class="preprocessor">#include "<a class="code" href="MCAsmParser_8h.html">llvm/MC/MCParser/MCAsmParser.h</a>"</span>
+<a name="l00013"></a>00013 <span class="preprocessor">#include "<a class="code" href="MCParsedAsmOperand_8h.html">llvm/MC/MCParser/MCParsedAsmOperand.h</a>"</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include "<a class="code" href="MCStreamer_8h.html">llvm/MC/MCStreamer.h</a>"</span>
+<a name="l00015"></a>00015 <span class="preprocessor">#include "<a class="code" href="MCExpr_8h.html">llvm/MC/MCExpr.h</a>"</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include "<a class="code" href="MCInst_8h.html">llvm/MC/MCInst.h</a>"</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="MCTargetAsmParser_8h.html">llvm/MC/MCTargetAsmParser.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="SourceMgr_8h.html">llvm/Support/SourceMgr.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="TargetRegistry_8h.html">llvm/Support/TargetRegistry.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="raw__ostream_8h.html">llvm/Support/raw_ostream.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="SmallVector_8h.html">llvm/ADT/SmallVector.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="Twine_8h.html">llvm/ADT/Twine.h</a>"</span>
+<a name="l00023"></a>00023 <span class="keyword">using namespace </span>llvm;
+<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>MBlazeOperand;
+<a name="l00027"></a>00027 
+<a name="l00028"></a>00028 <span class="keyword">class </span>MBlazeAsmParser : <span class="keyword">public</span> <a class="code" href="classllvm_1_1MCTargetAsmParser.html" title="MCTargetAsmParser - Generic interface to target specific assembly parsers.">MCTargetAsmParser</a> {
+<a name="l00029"></a>00029   <a class="code" href="classllvm_1_1MCAsmParser.html">MCAsmParser</a> &Parser;
+<a name="l00030"></a>00030 
+<a name="l00031"></a>00031   <a class="code" href="classllvm_1_1MCAsmParser.html">MCAsmParser</a> &getParser()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Parser; }
+<a name="l00032"></a>00032   <a class="code" href="classllvm_1_1MCAsmLexer.html">MCAsmLexer</a> &getLexer()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Parser.getLexer(); }
+<a name="l00033"></a>00033 
+<a name="l00034"></a>00034   <span class="keywordtype">void</span> Warning(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> L, <span class="keyword">const</span> <a class="code" href="classllvm_1_1Twine.html">Twine</a> &Msg) { Parser.Warning(L, Msg); }
+<a name="l00035"></a>00035   <span class="keywordtype">bool</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> L, <span class="keyword">const</span> <a class="code" href="classllvm_1_1Twine.html">Twine</a> &Msg) { <span class="keywordflow">return</span> Parser.Error(L, Msg); }
+<a name="l00036"></a>00036 
+<a name="l00037"></a>00037   MBlazeOperand *ParseMemory(<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<MCParsedAsmOperand*></a> &Operands);
+<a name="l00038"></a>00038   MBlazeOperand *ParseRegister(<span class="keywordtype">unsigned</span> &RegNo);
+<a name="l00039"></a>00039   MBlazeOperand *ParseImmediate();
+<a name="l00040"></a>00040   MBlazeOperand *ParseFsl();
+<a name="l00041"></a>00041   MBlazeOperand* ParseOperand(<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<MCParsedAsmOperand*></a> &Operands);
+<a name="l00042"></a>00042 
+<a name="l00043"></a>00043   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ParseRegister(<span class="keywordtype">unsigned</span> &RegNo, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &StartLoc, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &EndLoc);
+<a name="l00044"></a>00044 
+<a name="l00045"></a>00045   <span class="keywordtype">bool</span> ParseDirectiveWord(<span class="keywordtype">unsigned</span> Size, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> L);
+<a name="l00046"></a>00046 
+<a name="l00047"></a>00047   <span class="keywordtype">bool</span> MatchAndEmitInstruction(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> IDLoc, <span class="keywordtype">unsigned</span> &Opcode,
+<a name="l00048"></a>00048                                <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<MCParsedAsmOperand*></a> &Operands,
+<a name="l00049"></a>00049                                <a class="code" href="classllvm_1_1MCStreamer.html">MCStreamer</a> &Out, <span class="keywordtype">unsigned</span> &ErrorInfo,
+<a name="l00050"></a>00050                                <span class="keywordtype">bool</span> MatchingInlineAsm);
+<a name="l00051"></a>00051 <span class="comment"></span>
+<a name="l00052"></a>00052 <span class="comment">  /// @name Auto-generated Match Functions</span>
+<a name="l00053"></a>00053 <span class="comment">  /// {</span>
+<a name="l00054"></a>00054 <span class="comment"></span>
+<a name="l00055"></a><a class="code" href="MBlazeAsmParser_8cpp.html#a5d893b5c4dfecbb36ed7e313c1d96278">00055</a> <span class="preprocessor">#define GET_ASSEMBLER_HEADER</span>
+<a name="l00056"></a>00056 <span class="preprocessor"></span><span class="preprocessor">#include "MBlazeGenAsmMatcher.inc"</span>
+<a name="l00057"></a>00057 <span class="comment"></span>
+<a name="l00058"></a>00058 <span class="comment">  /// }</span>
+<a name="l00059"></a>00059 <span class="comment"></span>
+<a name="l00060"></a>00060 <span class="keyword">public</span>:
+<a name="l00061"></a>00061   MBlazeAsmParser(<a class="code" href="classllvm_1_1MCSubtargetInfo.html">MCSubtargetInfo</a> &_STI, <a class="code" href="classllvm_1_1MCAsmParser.html">MCAsmParser</a> &_Parser)
+<a name="l00062"></a>00062     : <a class="code" href="classllvm_1_1MCTargetAsmParser.html" title="MCTargetAsmParser - Generic interface to target specific assembly parsers.">MCTargetAsmParser</a>(), Parser(_Parser) {}
+<a name="l00063"></a>00063 
+<a name="l00064"></a>00064   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ParseInstruction(<a class="code" href="structllvm_1_1ParseInstructionInfo.html">ParseInstructionInfo</a> &Info, <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>,
+<a name="l00065"></a>00065                                 <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> NameLoc,
+<a name="l00066"></a>00066                                 <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<MCParsedAsmOperand*></a> &Operands);
+<a name="l00067"></a>00067 
+<a name="l00068"></a>00068   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ParseDirective(<a class="code" href="classllvm_1_1AsmToken.html" title="AsmToken - Target independent representation for an assembler token.">AsmToken</a> DirectiveID);
+<a name="l00069"></a>00069 };
+<a name="l00070"></a>00070 <span class="comment"></span>
+<a name="l00071"></a>00071 <span class="comment">/// MBlazeOperand - Instances of this class represent a parsed MBlaze machine</span>
+<a name="l00072"></a>00072 <span class="comment">/// instruction.</span>
+<a name="l00073"></a>00073 <span class="comment"></span><span class="keyword">struct </span>MBlazeOperand : <span class="keyword">public</span> <a class="code" href="classllvm_1_1MCParsedAsmOperand.html">MCParsedAsmOperand</a> {
+<a name="l00074"></a>00074   <span class="keyword">enum</span> KindTy {
+<a name="l00075"></a>00075     Token,
+<a name="l00076"></a>00076     Immediate,
+<a name="l00077"></a>00077     <a class="code" href="Mem2Reg_8cpp.html#a6fde3eb6ca09ddf2fd76432176d817bb">Register</a>,
+<a name="l00078"></a>00078     <a class="code" href="classllvm_1_1sys_1_1Memory.html" title="An abstraction for memory operations.">Memory</a>,
+<a name="l00079"></a>00079     Fsl
+<a name="l00080"></a>00080   } <a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a>;
+<a name="l00081"></a>00081 
+<a name="l00082"></a>00082   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> StartLoc, EndLoc;
+<a name="l00083"></a>00083 
+<a name="l00084"></a>00084   <span class="keyword">union </span>{
+<a name="l00085"></a>00085     <span class="keyword">struct </span>{
+<a name="l00086"></a>00086       <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="namespacellvm_1_1object_1_1macho.html#a56678f646a4a478d777eb8821f710db0a557a58f6e018464dcf0635728ef14dd1">Data</a>;
+<a name="l00087"></a>00087       <span class="keywordtype">unsigned</span> Length;
+<a name="l00088"></a>00088     } Tok;
+<a name="l00089"></a>00089 
+<a name="l00090"></a>00090     <span class="keyword">struct </span>{
+<a name="l00091"></a>00091       <span class="keywordtype">unsigned</span> RegNum;
+<a name="l00092"></a>00092     } <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>;
+<a name="l00093"></a>00093 
+<a name="l00094"></a>00094     <span class="keyword">struct </span>{
+<a name="l00095"></a>00095       <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Val;
+<a name="l00096"></a>00096     } Imm;
+<a name="l00097"></a>00097 
+<a name="l00098"></a>00098     <span class="keyword">struct </span>{
+<a name="l00099"></a>00099       <span class="keywordtype">unsigned</span> Base;
+<a name="l00100"></a>00100       <span class="keywordtype">unsigned</span> OffReg;
+<a name="l00101"></a>00101       <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Off;
+<a name="l00102"></a>00102     } Mem;
+<a name="l00103"></a>00103 
+<a name="l00104"></a>00104     <span class="keyword">struct </span>{
+<a name="l00105"></a>00105       <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Val;
+<a name="l00106"></a>00106     } FslImm;
+<a name="l00107"></a>00107   };
+<a name="l00108"></a>00108 
+<a name="l00109"></a>00109   MBlazeOperand(KindTy K) : <a class="code" href="classllvm_1_1MCParsedAsmOperand.html">MCParsedAsmOperand</a>(), <a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a>(K) {}
+<a name="l00110"></a>00110 <span class="keyword">public</span>:
+<a name="l00111"></a>00111   MBlazeOperand(<span class="keyword">const</span> MBlazeOperand &o) : <a class="code" href="classllvm_1_1MCParsedAsmOperand.html">MCParsedAsmOperand</a>() {
+<a name="l00112"></a>00112     <a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a> = o.Kind;
+<a name="l00113"></a>00113     StartLoc = o.StartLoc;
+<a name="l00114"></a>00114     EndLoc = o.EndLoc;
+<a name="l00115"></a>00115     <span class="keywordflow">switch</span> (<a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a>) {
+<a name="l00116"></a>00116     <span class="keywordflow">case</span> <a class="code" href="Mem2Reg_8cpp.html#a6fde3eb6ca09ddf2fd76432176d817bb">Register</a>:
+<a name="l00117"></a>00117       <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a> = o.Reg;
+<a name="l00118"></a>00118       <span class="keywordflow">break</span>;
+<a name="l00119"></a>00119     <span class="keywordflow">case</span> Immediate:
+<a name="l00120"></a>00120       Imm = o.Imm;
+<a name="l00121"></a>00121       <span class="keywordflow">break</span>;
+<a name="l00122"></a>00122     <span class="keywordflow">case</span> Token:
+<a name="l00123"></a>00123       Tok = o.Tok;
+<a name="l00124"></a>00124       <span class="keywordflow">break</span>;
+<a name="l00125"></a>00125     <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1sys_1_1Memory.html" title="An abstraction for memory operations.">Memory</a>:
+<a name="l00126"></a>00126       Mem = o.Mem;
+<a name="l00127"></a>00127       <span class="keywordflow">break</span>;
+<a name="l00128"></a>00128     <span class="keywordflow">case</span> Fsl:
+<a name="l00129"></a>00129       FslImm = o.FslImm;
+<a name="l00130"></a>00130       <span class="keywordflow">break</span>;
+<a name="l00131"></a>00131     }
+<a name="l00132"></a>00132   }
+<a name="l00133"></a>00133 <span class="comment"></span>
+<a name="l00134"></a>00134 <span class="comment">  /// getStartLoc - Get the location of the first token of this operand.</span>
+<a name="l00135"></a>00135 <span class="comment"></span>  <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> getStartLoc()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> StartLoc; }
+<a name="l00136"></a>00136 <span class="comment"></span>
+<a name="l00137"></a>00137 <span class="comment">  /// getEndLoc - Get the location of the last token of this operand.</span>
+<a name="l00138"></a>00138 <span class="comment"></span>  <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> getEndLoc()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> EndLoc; }
+<a name="l00139"></a>00139 
+<a name="l00140"></a>00140   <span class="keywordtype">unsigned</span> <a class="code" href="MipsDisassembler_8cpp.html#a30bccd0ebacd9892c243f7bd520e4aa0">getReg</a>()<span class="keyword"> const </span>{
+<a name="l00141"></a>00141     assert(<a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a> == <a class="code" href="Mem2Reg_8cpp.html#a6fde3eb6ca09ddf2fd76432176d817bb">Register</a> && <span class="stringliteral">"Invalid access!"</span>);
+<a name="l00142"></a>00142     <span class="keywordflow">return</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a>.RegNum;
+<a name="l00143"></a>00143   }
+<a name="l00144"></a>00144 
+<a name="l00145"></a>00145   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *getImm()<span class="keyword"> const </span>{
+<a name="l00146"></a>00146     assert(<a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a> == Immediate && <span class="stringliteral">"Invalid access!"</span>);
+<a name="l00147"></a>00147     <span class="keywordflow">return</span> Imm.Val;
+<a name="l00148"></a>00148   }
+<a name="l00149"></a>00149 
+<a name="l00150"></a>00150   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *getFslImm()<span class="keyword"> const </span>{
+<a name="l00151"></a>00151     assert(<a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a> == Fsl && <span class="stringliteral">"Invalid access!"</span>);
+<a name="l00152"></a>00152     <span class="keywordflow">return</span> FslImm.Val;
+<a name="l00153"></a>00153   }
+<a name="l00154"></a>00154 
+<a name="l00155"></a>00155   <span class="keywordtype">unsigned</span> getMemBase()<span class="keyword"> const </span>{
+<a name="l00156"></a>00156     assert(<a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a> == <a class="code" href="classllvm_1_1sys_1_1Memory.html" title="An abstraction for memory operations.">Memory</a> && <span class="stringliteral">"Invalid access!"</span>);
+<a name="l00157"></a>00157     <span class="keywordflow">return</span> Mem.Base;
+<a name="l00158"></a>00158   }
+<a name="l00159"></a>00159 
+<a name="l00160"></a>00160   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a>* getMemOff()<span class="keyword"> const </span>{
+<a name="l00161"></a>00161     assert(<a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a> == <a class="code" href="classllvm_1_1sys_1_1Memory.html" title="An abstraction for memory operations.">Memory</a> && <span class="stringliteral">"Invalid access!"</span>);
+<a name="l00162"></a>00162     <span class="keywordflow">return</span> Mem.Off;
+<a name="l00163"></a>00163   }
+<a name="l00164"></a>00164 
+<a name="l00165"></a>00165   <span class="keywordtype">unsigned</span> getMemOffReg()<span class="keyword"> const </span>{
+<a name="l00166"></a>00166     assert(<a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a> == <a class="code" href="classllvm_1_1sys_1_1Memory.html" title="An abstraction for memory operations.">Memory</a> && <span class="stringliteral">"Invalid access!"</span>);
+<a name="l00167"></a>00167     <span class="keywordflow">return</span> Mem.OffReg;
+<a name="l00168"></a>00168   }
+<a name="l00169"></a>00169 
+<a name="l00170"></a>00170   <span class="keywordtype">bool</span> isToken()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a> == Token; }
+<a name="l00171"></a>00171   <span class="keywordtype">bool</span> isImm()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a> == Immediate; }
+<a name="l00172"></a>00172   <span class="keywordtype">bool</span> <a class="code" href="namespacellvm.html#a4d4191a557764471c0f130506c25e5ef">isMem</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a> == <a class="code" href="classllvm_1_1sys_1_1Memory.html" title="An abstraction for memory operations.">Memory</a>; }
+<a name="l00173"></a>00173   <span class="keywordtype">bool</span> isFsl()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a> == Fsl; }
+<a name="l00174"></a>00174   <span class="keywordtype">bool</span> isReg()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a> == <a class="code" href="Mem2Reg_8cpp.html#a6fde3eb6ca09ddf2fd76432176d817bb">Register</a>; }
+<a name="l00175"></a>00175 
+<a name="l00176"></a>00176   <span class="keywordtype">void</span> addExpr(<a class="code" href="classllvm_1_1MCInst.html">MCInst</a> &Inst, <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Expr)<span class="keyword"> const </span>{
+<a name="l00177"></a>00177     <span class="comment">// Add as immediates when possible.  Null MCExpr = 0.</span>
+<a name="l00178"></a>00178     <span class="keywordflow">if</span> (Expr == 0)
+<a name="l00179"></a>00179       Inst.<a class="code" href="classllvm_1_1MCInst.html#af5530910b07aa0c82adbc555dfc04fce">addOperand</a>(<a class="code" href="classllvm_1_1MCOperand.html#ad26f3c85c2f3b28caa4e9a7522e0d7bd">MCOperand::CreateImm</a>(0));
+<a name="l00180"></a>00180     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCConstantExpr.html">MCConstantExpr</a> *CE = dyn_cast<MCConstantExpr>(Expr))
+<a name="l00181"></a>00181       Inst.<a class="code" href="classllvm_1_1MCInst.html#af5530910b07aa0c82adbc555dfc04fce">addOperand</a>(<a class="code" href="classllvm_1_1MCOperand.html#ad26f3c85c2f3b28caa4e9a7522e0d7bd">MCOperand::CreateImm</a>(CE->getValue()));
+<a name="l00182"></a>00182     <span class="keywordflow">else</span>
+<a name="l00183"></a>00183       Inst.<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="l00184"></a>00184   }
+<a name="l00185"></a>00185 
+<a name="l00186"></a>00186   <span class="keywordtype">void</span> addRegOperands(<a class="code" href="classllvm_1_1MCInst.html">MCInst</a> &Inst, <span class="keywordtype">unsigned</span> N)<span class="keyword"> const </span>{
+<a name="l00187"></a>00187     assert(N == 1 && <span class="stringliteral">"Invalid number of operands!"</span>);
+<a name="l00188"></a>00188     Inst.<a class="code" href="classllvm_1_1MCInst.html#af5530910b07aa0c82adbc555dfc04fce">addOperand</a>(<a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(<a class="code" href="MipsDisassembler_8cpp.html#a30bccd0ebacd9892c243f7bd520e4aa0">getReg</a>()));
+<a name="l00189"></a>00189   }
+<a name="l00190"></a>00190 
+<a name="l00191"></a>00191   <span class="keywordtype">void</span> addImmOperands(<a class="code" href="classllvm_1_1MCInst.html">MCInst</a> &Inst, <span class="keywordtype">unsigned</span> N)<span class="keyword"> const </span>{
+<a name="l00192"></a>00192     assert(N == 1 && <span class="stringliteral">"Invalid number of operands!"</span>);
+<a name="l00193"></a>00193     addExpr(Inst, getImm());
+<a name="l00194"></a>00194   }
+<a name="l00195"></a>00195 
+<a name="l00196"></a>00196   <span class="keywordtype">void</span> addFslOperands(<a class="code" href="classllvm_1_1MCInst.html">MCInst</a> &Inst, <span class="keywordtype">unsigned</span> N)<span class="keyword"> const </span>{
+<a name="l00197"></a>00197     assert(N == 1 && <span class="stringliteral">"Invalid number of operands!"</span>);
+<a name="l00198"></a>00198     addExpr(Inst, getFslImm());
+<a name="l00199"></a>00199   }
+<a name="l00200"></a>00200 
+<a name="l00201"></a>00201   <span class="keywordtype">void</span> addMemOperands(<a class="code" href="classllvm_1_1MCInst.html">MCInst</a> &Inst, <span class="keywordtype">unsigned</span> N)<span class="keyword"> const </span>{
+<a name="l00202"></a>00202     assert(N == 2 && <span class="stringliteral">"Invalid number of operands!"</span>);
+<a name="l00203"></a>00203 
+<a name="l00204"></a>00204     Inst.<a class="code" href="classllvm_1_1MCInst.html#af5530910b07aa0c82adbc555dfc04fce">addOperand</a>(<a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(getMemBase()));
+<a name="l00205"></a>00205 
+<a name="l00206"></a>00206     <span class="keywordtype">unsigned</span> RegOff = getMemOffReg();
+<a name="l00207"></a>00207     <span class="keywordflow">if</span> (RegOff)
+<a name="l00208"></a>00208       Inst.<a class="code" href="classllvm_1_1MCInst.html#af5530910b07aa0c82adbc555dfc04fce">addOperand</a>(<a class="code" href="classllvm_1_1MCOperand.html#a53a76cafb36975cd8069ffa73beb86aa">MCOperand::CreateReg</a>(RegOff));
+<a name="l00209"></a>00209     <span class="keywordflow">else</span>
+<a name="l00210"></a>00210       addExpr(Inst, getMemOff());
+<a name="l00211"></a>00211   }
+<a name="l00212"></a>00212 
+<a name="l00213"></a>00213   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm.html#a20237283e8b9e354abec8dc5ab16bd16">getToken</a>()<span class="keyword"> const </span>{
+<a name="l00214"></a>00214     assert(<a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a> == Token && <span class="stringliteral">"Invalid access!"</span>);
+<a name="l00215"></a>00215     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1StringRef.html">StringRef</a>(Tok.Data, Tok.Length);
+<a name="l00216"></a>00216   }
+<a name="l00217"></a>00217 
+<a name="l00218"></a>00218   <span class="keyword">virtual</span> <span class="keywordtype">void</span> print(<a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &OS) <span class="keyword">const</span>;
+<a name="l00219"></a>00219 
+<a name="l00220"></a>00220   <span class="keyword">static</span> MBlazeOperand *CreateToken(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Str, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> S) {
+<a name="l00221"></a>00221     MBlazeOperand *Op = <span class="keyword">new</span> MBlazeOperand(Token);
+<a name="l00222"></a>00222     Op->Tok.Data = Str.<a class="code" href="classllvm_1_1StringRef.html#a7d9b88d042ae1da8afd5509875c90a04">data</a>();
+<a name="l00223"></a>00223     Op->Tok.Length = Str.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>();
+<a name="l00224"></a>00224     Op->StartLoc = S;
+<a name="l00225"></a>00225     Op->EndLoc = S;
+<a name="l00226"></a>00226     <span class="keywordflow">return</span> Op;
+<a name="l00227"></a>00227   }
+<a name="l00228"></a>00228 
+<a name="l00229"></a>00229   <span class="keyword">static</span> MBlazeOperand *CreateReg(<span class="keywordtype">unsigned</span> RegNum, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> S, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> E) {
+<a name="l00230"></a>00230     MBlazeOperand *Op = <span class="keyword">new</span> MBlazeOperand(<a class="code" href="Mem2Reg_8cpp.html#a6fde3eb6ca09ddf2fd76432176d817bb">Register</a>);
+<a name="l00231"></a>00231     Op->Reg.RegNum = RegNum;
+<a name="l00232"></a>00232     Op->StartLoc = S;
+<a name="l00233"></a>00233     Op->EndLoc = E;
+<a name="l00234"></a>00234     <span class="keywordflow">return</span> Op;
+<a name="l00235"></a>00235   }
+<a name="l00236"></a>00236 
+<a name="l00237"></a>00237   <span class="keyword">static</span> MBlazeOperand *CreateImm(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Val, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> S, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> E) {
+<a name="l00238"></a>00238     MBlazeOperand *Op = <span class="keyword">new</span> MBlazeOperand(Immediate);
+<a name="l00239"></a>00239     Op->Imm.Val = Val;
+<a name="l00240"></a>00240     Op->StartLoc = S;
+<a name="l00241"></a>00241     Op->EndLoc = E;
+<a name="l00242"></a>00242     <span class="keywordflow">return</span> Op;
+<a name="l00243"></a>00243   }
+<a name="l00244"></a>00244 
+<a name="l00245"></a>00245   <span class="keyword">static</span> MBlazeOperand *CreateFslImm(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Val, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> S, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> E) {
+<a name="l00246"></a>00246     MBlazeOperand *Op = <span class="keyword">new</span> MBlazeOperand(Fsl);
+<a name="l00247"></a>00247     Op->Imm.Val = Val;
+<a name="l00248"></a>00248     Op->StartLoc = S;
+<a name="l00249"></a>00249     Op->EndLoc = E;
+<a name="l00250"></a>00250     <span class="keywordflow">return</span> Op;
+<a name="l00251"></a>00251   }
+<a name="l00252"></a>00252 
+<a name="l00253"></a>00253   <span class="keyword">static</span> MBlazeOperand *CreateMem(<span class="keywordtype">unsigned</span> Base, <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *Off, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> S,
+<a name="l00254"></a>00254                                   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> E) {
+<a name="l00255"></a>00255     MBlazeOperand *Op = <span class="keyword">new</span> MBlazeOperand(<a class="code" href="classllvm_1_1sys_1_1Memory.html" title="An abstraction for memory operations.">Memory</a>);
+<a name="l00256"></a>00256     Op->Mem.Base = Base;
+<a name="l00257"></a>00257     Op->Mem.Off = Off;
+<a name="l00258"></a>00258     Op->Mem.OffReg = 0;
+<a name="l00259"></a>00259     Op->StartLoc = S;
+<a name="l00260"></a>00260     Op->EndLoc = E;
+<a name="l00261"></a>00261     <span class="keywordflow">return</span> Op;
+<a name="l00262"></a>00262   }
+<a name="l00263"></a>00263 
+<a name="l00264"></a>00264   <span class="keyword">static</span> MBlazeOperand *CreateMem(<span class="keywordtype">unsigned</span> Base, <span class="keywordtype">unsigned</span> Off, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> S,
+<a name="l00265"></a>00265                                   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> E) {
+<a name="l00266"></a>00266     MBlazeOperand *Op = <span class="keyword">new</span> MBlazeOperand(<a class="code" href="classllvm_1_1sys_1_1Memory.html" title="An abstraction for memory operations.">Memory</a>);
+<a name="l00267"></a>00267     Op->Mem.Base = Base;
+<a name="l00268"></a>00268     Op->Mem.OffReg = Off;
+<a name="l00269"></a>00269     Op->Mem.Off = 0;
+<a name="l00270"></a>00270     Op->StartLoc = S;
+<a name="l00271"></a>00271     Op->EndLoc = E;
+<a name="l00272"></a>00272     <span class="keywordflow">return</span> Op;
+<a name="l00273"></a>00273   }
+<a name="l00274"></a>00274 };
+<a name="l00275"></a>00275 
+<a name="l00276"></a>00276 } <span class="comment">// end anonymous namespace.</span>
+<a name="l00277"></a>00277 
+<a name="l00278"></a>00278 <span class="keywordtype">void</span> MBlazeOperand::print(<a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &OS)<span class="keyword"> const </span>{
+<a name="l00279"></a>00279   <span class="keywordflow">switch</span> (<a class="code" href="namespacellvm_1_1EngineKind.html#a9df47239a42cd9621ac26d9ecbd57441">Kind</a>) {
+<a name="l00280"></a>00280   <span class="keywordflow">case</span> Immediate:
+<a name="l00281"></a>00281     getImm()->print(OS);
+<a name="l00282"></a>00282     <span class="keywordflow">break</span>;
+<a name="l00283"></a>00283   <span class="keywordflow">case</span> <a class="code" href="Mem2Reg_8cpp.html#a6fde3eb6ca09ddf2fd76432176d817bb">Register</a>:
+<a name="l00284"></a>00284     OS << <span class="stringliteral">"<register R"</span>;
+<a name="l00285"></a>00285     OS << <a class="code" href="namespacellvm.html#ab4fc31dd5f625f7f15770507c9b36aa1">getMBlazeRegisterNumbering</a>(<a class="code" href="MipsDisassembler_8cpp.html#a30bccd0ebacd9892c243f7bd520e4aa0">getReg</a>()) << <span class="stringliteral">">"</span>;
+<a name="l00286"></a>00286     <span class="keywordflow">break</span>;
+<a name="l00287"></a>00287   <span class="keywordflow">case</span> Token:
+<a name="l00288"></a>00288     OS << <span class="stringliteral">"'"</span> << <a class="code" href="namespacellvm.html#a20237283e8b9e354abec8dc5ab16bd16">getToken</a>() << <span class="stringliteral">"'"</span>;
+<a name="l00289"></a>00289     <span class="keywordflow">break</span>;
+<a name="l00290"></a>00290   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1sys_1_1Memory.html" title="An abstraction for memory operations.">Memory</a>: {
+<a name="l00291"></a>00291     OS << <span class="stringliteral">"<memory R"</span>;
+<a name="l00292"></a>00292     OS << <a class="code" href="namespacellvm.html#ab4fc31dd5f625f7f15770507c9b36aa1">getMBlazeRegisterNumbering</a>(getMemBase());
+<a name="l00293"></a>00293     OS << <span class="stringliteral">", "</span>;
+<a name="l00294"></a>00294 
+<a name="l00295"></a>00295     <span class="keywordtype">unsigned</span> RegOff = getMemOffReg();
+<a name="l00296"></a>00296     <span class="keywordflow">if</span> (RegOff)
+<a name="l00297"></a>00297       OS << <span class="stringliteral">"R"</span> << <a class="code" href="namespacellvm.html#ab4fc31dd5f625f7f15770507c9b36aa1">getMBlazeRegisterNumbering</a>(RegOff);
+<a name="l00298"></a>00298     <span class="keywordflow">else</span>
+<a name="l00299"></a>00299       OS << getMemOff();
+<a name="l00300"></a>00300     OS << <span class="stringliteral">">"</span>;
+<a name="l00301"></a>00301     }
+<a name="l00302"></a>00302     <span class="keywordflow">break</span>;
+<a name="l00303"></a>00303   <span class="keywordflow">case</span> Fsl:
+<a name="l00304"></a>00304     getFslImm()->print(OS);
+<a name="l00305"></a>00305     <span class="keywordflow">break</span>;
+<a name="l00306"></a>00306   }
+<a name="l00307"></a>00307 }
+<a name="l00308"></a>00308 <span class="comment"></span>
+<a name="l00309"></a>00309 <span class="comment">/// @name Auto-generated Match Functions</span>
+<a name="l00310"></a>00310 <span class="comment">/// {</span>
+<a name="l00311"></a>00311 <span class="comment"></span>
+<a name="l00312"></a>00312 <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a class="code" href="MBlazeAsmParser_8cpp.html#ab163bd42e90805aad69407416086a7d6">MatchRegisterName</a>(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>);
+<a name="l00313"></a>00313 <span class="comment"></span>
+<a name="l00314"></a>00314 <span class="comment">/// }</span>
+<a name="l00315"></a>00315 <span class="comment"></span><span class="comment">//</span>
+<a name="l00316"></a>00316 <span class="keywordtype">bool</span> MBlazeAsmParser::
+<a name="l00317"></a>00317 MatchAndEmitInstruction(<a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> IDLoc, <span class="keywordtype">unsigned</span> &Opcode,
+<a name="l00318"></a>00318                         <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<MCParsedAsmOperand*></a> &Operands,
+<a name="l00319"></a>00319                         <a class="code" href="classllvm_1_1MCStreamer.html">MCStreamer</a> &Out, <span class="keywordtype">unsigned</span> &ErrorInfo,
+<a name="l00320"></a>00320                         <span class="keywordtype">bool</span> MatchingInlineAsm) {
+<a name="l00321"></a>00321   <a class="code" href="classllvm_1_1MCInst.html">MCInst</a> Inst;
+<a name="l00322"></a>00322   <span class="keywordflow">switch</span> (MatchInstructionImpl(Operands, Inst, ErrorInfo,
+<a name="l00323"></a>00323                                MatchingInlineAsm)) {
+<a name="l00324"></a>00324   <span class="keywordflow">default</span>: <span class="keywordflow">break</span>;
+<a name="l00325"></a>00325   <span class="keywordflow">case</span> Match_Success:
+<a name="l00326"></a>00326     Out.<a class="code" href="classllvm_1_1MCStreamer.html#a39c81efad95bc4fe5bd5b343de2b3287">EmitInstruction</a>(Inst);
+<a name="l00327"></a>00327     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00328"></a>00328   <span class="keywordflow">case</span> Match_MissingFeature:
+<a name="l00329"></a>00329     <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(IDLoc, <span class="stringliteral">"instruction use requires an option to be enabled"</span>);
+<a name="l00330"></a>00330   <span class="keywordflow">case</span> Match_MnemonicFail:
+<a name="l00331"></a>00331       <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(IDLoc, <span class="stringliteral">"unrecognized instruction mnemonic"</span>);
+<a name="l00332"></a>00332   <span class="keywordflow">case</span> Match_InvalidOperand: {
+<a name="l00333"></a>00333     <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> ErrorLoc = IDLoc;
+<a name="l00334"></a>00334     <span class="keywordflow">if</span> (ErrorInfo != ~0U) {
+<a name="l00335"></a>00335       <span class="keywordflow">if</span> (ErrorInfo >= Operands.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>())
+<a name="l00336"></a>00336         <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(IDLoc, <span class="stringliteral">"too few operands for instruction"</span>);
+<a name="l00337"></a>00337 
+<a name="l00338"></a>00338       ErrorLoc = ((MBlazeOperand*)Operands[ErrorInfo])->getStartLoc();
+<a name="l00339"></a>00339       <span class="keywordflow">if</span> (ErrorLoc == <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a>()) ErrorLoc = IDLoc;
+<a name="l00340"></a>00340     }
+<a name="l00341"></a>00341 
+<a name="l00342"></a>00342     <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(ErrorLoc, <span class="stringliteral">"invalid operand for instruction"</span>);
+<a name="l00343"></a>00343   }
+<a name="l00344"></a>00344   }
+<a name="l00345"></a>00345 
+<a name="l00346"></a>00346   <a class="code" href="ErrorHandling_8h.html#ace243f5c25697a1107cce46626b3dc94">llvm_unreachable</a>(<span class="stringliteral">"Implement any new match types added!"</span>);
+<a name="l00347"></a>00347 }
+<a name="l00348"></a>00348 
+<a name="l00349"></a>00349 MBlazeOperand *MBlazeAsmParser::
+<a name="l00350"></a>00350 ParseMemory(<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<MCParsedAsmOperand*></a> &Operands) {
+<a name="l00351"></a>00351   <span class="keywordflow">if</span> (Operands.<a class="code" href="classllvm_1_1SmallVectorTemplateCommon.html#a22a311dfe4c28a897de8a9365a4f0a84">size</a>() != 4)
+<a name="l00352"></a>00352     <span class="keywordflow">return</span> 0;
+<a name="l00353"></a>00353 
+<a name="l00354"></a>00354   MBlazeOperand &Base = *(MBlazeOperand*)Operands[2];
+<a name="l00355"></a>00355   MBlazeOperand &Offset = *(MBlazeOperand*)Operands[3];
+<a name="l00356"></a>00356 
+<a name="l00357"></a>00357   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> S = Base.getStartLoc();
+<a name="l00358"></a>00358   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> O = Offset.getStartLoc();
+<a name="l00359"></a>00359   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> E = Offset.getEndLoc();
+<a name="l00360"></a>00360 
+<a name="l00361"></a>00361   <span class="keywordflow">if</span> (!Base.isReg()) {
+<a name="l00362"></a>00362     <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(S, <span class="stringliteral">"base address must be a register"</span>);
+<a name="l00363"></a>00363     <span class="keywordflow">return</span> 0;
+<a name="l00364"></a>00364   }
+<a name="l00365"></a>00365 
+<a name="l00366"></a>00366   <span class="keywordflow">if</span> (!Offset.isReg() && !Offset.isImm()) {
+<a name="l00367"></a>00367     <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(O, <span class="stringliteral">"offset must be a register or immediate"</span>);
+<a name="l00368"></a>00368     <span class="keywordflow">return</span> 0;
+<a name="l00369"></a>00369   }
+<a name="l00370"></a>00370 
+<a name="l00371"></a>00371   MBlazeOperand *Op;
+<a name="l00372"></a>00372   <span class="keywordflow">if</span> (Offset.isReg())
+<a name="l00373"></a>00373     Op = MBlazeOperand::CreateMem(Base.getReg(), Offset.getReg(), S, E);
+<a name="l00374"></a>00374   <span class="keywordflow">else</span>
+<a name="l00375"></a>00375     Op = MBlazeOperand::CreateMem(Base.getReg(), Offset.getImm(), S, E);
+<a name="l00376"></a>00376 
+<a name="l00377"></a>00377   <span class="keyword">delete</span> Operands.<a class="code" href="classllvm_1_1SmallVectorImpl.html#a0c8ffe664a36e30d49c84d0aded2fe08">pop_back_val</a>();
+<a name="l00378"></a>00378   <span class="keyword">delete</span> Operands.<a class="code" href="classllvm_1_1SmallVectorImpl.html#a0c8ffe664a36e30d49c84d0aded2fe08">pop_back_val</a>();
+<a name="l00379"></a>00379   Operands.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(Op);
+<a name="l00380"></a>00380 
+<a name="l00381"></a>00381   <span class="keywordflow">return</span> Op;
+<a name="l00382"></a>00382 }
+<a name="l00383"></a>00383 
+<a name="l00384"></a>00384 <span class="keywordtype">bool</span> MBlazeAsmParser::ParseRegister(<span class="keywordtype">unsigned</span> &RegNo,
+<a name="l00385"></a>00385                                     <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &StartLoc, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> &EndLoc) {
+<a name="l00386"></a>00386   <span class="keywordflow">return</span> (ParseRegister(RegNo) == 0);
+<a name="l00387"></a>00387 }
+<a name="l00388"></a>00388 
+<a name="l00389"></a>00389 MBlazeOperand *MBlazeAsmParser::ParseRegister(<span class="keywordtype">unsigned</span> &RegNo) {
+<a name="l00390"></a>00390   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> S = Parser.getTok().getLoc();
+<a name="l00391"></a>00391   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> E = <a class="code" href="classllvm_1_1SMLoc.html#a16ebb09610e55f63cfc55f28e3a56ad5">SMLoc::getFromPointer</a>(Parser.getTok().getLoc().getPointer() - 1);
+<a name="l00392"></a>00392 
+<a name="l00393"></a>00393   <span class="keywordflow">switch</span> (getLexer().getKind()) {
+<a name="l00394"></a>00394   <span class="keywordflow">default</span>: <span class="keywordflow">return</span> 0;
+<a name="l00395"></a>00395   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1AsmToken.html#ab4316e41520ea53f789582c25bbec039a806fe218bb80f0671afdad4cec36569b">AsmToken::Identifier</a>:
+<a name="l00396"></a>00396     RegNo = <a class="code" href="MBlazeAsmParser_8cpp.html#ab163bd42e90805aad69407416086a7d6">MatchRegisterName</a>(getLexer().getTok().getIdentifier());
+<a name="l00397"></a>00397     <span class="keywordflow">if</span> (RegNo == 0)
+<a name="l00398"></a>00398       <span class="keywordflow">return</span> 0;
+<a name="l00399"></a>00399 
+<a name="l00400"></a>00400     getLexer().Lex();
+<a name="l00401"></a>00401     <span class="keywordflow">return</span> MBlazeOperand::CreateReg(RegNo, S, E);
+<a name="l00402"></a>00402   }
+<a name="l00403"></a>00403 }
+<a name="l00404"></a>00404 
+<a name="l00405"></a><a class="code" href="MBlazeAsmParser_8cpp.html#a3b26c42242ee6a552472d9fea7bd844b">00405</a> <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a class="code" href="MBlazeAsmParser_8cpp.html#a3b26c42242ee6a552472d9fea7bd844b">MatchFslRegister</a>(<a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1tgtok.html#abbc5259d649363016626e2529fabe0c5a394bf05139245f8e3ee22865dc9c1caf">String</a>) {
+<a name="l00406"></a>00406   <span class="keywordflow">if</span> (!String.<a class="code" href="classllvm_1_1StringRef.html#a1a7bc4930b0396a67c30081f7cb30542" title="Check if this string starts with the given Prefix.">startswith</a>(<span class="stringliteral">"rfsl"</span>))
+<a name="l00407"></a>00407     <span class="keywordflow">return</span> -1;
+<a name="l00408"></a>00408 
+<a name="l00409"></a>00409   <span class="keywordtype">unsigned</span> regNum;
+<a name="l00410"></a>00410   <span class="keywordflow">if</span> (String.<a class="code" href="classllvm_1_1StringRef.html#a3d0712956e53687d1894ba17b84aeffa">substr</a>(4).<a class="code" href="classllvm_1_1StringRef.html#adabdc95b17da88a726555e8718151ac8">getAsInteger</a>(10,regNum))
+<a name="l00411"></a>00411     <span class="keywordflow">return</span> -1;
+<a name="l00412"></a>00412 
+<a name="l00413"></a>00413   <span class="keywordflow">return</span> regNum;
+<a name="l00414"></a>00414 }
+<a name="l00415"></a>00415 
+<a name="l00416"></a>00416 MBlazeOperand *MBlazeAsmParser::ParseFsl() {
+<a name="l00417"></a>00417   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> S = Parser.getTok().getLoc();
+<a name="l00418"></a>00418   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> E = <a class="code" href="classllvm_1_1SMLoc.html#a16ebb09610e55f63cfc55f28e3a56ad5">SMLoc::getFromPointer</a>(Parser.getTok().getLoc().getPointer() - 1);
+<a name="l00419"></a>00419 
+<a name="l00420"></a>00420   <span class="keywordflow">switch</span> (getLexer().getKind()) {
+<a name="l00421"></a>00421   <span class="keywordflow">default</span>: <span class="keywordflow">return</span> 0;
+<a name="l00422"></a>00422   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1AsmToken.html#ab4316e41520ea53f789582c25bbec039a806fe218bb80f0671afdad4cec36569b">AsmToken::Identifier</a>:
+<a name="l00423"></a>00423     <span class="keywordtype">unsigned</span> reg = <a class="code" href="MBlazeAsmParser_8cpp.html#a3b26c42242ee6a552472d9fea7bd844b">MatchFslRegister</a>(getLexer().getTok().getIdentifier());
+<a name="l00424"></a>00424     <span class="keywordflow">if</span> (reg >= 16)
+<a name="l00425"></a>00425       <span class="keywordflow">return</span> 0;
+<a name="l00426"></a>00426 
+<a name="l00427"></a>00427     getLexer().Lex();
+<a name="l00428"></a>00428     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *EVal = <a class="code" href="classllvm_1_1MCConstantExpr.html#af86fe36eb5cf1cc8470095145e2bbfd2">MCConstantExpr::Create</a>(reg,getContext());
+<a name="l00429"></a>00429     <span class="keywordflow">return</span> MBlazeOperand::CreateFslImm(EVal,S,E);
+<a name="l00430"></a>00430   }
+<a name="l00431"></a>00431 }
+<a name="l00432"></a>00432 
+<a name="l00433"></a>00433 MBlazeOperand *MBlazeAsmParser::ParseImmediate() {
+<a name="l00434"></a>00434   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> S = Parser.getTok().getLoc();
+<a name="l00435"></a>00435   <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> E = <a class="code" href="classllvm_1_1SMLoc.html#a16ebb09610e55f63cfc55f28e3a56ad5">SMLoc::getFromPointer</a>(Parser.getTok().getLoc().getPointer() - 1);
+<a name="l00436"></a>00436 
+<a name="l00437"></a>00437   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *EVal;
+<a name="l00438"></a>00438   <span class="keywordflow">switch</span> (getLexer().getKind()) {
+<a name="l00439"></a>00439   <span class="keywordflow">default</span>: <span class="keywordflow">return</span> 0;
+<a name="l00440"></a>00440   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1AsmToken.html#ab4316e41520ea53f789582c25bbec039a85fc8bab3d6f4fa71b0d876dd9a96e1a">AsmToken::LParen</a>:
+<a name="l00441"></a>00441   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1AsmToken.html#ab4316e41520ea53f789582c25bbec039ac97d79769cee46bf3915460c278d5de6">AsmToken::Plus</a>:
+<a name="l00442"></a>00442   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1AsmToken.html#ab4316e41520ea53f789582c25bbec039a1189cff13fec34dee4d501f4d7a7e3a2">AsmToken::Minus</a>:
+<a name="l00443"></a>00443   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1AsmToken.html#ab4316e41520ea53f789582c25bbec039a2369278b71442a32bd6a7f6a6f411033">AsmToken::Integer</a>:
+<a name="l00444"></a>00444   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1AsmToken.html#ab4316e41520ea53f789582c25bbec039a806fe218bb80f0671afdad4cec36569b">AsmToken::Identifier</a>:
+<a name="l00445"></a>00445     <span class="keywordflow">if</span> (getParser().ParseExpression(EVal))
+<a name="l00446"></a>00446       <span class="keywordflow">return</span> 0;
+<a name="l00447"></a>00447 
+<a name="l00448"></a>00448     <span class="keywordflow">return</span> MBlazeOperand::CreateImm(EVal, S, E);
+<a name="l00449"></a>00449   }
+<a name="l00450"></a>00450 }
+<a name="l00451"></a>00451 
+<a name="l00452"></a>00452 MBlazeOperand *MBlazeAsmParser::
+<a name="l00453"></a>00453 ParseOperand(<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<MCParsedAsmOperand*></a> &Operands) {
+<a name="l00454"></a>00454   MBlazeOperand *Op;
+<a name="l00455"></a>00455 
+<a name="l00456"></a>00456   <span class="comment">// Attempt to parse the next token as a register name</span>
+<a name="l00457"></a>00457   <span class="keywordtype">unsigned</span> RegNo;
+<a name="l00458"></a>00458   Op = ParseRegister(RegNo);
+<a name="l00459"></a>00459 
+<a name="l00460"></a>00460   <span class="comment">// Attempt to parse the next token as an FSL immediate</span>
+<a name="l00461"></a>00461   <span class="keywordflow">if</span> (!Op)
+<a name="l00462"></a>00462     Op = ParseFsl();
+<a name="l00463"></a>00463 
+<a name="l00464"></a>00464   <span class="comment">// Attempt to parse the next token as an immediate</span>
+<a name="l00465"></a>00465   <span class="keywordflow">if</span> (!Op)
+<a name="l00466"></a>00466     Op = ParseImmediate();
+<a name="l00467"></a>00467 
+<a name="l00468"></a>00468   <span class="comment">// If the token could not be parsed then fail</span>
+<a name="l00469"></a>00469   <span class="keywordflow">if</span> (!Op) {
+<a name="l00470"></a>00470     <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(Parser.getTok().getLoc(), <span class="stringliteral">"unknown operand"</span>);
+<a name="l00471"></a>00471     <span class="keywordflow">return</span> 0;
+<a name="l00472"></a>00472   }
+<a name="l00473"></a>00473 
+<a name="l00474"></a>00474   <span class="comment">// Push the parsed operand into the list of operands</span>
+<a name="l00475"></a>00475   Operands.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(Op);
+<a name="l00476"></a>00476   <span class="keywordflow">return</span> Op;
+<a name="l00477"></a>00477 }
+<a name="l00478"></a>00478 <span class="comment"></span>
+<a name="l00479"></a>00479 <span class="comment">/// Parse an mblaze instruction mnemonic followed by its operands.</span>
+<a name="l00480"></a>00480 <span class="comment"></span><span class="keywordtype">bool</span> MBlazeAsmParser::
+<a name="l00481"></a>00481 ParseInstruction(<a class="code" href="structllvm_1_1ParseInstructionInfo.html">ParseInstructionInfo</a> &Info, <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> <a class="code" href="namespacellvm_1_1GraphProgram.html#a0ad4685976f8c4d4a697a53fbe05d10b">Name</a>, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> NameLoc,
+<a name="l00482"></a>00482                  <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<MCParsedAsmOperand*></a> &Operands) {
+<a name="l00483"></a>00483   <span class="comment">// The first operands is the token for the instruction name</span>
+<a name="l00484"></a>00484   <span class="keywordtype">size_t</span> dotLoc = Name.<a class="code" href="classllvm_1_1StringRef.html#a421e16456fe6d7b71fb4af736194165c">find</a>(<span class="charliteral">'.'</span>);
+<a name="l00485"></a>00485   Operands.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(MBlazeOperand::CreateToken(Name.<a class="code" href="classllvm_1_1StringRef.html#a3d0712956e53687d1894ba17b84aeffa">substr</a>(0,dotLoc),NameLoc));
+<a name="l00486"></a>00486   <span class="keywordflow">if</span> (dotLoc < Name.<a class="code" href="classllvm_1_1StringRef.html#af68d5ebdb576d7481ea2766151b875d4" title="size - Get the string size.">size</a>())
+<a name="l00487"></a>00487     Operands.<a class="code" href="classllvm_1_1SmallVectorTemplateBase.html#ae1a10b90f22c0478960fb5798ff73916">push_back</a>(MBlazeOperand::CreateToken(Name.<a class="code" href="classllvm_1_1StringRef.html#a3d0712956e53687d1894ba17b84aeffa">substr</a>(dotLoc),NameLoc));
+<a name="l00488"></a>00488 
+<a name="l00489"></a>00489   <span class="comment">// If there are no more operands then finish</span>
+<a name="l00490"></a>00490   <span class="keywordflow">if</span> (getLexer().is(<a class="code" href="classllvm_1_1AsmToken.html#ab4316e41520ea53f789582c25bbec039ae10c5f59f330bfd15608e1dda213a98f">AsmToken::EndOfStatement</a>))
+<a name="l00491"></a>00491     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00492"></a>00492 
+<a name="l00493"></a>00493   <span class="comment">// Parse the first operand</span>
+<a name="l00494"></a>00494   <span class="keywordflow">if</span> (!ParseOperand(Operands))
+<a name="l00495"></a>00495     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00496"></a>00496 
+<a name="l00497"></a>00497   <span class="keywordflow">while</span> (getLexer().isNot(<a class="code" href="classllvm_1_1AsmToken.html#ab4316e41520ea53f789582c25bbec039ae10c5f59f330bfd15608e1dda213a98f">AsmToken::EndOfStatement</a>) &&
+<a name="l00498"></a>00498          getLexer().is(<a class="code" href="classllvm_1_1AsmToken.html#ab4316e41520ea53f789582c25bbec039ac4b2675d2cb80935b789d9f140092e25">AsmToken::Comma</a>)) {
+<a name="l00499"></a>00499     <span class="comment">// Consume the comma token</span>
+<a name="l00500"></a>00500     getLexer().Lex();
+<a name="l00501"></a>00501 
+<a name="l00502"></a>00502     <span class="comment">// Parse the next operand</span>
+<a name="l00503"></a>00503     <span class="keywordflow">if</span> (!ParseOperand(Operands))
+<a name="l00504"></a>00504       <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00505"></a>00505   }
+<a name="l00506"></a>00506 
+<a name="l00507"></a>00507   <span class="comment">// If the instruction requires a memory operand then we need to</span>
+<a name="l00508"></a>00508   <span class="comment">// replace the last two operands (base+offset) with a single</span>
+<a name="l00509"></a>00509   <span class="comment">// memory operand.</span>
+<a name="l00510"></a>00510   <span class="keywordflow">if</span> (Name.<a class="code" href="classllvm_1_1StringRef.html#a1a7bc4930b0396a67c30081f7cb30542" title="Check if this string starts with the given Prefix.">startswith</a>(<span class="stringliteral">"lw"</span>) || Name.<a class="code" href="classllvm_1_1StringRef.html#a1a7bc4930b0396a67c30081f7cb30542" title="Check if this string starts with the given Prefix.">startswith</a>(<span class="stringliteral">"sw"</span>) ||
+<a name="l00511"></a>00511       Name.<a class="code" href="classllvm_1_1StringRef.html#a1a7bc4930b0396a67c30081f7cb30542" title="Check if this string starts with the given Prefix.">startswith</a>(<span class="stringliteral">"lh"</span>) || Name.<a class="code" href="classllvm_1_1StringRef.html#a1a7bc4930b0396a67c30081f7cb30542" title="Check if this string starts with the given Prefix.">startswith</a>(<span class="stringliteral">"sh"</span>) ||
+<a name="l00512"></a>00512       Name.<a class="code" href="classllvm_1_1StringRef.html#a1a7bc4930b0396a67c30081f7cb30542" title="Check if this string starts with the given Prefix.">startswith</a>(<span class="stringliteral">"lb"</span>) || Name.<a class="code" href="classllvm_1_1StringRef.html#a1a7bc4930b0396a67c30081f7cb30542" title="Check if this string starts with the given Prefix.">startswith</a>(<span class="stringliteral">"sb"</span>))
+<a name="l00513"></a>00513     <span class="keywordflow">return</span> (ParseMemory(Operands) == NULL);
+<a name="l00514"></a>00514 
+<a name="l00515"></a>00515   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00516"></a>00516 }
+<a name="l00517"></a>00517 <span class="comment"></span>
+<a name="l00518"></a>00518 <span class="comment">/// ParseDirective parses the MBlaze specific directives</span>
+<a name="l00519"></a>00519 <span class="comment"></span><span class="keywordtype">bool</span> MBlazeAsmParser::ParseDirective(<a class="code" href="classllvm_1_1AsmToken.html" title="AsmToken - Target independent representation for an assembler token.">AsmToken</a> DirectiveID) {
+<a name="l00520"></a>00520   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> IDVal = DirectiveID.<a class="code" href="classllvm_1_1AsmToken.html#a25860c6ffc7116937ab327771c3dd08f">getIdentifier</a>();
+<a name="l00521"></a>00521   <span class="keywordflow">if</span> (IDVal == <span class="stringliteral">".word"</span>)
+<a name="l00522"></a>00522     <span class="keywordflow">return</span> ParseDirectiveWord(2, DirectiveID.<a class="code" href="classllvm_1_1AsmToken.html#add7f9405ba7ad0891528a4cf5f47f45e">getLoc</a>());
+<a name="l00523"></a>00523   <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00524"></a>00524 }
+<a name="l00525"></a>00525 <span class="comment"></span>
+<a name="l00526"></a>00526 <span class="comment">/// ParseDirectiveWord</span>
+<a name="l00527"></a>00527 <span class="comment">///  ::= .word [ expression (, expression)* ]</span>
+<a name="l00528"></a>00528 <span class="comment"></span><span class="keywordtype">bool</span> MBlazeAsmParser::ParseDirectiveWord(<span class="keywordtype">unsigned</span> Size, <a class="code" href="classllvm_1_1SMLoc.html" title="SMLoc - Represents a location in source code.">SMLoc</a> L) {
+<a name="l00529"></a>00529   <span class="keywordflow">if</span> (getLexer().isNot(<a class="code" href="classllvm_1_1AsmToken.html#ab4316e41520ea53f789582c25bbec039ae10c5f59f330bfd15608e1dda213a98f">AsmToken::EndOfStatement</a>)) {
+<a name="l00530"></a>00530     <span class="keywordflow">for</span> (;;) {
+<a name="l00531"></a>00531       <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCExpr.html">MCExpr</a> *<a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>;
+<a name="l00532"></a>00532       <span class="keywordflow">if</span> (getParser().ParseExpression(Value))
+<a name="l00533"></a>00533         <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00534"></a>00534 
+<a name="l00535"></a>00535       getParser().getStreamer().EmitValue(Value, Size, 0 <span class="comment">/*addrspace*/</span>);
+<a name="l00536"></a>00536 
+<a name="l00537"></a>00537       <span class="keywordflow">if</span> (getLexer().is(<a class="code" href="classllvm_1_1AsmToken.html#ab4316e41520ea53f789582c25bbec039ae10c5f59f330bfd15608e1dda213a98f">AsmToken::EndOfStatement</a>))
+<a name="l00538"></a>00538         <span class="keywordflow">break</span>;
+<a name="l00539"></a>00539 
+<a name="l00540"></a>00540       <span class="comment">// FIXME: Improve diagnostic.</span>
+<a name="l00541"></a>00541       <span class="keywordflow">if</span> (getLexer().isNot(<a class="code" href="classllvm_1_1AsmToken.html#ab4316e41520ea53f789582c25bbec039ac4b2675d2cb80935b789d9f140092e25">AsmToken::Comma</a>))
+<a name="l00542"></a>00542         <span class="keywordflow">return</span> <a class="code" href="namespacellvm_1_1lltok.html#af353621f14cb4b4b3af5ffaff84076b1a3766a4dce43f4efc7208a749cc7ac605">Error</a>(L, <span class="stringliteral">"unexpected token in directive"</span>);
+<a name="l00543"></a>00543       Parser.Lex();
+<a name="l00544"></a>00544     }
+<a name="l00545"></a>00545   }
+<a name="l00546"></a>00546 
+<a name="l00547"></a>00547   Parser.Lex();
+<a name="l00548"></a>00548   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00549"></a>00549 }
+<a name="l00550"></a>00550 
+<a name="l00551"></a>00551 <span class="keyword">extern</span> <span class="stringliteral">"C"</span> <span class="keywordtype">void</span> <a class="code" href="MBlazeAsmLexer_8cpp.html#ac90c192ed4ad313d539ae98f6b00f216">LLVMInitializeMBlazeAsmLexer</a>();
+<a name="l00552"></a>00552 <span class="comment"></span>
+<a name="l00553"></a>00553 <span class="comment">/// Force static initialization.</span>
+<a name="l00554"></a><a class="code" href="MBlazeAsmParser_8cpp.html#a0b14256e8adb351ea253ba5a73ad682a">00554</a> <span class="comment"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> <span class="keywordtype">void</span> <a class="code" href="MBlazeAsmParser_8cpp.html#a0b14256e8adb351ea253ba5a73ad682a" title="Force static initialization.">LLVMInitializeMBlazeAsmParser</a>() {
+<a name="l00555"></a>00555   <a class="code" href="structllvm_1_1RegisterMCAsmParser.html">RegisterMCAsmParser<MBlazeAsmParser></a> <a class="code" href="namespacellvm.html#a6569d00d31a5d74e563e2f39f82271ab">X</a>(<a class="code" href="namespacellvm.html#a2140a3da86d5fb3b3c7a14cb3e5ad080">TheMBlazeTarget</a>);
+<a name="l00556"></a>00556   <a class="code" href="MBlazeAsmLexer_8cpp.html#ac90c192ed4ad313d539ae98f6b00f216">LLVMInitializeMBlazeAsmLexer</a>();
+<a name="l00557"></a>00557 }
+<a name="l00558"></a>00558 
+<a name="l00559"></a><a class="code" href="MBlazeAsmParser_8cpp.html#a97de2baad077d3029a9cb8f211cf67c1">00559</a> <span class="preprocessor">#define GET_REGISTER_MATCHER</span>
+<a name="l00560"></a><a class="code" href="MBlazeAsmParser_8cpp.html#a0a1f42da52344bd4e34e744266abff0d">00560</a> <span class="preprocessor"></span><span class="preprocessor">#define GET_MATCHER_IMPLEMENTATION</span>
+<a name="l00561"></a>00561 <span class="preprocessor"></span><span class="preprocessor">#include "MBlazeGenAsmMatcher.inc"</span>
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:35:43 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/MBlazeAsmPrinter_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MBlazeAsmPrinter_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MBlazeAsmPrinter_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MBlazeAsmPrinter_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,171 @@
+<!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: MBlazeAsmPrinter.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_f975b82d147a340f2ab6ec1753ee61b7.html">MBlaze</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#define-members">Defines</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">MBlazeAsmPrinter.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="MBlaze_8h_source.html">MBlaze.h</a>"</code><br/>
+<code>#include "<a class="el" href="MBlazeSubtarget_8h_source.html">MBlazeSubtarget.h</a>"</code><br/>
+<code>#include "<a class="el" href="MBlazeInstrInfo_8h_source.html">MBlazeInstrInfo.h</a>"</code><br/>
+<code>#include "<a class="el" href="MBlazeTargetMachine_8h_source.html">MBlazeTargetMachine.h</a>"</code><br/>
+<code>#include "<a class="el" href="MBlazeMachineFunction_8h_source.html">MBlazeMachineFunction.h</a>"</code><br/>
+<code>#include "<a class="el" href="MBlazeMCInstLower_8h_source.html">MBlazeMCInstLower.h</a>"</code><br/>
+<code>#include "<a class="el" href="MBlazeInstPrinter_8h_source.html">InstPrinter/MBlazeInstPrinter.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="Module_8h_source.html">llvm/Module.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="MachineFunctionPass_8h_source.html">llvm/CodeGen/MachineFunctionPass.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="MachineInstr_8h_source.html">llvm/CodeGen/MachineInstr.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="MCStreamer_8h_source.html">llvm/MC/MCStreamer.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="MCSymbol_8h_source.html">llvm/MC/MCSymbol.h</a>"</code><br/>
+<code>#include "<a class="el" href="Mangler_8h_source.html">llvm/Target/Mangler.h</a>"</code><br/>
+<code>#include "<a class="el" href="DataLayout_8h_source.html">llvm/DataLayout.h</a>"</code><br/>
+<code>#include "<a class="el" href="TargetLoweringObjectFile_8h_source.html">llvm/Target/TargetLoweringObjectFile.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="ErrorHandling_8h_source.html">llvm/Support/ErrorHandling.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 <cctype></code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for MBlazeAsmPrinter.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="MBlazeAsmPrinter_8cpp__incl.png" border="0" usemap="#MBlazeAsmPrinter_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="MBlazeAsmPrinter_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="MBlazeAsmPrinter_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">DEBUG_TYPE</a>   "mblaze-asm-printer"</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 void </td><td class="memItemRight" valign="bottom"><a class="el" href="MBlazeAsmPrinter_8cpp.html#a132542cb52525c4d4189e70dfc0307fc">printHex32</a> (<a class="el" href="classunsigned.html">unsigned</a> int <a class="el" href="classllvm_1_1Value.html">Value</a>, <a class="el" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="MBlazeAsmPrinter_8cpp.html#a189a904ca3ab711f3872928de4e95ae1">LLVMInitializeMBlazeAsmPrinter</a> ()</td></tr>
+</table>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="ad78e062f62e0d6e453941fb4ca843e4d"></a><!-- doxytag: member="MBlazeAsmPrinter.cpp::DEBUG_TYPE" ref="ad78e062f62e0d6e453941fb4ca843e4d" args="" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">#define DEBUG_TYPE   "mblaze-asm-printer"</td>
+        </tr>
+      </table>
+</div>
+<div class="memdoc">
+
+<p>Definition at line <a class="el" href="MBlazeAsmPrinter_8cpp_source.html#l00015">15</a> of file <a class="el" href="MBlazeAsmPrinter_8cpp_source.html">MBlazeAsmPrinter.cpp</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a189a904ca3ab711f3872928de4e95ae1"></a><!-- doxytag: member="MBlazeAsmPrinter.cpp::LLVMInitializeMBlazeAsmPrinter" ref="a189a904ca3ab711f3872928de4e95ae1" args="()" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void LLVMInitializeMBlazeAsmPrinter </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="MBlazeAsmPrinter_8cpp_source.html#l00324">324</a> of file <a class="el" href="MBlazeAsmPrinter_8cpp_source.html">MBlazeAsmPrinter.cpp</a>.</p>
+
+<p>References <a class="el" href="MBlazeTargetInfo_8cpp_source.html#l00015">llvm::TheMBlazeTarget</a>, and <a class="el" href="namespacellvm.html#a6569d00d31a5d74e563e2f39f82271ab">llvm::X</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a132542cb52525c4d4189e70dfc0307fc"></a><!-- doxytag: member="MBlazeAsmPrinter.cpp::printHex32" ref="a132542cb52525c4d4189e70dfc0307fc" args="(unsigned int Value, raw_ostream &O)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">static void printHex32 </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classunsigned.html">unsigned</a> int </td>
+          <td class="paramname"><em>Value</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classllvm_1_1raw__ostream.html">raw_ostream</a> & </td>
+          <td class="paramname"><em>O</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="MBlazeAsmPrinter_8cpp_source.html#l00117">117</a> of file <a class="el" href="MBlazeAsmPrinter_8cpp_source.html">MBlazeAsmPrinter.cpp</a>.</p>
+
+<p>References <a class="el" href="raw__ostream_8cpp_source.html#l00158">llvm::raw_ostream::write_hex()</a>.</p>
+
+</div>
+</div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:31 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/MBlazeAsmPrinter_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MBlazeAsmPrinter_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MBlazeAsmPrinter_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MBlazeAsmPrinter_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,382 @@
+<!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: MBlazeAsmPrinter.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_f975b82d147a340f2ab6ec1753ee61b7.html">MBlaze</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">MBlazeAsmPrinter.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="MBlazeAsmPrinter_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- MBlazeAsmPrinter.cpp - MBlaze LLVM assembly writer ----------------===//</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 contains a printer that converts from our internal representation</span>
+<a name="l00011"></a>00011 <span class="comment">// of machine-dependent LLVM code to GAS-format MBlaze assembly language.</span>
+<a name="l00012"></a>00012 <span class="comment">//</span>
+<a name="l00013"></a>00013 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00014"></a>00014 
+<a name="l00015"></a><a class="code" href="MBlazeAsmPrinter_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">00015</a> <span class="preprocessor">#define DEBUG_TYPE "mblaze-asm-printer"</span>
+<a name="l00016"></a>00016 <span class="preprocessor"></span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="MBlaze_8h.html">MBlaze.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="MBlazeSubtarget_8h.html">MBlazeSubtarget.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="MBlazeInstrInfo_8h.html">MBlazeInstrInfo.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="MBlazeTargetMachine_8h.html">MBlazeTargetMachine.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="MBlazeMachineFunction_8h.html">MBlazeMachineFunction.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="MBlazeMCInstLower_8h.html">MBlazeMCInstLower.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="MBlazeInstPrinter_8h.html">InstPrinter/MBlazeInstPrinter.h</a>"</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="Constants_8h.html">llvm/Constants.h</a>"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="DerivedTypes_8h.html">llvm/DerivedTypes.h</a>"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="Module_8h.html">llvm/Module.h</a>"</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="AsmPrinter_8h.html">llvm/CodeGen/AsmPrinter.h</a>"</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="MachineFunctionPass_8h.html">llvm/CodeGen/MachineFunctionPass.h</a>"</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="MachineConstantPool_8h.html">llvm/CodeGen/MachineConstantPool.h</a>"</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="MachineFrameInfo_8h.html">llvm/CodeGen/MachineFrameInfo.h</a>"</span>
+<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="MachineInstr_8h.html">llvm/CodeGen/MachineInstr.h</a>"</span>
+<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="MCInst_8h.html">llvm/MC/MCInst.h</a>"</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="MCStreamer_8h.html">llvm/MC/MCStreamer.h</a>"</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="MCAsmInfo_8h.html">llvm/MC/MCAsmInfo.h</a>"</span>
+<a name="l00035"></a>00035 <span class="preprocessor">#include "<a class="code" href="MCSymbol_8h.html">llvm/MC/MCSymbol.h</a>"</span>
+<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="Mangler_8h.html">llvm/Target/Mangler.h</a>"</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="DataLayout_8h.html">llvm/DataLayout.h</a>"</span>
+<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="TargetLoweringObjectFile_8h.html">llvm/Target/TargetLoweringObjectFile.h</a>"</span>
+<a name="l00039"></a>00039 <span class="preprocessor">#include "<a class="code" href="Target_2TargetMachine_8h.html">llvm/Target/TargetMachine.h</a>"</span>
+<a name="l00040"></a>00040 <span class="preprocessor">#include "<a class="code" href="TargetOptions_8h.html">llvm/Target/TargetOptions.h</a>"</span>
+<a name="l00041"></a>00041 <span class="preprocessor">#include "<a class="code" href="ErrorHandling_8h.html">llvm/Support/ErrorHandling.h</a>"</span>
+<a name="l00042"></a>00042 <span class="preprocessor">#include "<a class="code" href="TargetRegistry_8h.html">llvm/Support/TargetRegistry.h</a>"</span>
+<a name="l00043"></a>00043 <span class="preprocessor">#include "<a class="code" href="raw__ostream_8h.html">llvm/Support/raw_ostream.h</a>"</span>
+<a name="l00044"></a>00044 <span class="preprocessor">#include <cctype></span>
+<a name="l00045"></a>00045 
+<a name="l00046"></a>00046 <span class="keyword">using namespace </span>llvm;
+<a name="l00047"></a>00047 
+<a name="l00048"></a>00048 <span class="keyword">namespace </span>{
+<a name="l00049"></a>00049   <span class="keyword">class </span>MBlazeAsmPrinter : <span class="keyword">public</span> <a class="code" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a> {
+<a name="l00050"></a>00050     <span class="keyword">const</span> <a class="code" href="classllvm_1_1MBlazeSubtarget.html">MBlazeSubtarget</a> *Subtarget;
+<a name="l00051"></a>00051   <span class="keyword">public</span>:
+<a name="l00052"></a>00052     <span class="keyword">explicit</span> MBlazeAsmPrinter(<a class="code" href="classllvm_1_1TargetMachine.html">TargetMachine</a> &TM, <a class="code" href="classllvm_1_1MCStreamer.html">MCStreamer</a> &Streamer)
+<a name="l00053"></a>00053       : <a class="code" href="classllvm_1_1AsmPrinter.html">AsmPrinter</a>(TM, Streamer) {
+<a name="l00054"></a>00054       Subtarget = &TM.<a class="code" href="classllvm_1_1TargetMachine.html#a5af2fed99951774b6a14d30ec6e73792">getSubtarget</a><<a class="code" href="classllvm_1_1MBlazeSubtarget.html">MBlazeSubtarget</a>>();
+<a name="l00055"></a>00055     }
+<a name="l00056"></a>00056 
+<a name="l00057"></a>00057     <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *getPassName()<span class="keyword"> const </span>{
+<a name="l00058"></a>00058       <span class="keywordflow">return</span> <span class="stringliteral">"MBlaze Assembly Printer"</span>;
+<a name="l00059"></a>00059     }
+<a name="l00060"></a>00060 
+<a name="l00061"></a>00061     <span class="keywordtype">void</span> printSavedRegsBitmask();
+<a name="l00062"></a>00062     <span class="keywordtype">void</span> emitFrameDirective();
+<a name="l00063"></a>00063     <span class="keyword">virtual</span> <span class="keywordtype">void</span> EmitFunctionBodyStart();
+<a name="l00064"></a>00064     <span class="keyword">virtual</span> <span class="keywordtype">void</span> EmitFunctionBodyEnd();
+<a name="l00065"></a>00065     <span class="keyword">virtual</span> <span class="keywordtype">void</span> EmitFunctionEntryLabel();
+<a name="l00066"></a>00066 
+<a name="l00067"></a>00067     <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isBlockOnlyReachableByFallthrough(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *MBB)
+<a name="l00068"></a>00068       <span class="keyword">const</span>;
+<a name="l00069"></a>00069 
+<a name="l00070"></a>00070     <span class="keywordtype">bool</span> PrintAsmOperand(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>, <span class="keywordtype">unsigned</span> OpNo,
+<a name="l00071"></a>00071                          <span class="keywordtype">unsigned</span> AsmVariant, <span class="keyword">const</span> <span class="keywordtype">char</span> *ExtraCode,
+<a name="l00072"></a>00072                          <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O);
+<a name="l00073"></a>00073     <span class="keywordtype">void</span> printOperand(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI, <span class="keywordtype">int</span> opNum, <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O);
+<a name="l00074"></a>00074     <span class="keywordtype">void</span> printUnsignedImm(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI, <span class="keywordtype">int</span> opNum, <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O);
+<a name="l00075"></a>00075     <span class="keywordtype">void</span> printFSLImm(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI, <span class="keywordtype">int</span> opNum, <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O);
+<a name="l00076"></a>00076     <span class="keywordtype">void</span> printMemOperand(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI, <span class="keywordtype">int</span> opNum, <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O,
+<a name="l00077"></a>00077                          <span class="keyword">const</span> <span class="keywordtype">char</span> *Modifier = 0);
+<a name="l00078"></a>00078 
+<a name="l00079"></a>00079     <span class="keywordtype">void</span> EmitInstruction(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI);
+<a name="l00080"></a>00080   };
+<a name="l00081"></a>00081 } <span class="comment">// end of anonymous namespace</span>
+<a name="l00082"></a>00082 
+<a name="l00083"></a>00083 <span class="comment">// #include "MBlazeGenAsmWriter.inc"</span>
+<a name="l00084"></a>00084 
+<a name="l00085"></a>00085 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00086"></a>00086 <span class="comment">//</span>
+<a name="l00087"></a>00087 <span class="comment">//  MBlaze Asm Directives</span>
+<a name="l00088"></a>00088 <span class="comment">//</span>
+<a name="l00089"></a>00089 <span class="comment">//  -- Frame directive "frame Stackpointer, Stacksize, RARegister"</span>
+<a name="l00090"></a>00090 <span class="comment">//  Describe the stack frame.</span>
+<a name="l00091"></a>00091 <span class="comment">//</span>
+<a name="l00092"></a>00092 <span class="comment">//  -- Mask directives "mask  bitmask, offset"</span>
+<a name="l00093"></a>00093 <span class="comment">//  Tells the assembler which registers are saved and where.</span>
+<a name="l00094"></a>00094 <span class="comment">//  bitmask - contain a little endian bitset indicating which registers are</span>
+<a name="l00095"></a>00095 <span class="comment">//            saved on function prologue (e.g. with a 0x80000000 mask, the</span>
+<a name="l00096"></a>00096 <span class="comment">//            assembler knows the register 31 (RA) is saved at prologue.</span>
+<a name="l00097"></a>00097 <span class="comment">//  offset  - the position before stack pointer subtraction indicating where</span>
+<a name="l00098"></a>00098 <span class="comment">//            the first saved register on prologue is located. (e.g. with a</span>
+<a name="l00099"></a>00099 <span class="comment">//</span>
+<a name="l00100"></a>00100 <span class="comment">//  Consider the following function prologue:</span>
+<a name="l00101"></a>00101 <span class="comment">//</span>
+<a name="l00102"></a>00102 <span class="comment">//    .frame  R19,48,R15</span>
+<a name="l00103"></a>00103 <span class="comment">//    .mask   0xc0000000,-8</span>
+<a name="l00104"></a>00104 <span class="comment">//       addiu R1, R1, -48</span>
+<a name="l00105"></a>00105 <span class="comment">//       sw R15, 40(R1)</span>
+<a name="l00106"></a>00106 <span class="comment">//       sw R19, 36(R1)</span>
+<a name="l00107"></a>00107 <span class="comment">//</span>
+<a name="l00108"></a>00108 <span class="comment">//    With a 0xc0000000 mask, the assembler knows the register 15 (R15) and</span>
+<a name="l00109"></a>00109 <span class="comment">//    19 (R19) are saved at prologue. As the save order on prologue is from</span>
+<a name="l00110"></a>00110 <span class="comment">//    left to right, R15 is saved first. A -8 offset means that after the</span>
+<a name="l00111"></a>00111 <span class="comment">//    stack pointer subtration, the first register in the mask (R15) will be</span>
+<a name="l00112"></a>00112 <span class="comment">//    saved at address 48-8=40.</span>
+<a name="l00113"></a>00113 <span class="comment">//</span>
+<a name="l00114"></a>00114 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00115"></a>00115 
+<a name="l00116"></a>00116 <span class="comment">// Print a 32 bit hex number with all numbers.</span>
+<a name="l00117"></a><a class="code" href="MBlazeAsmPrinter_8cpp.html#a132542cb52525c4d4189e70dfc0307fc">00117</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="MBlazeAsmPrinter_8cpp.html#a132542cb52525c4d4189e70dfc0307fc">printHex32</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classllvm_1_1Value.html" title="LLVM Value Representation.">Value</a>, <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O) {
+<a name="l00118"></a>00118   O << <span class="stringliteral">"0x"</span>;
+<a name="l00119"></a>00119   <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 7; i >= 0; i--)
+<a name="l00120"></a>00120     O.<a class="code" href="classllvm_1_1raw__ostream.html#a37b5dd8a8b82f2818e0f4ea9699d8ae5" title="write_hex - Output N in hexadecimal, without any prefix or padding.">write_hex</a>((Value & (0xF << (i*4))) >> (i*4));
+<a name="l00121"></a>00121 }
+<a name="l00122"></a>00122 
+<a name="l00123"></a>00123 <span class="comment">// Create a bitmask with all callee saved registers for CPU or Floating Point</span>
+<a name="l00124"></a>00124 <span class="comment">// registers. For CPU registers consider RA, GP and FP for saving if necessary.</span>
+<a name="l00125"></a>00125 <span class="keywordtype">void</span> MBlazeAsmPrinter::printSavedRegsBitmask() {
+<a name="l00126"></a>00126   <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetFrameLowering.html">TargetFrameLowering</a> *TFI = TM.getFrameLowering();
+<a name="l00127"></a>00127   <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetRegisterInfo.html">TargetRegisterInfo</a> &RI = *TM.getRegisterInfo();
+<a name="l00128"></a>00128 
+<a name="l00129"></a>00129   <span class="comment">// CPU Saved Registers Bitmasks</span>
+<a name="l00130"></a>00130   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> CPUBitmask = 0;
+<a name="l00131"></a>00131 
+<a name="l00132"></a>00132   <span class="comment">// Set the CPU Bitmasks</span>
+<a name="l00133"></a>00133   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineFrameInfo.html" title="Abstract Stack Frame Information.">MachineFrameInfo</a> *MFI = MF->getFrameInfo();
+<a name="l00134"></a>00134   <span class="keyword">const</span> std::vector<CalleeSavedInfo> &CSI = MFI-><a class="code" href="classllvm_1_1MachineFrameInfo.html#a5296aac05a8ccceb0d89d449611722d3">getCalleeSavedInfo</a>();
+<a name="l00135"></a>00135   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CSI.size(); i != e; ++i) {
+<a name="l00136"></a>00136     <span class="keywordtype">unsigned</span> <a class="code" href="X86DisassemblerDecoder_8h.html#a546839a5c4bcf9f9450967155f48de41">Reg</a> = CSI[i].getReg();
+<a name="l00137"></a>00137     <span class="keywordtype">unsigned</span> RegNum = <a class="code" href="namespacellvm.html#ab4fc31dd5f625f7f15770507c9b36aa1">getMBlazeRegisterNumbering</a>(Reg);
+<a name="l00138"></a>00138     <span class="keywordflow">if</span> (MBlaze::GPRRegClass.contains(Reg))
+<a name="l00139"></a>00139       CPUBitmask |= (1 << RegNum);
+<a name="l00140"></a>00140   }
+<a name="l00141"></a>00141 
+<a name="l00142"></a>00142   <span class="comment">// Return Address and Frame registers must also be set in CPUBitmask.</span>
+<a name="l00143"></a>00143   <span class="keywordflow">if</span> (TFI-><a class="code" href="classllvm_1_1TargetFrameLowering.html#a59182730437bdb0a45a274261a7ea84b">hasFP</a>(*MF))
+<a name="l00144"></a>00144     CPUBitmask |= (1 <<  <a class="code" href="namespacellvm.html#ab4fc31dd5f625f7f15770507c9b36aa1">getMBlazeRegisterNumbering</a>(RI.<a class="code" href="classllvm_1_1TargetRegisterInfo.html#a2a4c228322f39803f16b2f49d18b0efe" title="Debug information queries.">getFrameRegister</a>(*MF)));
+<a name="l00145"></a>00145 
+<a name="l00146"></a>00146   <span class="keywordflow">if</span> (MFI-><a class="code" href="classllvm_1_1MachineFrameInfo.html#a54aab1c41d2657472b4ea7c9935570c7">adjustsStack</a>())
+<a name="l00147"></a>00147     CPUBitmask |= (1 << <a class="code" href="namespacellvm.html#ab4fc31dd5f625f7f15770507c9b36aa1">getMBlazeRegisterNumbering</a>(RI.<a class="code" href="classllvm_1_1MCRegisterInfo.html#ac58ba5238412b89eed1c5703a7e81f11">getRARegister</a>()));
+<a name="l00148"></a>00148 
+<a name="l00149"></a>00149   <span class="comment">// Print CPUBitmask</span>
+<a name="l00150"></a>00150   OutStreamer.EmitRawText(<span class="stringliteral">"\t.mask\t0x"</span> + <a class="code" href="classllvm_1_1Twine.html#acaa1b3e2d07a6c9d2d7030c7dc7ec6a7">Twine::utohexstr</a>(CPUBitmask));
+<a name="l00151"></a>00151 }
+<a name="l00152"></a>00152 <span class="comment"></span>
+<a name="l00153"></a>00153 <span class="comment">/// Frame Directive</span>
+<a name="l00154"></a>00154 <span class="comment"></span><span class="keywordtype">void</span> MBlazeAsmPrinter::emitFrameDirective() {
+<a name="l00155"></a>00155   <span class="keywordflow">if</span> (!OutStreamer.hasRawTextSupport())
+<a name="l00156"></a>00156     <span class="keywordflow">return</span>;
+<a name="l00157"></a>00157 
+<a name="l00158"></a>00158   <span class="keyword">const</span> <a class="code" href="classllvm_1_1TargetRegisterInfo.html">TargetRegisterInfo</a> &RI = *TM.getRegisterInfo();
+<a name="l00159"></a>00159   <span class="keywordtype">unsigned</span> stkReg = RI.<a class="code" href="classllvm_1_1TargetRegisterInfo.html#a2a4c228322f39803f16b2f49d18b0efe" title="Debug information queries.">getFrameRegister</a>(*MF);
+<a name="l00160"></a>00160   <span class="keywordtype">unsigned</span> retReg = RI.<a class="code" href="classllvm_1_1MCRegisterInfo.html#ac58ba5238412b89eed1c5703a7e81f11">getRARegister</a>();
+<a name="l00161"></a>00161   <span class="keywordtype">unsigned</span> stkSze = MF->getFrameInfo()->getStackSize();
+<a name="l00162"></a>00162 
+<a name="l00163"></a>00163   OutStreamer.EmitRawText(<span class="stringliteral">"\t.frame\t"</span> +
+<a name="l00164"></a>00164                           <a class="code" href="classllvm_1_1Twine.html">Twine</a>(<a class="code" href="classllvm_1_1MBlazeInstPrinter.html#ae2c9b40f3c6c6188638d7b2e4fc63e22">MBlazeInstPrinter::getRegisterName</a>(stkReg)) +
+<a name="l00165"></a>00165                           <span class="stringliteral">","</span> + <a class="code" href="classllvm_1_1Twine.html">Twine</a>(stkSze) + <span class="stringliteral">","</span> +
+<a name="l00166"></a>00166                           <a class="code" href="classllvm_1_1Twine.html">Twine</a>(<a class="code" href="classllvm_1_1MBlazeInstPrinter.html#ae2c9b40f3c6c6188638d7b2e4fc63e22">MBlazeInstPrinter::getRegisterName</a>(retReg)));
+<a name="l00167"></a>00167 }
+<a name="l00168"></a>00168 
+<a name="l00169"></a>00169 <span class="keywordtype">void</span> MBlazeAsmPrinter::EmitFunctionEntryLabel() {
+<a name="l00170"></a>00170   <span class="keywordflow">if</span> (OutStreamer.hasRawTextSupport())
+<a name="l00171"></a>00171     OutStreamer.EmitRawText(<span class="stringliteral">"\t.ent\t"</span> + <a class="code" href="classllvm_1_1Twine.html">Twine</a>(CurrentFnSym->getName()));
+<a name="l00172"></a>00172   <a class="code" href="classllvm_1_1AsmPrinter.html#a6df983aaf3ac8ab3b045c0dbcd05be00">AsmPrinter::EmitFunctionEntryLabel</a>();
+<a name="l00173"></a>00173 }
+<a name="l00174"></a>00174 
+<a name="l00175"></a>00175 <span class="keywordtype">void</span> MBlazeAsmPrinter::EmitFunctionBodyStart() {
+<a name="l00176"></a>00176   <span class="keywordflow">if</span> (!OutStreamer.hasRawTextSupport())
+<a name="l00177"></a>00177     <span class="keywordflow">return</span>;
+<a name="l00178"></a>00178 
+<a name="l00179"></a>00179   emitFrameDirective();
+<a name="l00180"></a>00180   printSavedRegsBitmask();
+<a name="l00181"></a>00181 }
+<a name="l00182"></a>00182 
+<a name="l00183"></a>00183 <span class="keywordtype">void</span> MBlazeAsmPrinter::EmitFunctionBodyEnd() {
+<a name="l00184"></a>00184   <span class="keywordflow">if</span> (OutStreamer.hasRawTextSupport())
+<a name="l00185"></a>00185     OutStreamer.EmitRawText(<span class="stringliteral">"\t.end\t"</span> + <a class="code" href="classllvm_1_1Twine.html">Twine</a>(CurrentFnSym->getName()));
+<a name="l00186"></a>00186 }
+<a name="l00187"></a>00187 
+<a name="l00188"></a>00188 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00189"></a>00189 <span class="keywordtype">void</span> MBlazeAsmPrinter::EmitInstruction(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>) {
+<a name="l00190"></a>00190   <a class="code" href="classllvm_1_1MBlazeMCInstLower.html">MBlazeMCInstLower</a> MCInstLowering(OutContext, *<span class="keyword">this</span>);
+<a name="l00191"></a>00191 
+<a name="l00192"></a>00192   <a class="code" href="classllvm_1_1MCInst.html">MCInst</a> TmpInst;
+<a name="l00193"></a>00193   MCInstLowering.Lower(MI, TmpInst);
+<a name="l00194"></a>00194   OutStreamer.EmitInstruction(TmpInst);
+<a name="l00195"></a>00195 }
+<a name="l00196"></a>00196 
+<a name="l00197"></a>00197 <span class="comment">// Print out an operand for an inline asm expression.</span>
+<a name="l00198"></a>00198 <span class="keywordtype">bool</span> MBlazeAsmPrinter::
+<a name="l00199"></a>00199 PrintAsmOperand(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI, <span class="keywordtype">unsigned</span> OpNo,
+<a name="l00200"></a>00200                 <span class="keywordtype">unsigned</span> AsmVariant,<span class="keyword">const</span> <span class="keywordtype">char</span> *ExtraCode, <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O) {
+<a name="l00201"></a>00201   <span class="comment">// Does this asm operand have a single letter operand modifier?</span>
+<a name="l00202"></a>00202   <span class="keywordflow">if</span> (ExtraCode && ExtraCode[0])
+<a name="l00203"></a>00203     <span class="keywordflow">if</span> (ExtraCode[1] != 0) <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// Unknown modifier.</span>
+<a name="l00204"></a>00204 
+<a name="l00205"></a>00205     <span class="keywordflow">switch</span> (ExtraCode[0]) {
+<a name="l00206"></a>00206     <span class="keywordflow">default</span>:
+<a name="l00207"></a>00207       <span class="comment">// See if this is a generic print operand</span>
+<a name="l00208"></a>00208       <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1AsmPrinter.html#a7447ee883681c6e7d788d685c65ac47f">AsmPrinter::PrintAsmOperand</a>(MI, OpNo, AsmVariant, ExtraCode, O);
+<a name="l00209"></a>00209     }
+<a name="l00210"></a>00210 
+<a name="l00211"></a>00211   printOperand(MI, OpNo, O);
+<a name="l00212"></a>00212   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00213"></a>00213 }
+<a name="l00214"></a>00214 
+<a name="l00215"></a>00215 <span class="keywordtype">void</span> MBlazeAsmPrinter::printOperand(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI, <span class="keywordtype">int</span> opNum,
+<a name="l00216"></a>00216                                     <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O) {
+<a name="l00217"></a>00217   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &MO = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(opNum);
+<a name="l00218"></a>00218 
+<a name="l00219"></a>00219   <span class="keywordflow">switch</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#a1b63a086907e5b144612bb4266b713d6">getType</a>()) {
+<a name="l00220"></a>00220   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da99b874c6560305fd292d20f6a06da166" title="Register operand.">MachineOperand::MO_Register</a>:
+<a name="l00221"></a>00221     O << <a class="code" href="classllvm_1_1MBlazeInstPrinter.html#ae2c9b40f3c6c6188638d7b2e4fc63e22">MBlazeInstPrinter::getRegisterName</a>(MO.<a class="code" href="classllvm_1_1MachineOperand.html#ab75f703d251cc0ce0206fe00a999db86" title="getReg - Returns the register number.">getReg</a>());
+<a name="l00222"></a>00222     <span class="keywordflow">break</span>;
+<a name="l00223"></a>00223 
+<a name="l00224"></a>00224   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da066f84460d9f7b61d54b187555756ef6" title="Immediate operand.">MachineOperand::MO_Immediate</a>:
+<a name="l00225"></a>00225     O << (int32_t)MO.<a class="code" href="classllvm_1_1MachineOperand.html#a7059d68a29d5ecfb37623ab45cdb4e8d">getImm</a>();
+<a name="l00226"></a>00226     <span class="keywordflow">break</span>;
+<a name="l00227"></a>00227 
+<a name="l00228"></a>00228   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6dac4edc21072344f5aafa2a8f307c78b81" title="Floating-point immediate operand.">MachineOperand::MO_FPImmediate</a>: {
+<a name="l00229"></a>00229     <span class="keyword">const</span> <a class="code" href="classllvm_1_1ConstantFP.html">ConstantFP</a> *fp = MO.<a class="code" href="classllvm_1_1MachineOperand.html#a9d65ddc39d79d046b9153140d4b6fcf5">getFPImm</a>();
+<a name="l00230"></a>00230     <a class="code" href="MBlazeAsmPrinter_8cpp.html#a132542cb52525c4d4189e70dfc0307fc">printHex32</a>(fp-><a class="code" href="classllvm_1_1ConstantFP.html#a0f839f7633a4709c1d89e128f49b3d43">getValueAPF</a>().<a class="code" href="classllvm_1_1APFloat.html#ae98bca797c2e2ea2fb639935b01da1ae">bitcastToAPInt</a>().<a class="code" href="classllvm_1_1APInt.html#a7dc983ebf0eb2d255fa90a67063c72e2" title="Get zero extended value.">getZExtValue</a>(), O);
+<a name="l00231"></a>00231     O << <span class="stringliteral">";\t# immediate = "</span> << *fp;
+<a name="l00232"></a>00232     <span class="keywordflow">break</span>;
+<a name="l00233"></a>00233   }
+<a name="l00234"></a>00234 
+<a name="l00235"></a>00235   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da95566cb4525dab82db8cbbed3d634c23" title="MachineBasicBlock reference.">MachineOperand::MO_MachineBasicBlock</a>:
+<a name="l00236"></a>00236     O << *MO.<a class="code" href="classllvm_1_1MachineOperand.html#a3350f7760c4eec67ea7d8f3063c3d748">getMBB</a>()-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a24d0da534c4fb156547a04749b9f6468">getSymbol</a>();
+<a name="l00237"></a>00237     <span class="keywordflow">return</span>;
+<a name="l00238"></a>00238 
+<a name="l00239"></a>00239   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da3f1f6bfc5aa57cf388201bf6b8fee7d3" title="Address of a global value.">MachineOperand::MO_GlobalAddress</a>:
+<a name="l00240"></a>00240     O << *Mang->getSymbol(MO.<a class="code" href="classllvm_1_1MachineOperand.html#a0c3a2a5a49795f8750ebd02dc0e6e11e">getGlobal</a>());
+<a name="l00241"></a>00241     <span class="keywordflow">break</span>;
+<a name="l00242"></a>00242 
+<a name="l00243"></a>00243   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da9d22ed12eec3e14283ed6a3617d12119" title="Name of external global symbol.">MachineOperand::MO_ExternalSymbol</a>:
+<a name="l00244"></a>00244     O << *GetExternalSymbolSymbol(MO.<a class="code" href="classllvm_1_1MachineOperand.html#ad9456ef14a72da4e4def5d8747c41a09">getSymbolName</a>());
+<a name="l00245"></a>00245     <span class="keywordflow">break</span>;
+<a name="l00246"></a>00246 
+<a name="l00247"></a>00247   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6daa1741ad7465d81fb3020b84c390ee49d" title="Address of indexed Jump Table for switch.">MachineOperand::MO_JumpTableIndex</a>:
+<a name="l00248"></a>00248     O << MAI->getPrivateGlobalPrefix() << <span class="stringliteral">"JTI"</span> << getFunctionNumber()
+<a name="l00249"></a>00249       << <span class="charliteral">'_'</span> << MO.<a class="code" href="classllvm_1_1MachineOperand.html#ac9485ae7d6fedd71ad4460f72c799c98">getIndex</a>();
+<a name="l00250"></a>00250     <span class="keywordflow">break</span>;
+<a name="l00251"></a>00251 
+<a name="l00252"></a>00252   <span class="keywordflow">case</span> <a class="code" href="classllvm_1_1MachineOperand.html#a4da580aaf3300fdcf306f17e4a864f6da0d4fd3b1a2d5d46d77b66d5a35783580" title="Address of indexed Constant in Constant Pool.">MachineOperand::MO_ConstantPoolIndex</a>:
+<a name="l00253"></a>00253     O << MAI->getPrivateGlobalPrefix() << <span class="stringliteral">"CPI"</span>
+<a name="l00254"></a>00254       << getFunctionNumber() << <span class="stringliteral">"_"</span> << MO.<a class="code" href="classllvm_1_1MachineOperand.html#ac9485ae7d6fedd71ad4460f72c799c98">getIndex</a>();
+<a name="l00255"></a>00255     <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#ae73de4f077ea9862af9611652396202b">getOffset</a>())
+<a name="l00256"></a>00256       O << <span class="stringliteral">"+"</span> << MO.<a class="code" href="classllvm_1_1MachineOperand.html#ae73de4f077ea9862af9611652396202b">getOffset</a>();
+<a name="l00257"></a>00257     <span class="keywordflow">break</span>;
+<a name="l00258"></a>00258 
+<a name="l00259"></a>00259   <span class="keywordflow">default</span>:
+<a name="l00260"></a>00260     <a class="code" href="ErrorHandling_8h.html#ace243f5c25697a1107cce46626b3dc94">llvm_unreachable</a>(<span class="stringliteral">"<unknown operand type>"</span>);
+<a name="l00261"></a>00261   }
+<a name="l00262"></a>00262 }
+<a name="l00263"></a>00263 
+<a name="l00264"></a>00264 <span class="keywordtype">void</span> MBlazeAsmPrinter::printUnsignedImm(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI, <span class="keywordtype">int</span> opNum,
+<a name="l00265"></a>00265                                         <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O) {
+<a name="l00266"></a>00266   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &MO = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(opNum);
+<a name="l00267"></a>00267   <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#a2ac18ceda9f2857fea2e5cc4e8bf4ff5" title="isImm - Tests if this is a MO_Immediate operand.">isImm</a>())
+<a name="l00268"></a>00268     O << (uint32_t)MO.<a class="code" href="classllvm_1_1MachineOperand.html#a7059d68a29d5ecfb37623ab45cdb4e8d">getImm</a>();
+<a name="l00269"></a>00269   <span class="keywordflow">else</span>
+<a name="l00270"></a>00270     printOperand(MI, opNum, O);
+<a name="l00271"></a>00271 }
+<a name="l00272"></a>00272 
+<a name="l00273"></a>00273 <span class="keywordtype">void</span> MBlazeAsmPrinter::printFSLImm(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI, <span class="keywordtype">int</span> opNum,
+<a name="l00274"></a>00274                                    <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O) {
+<a name="l00275"></a>00275   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineOperand.html">MachineOperand</a> &MO = MI-><a class="code" href="classllvm_1_1MachineInstr.html#a302e45878c6dc1714334c7ce96d56846">getOperand</a>(opNum);
+<a name="l00276"></a>00276   <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MachineOperand.html#a2ac18ceda9f2857fea2e5cc4e8bf4ff5" title="isImm - Tests if this is a MO_Immediate operand.">isImm</a>())
+<a name="l00277"></a>00277     O << <span class="stringliteral">"rfsl"</span> << (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)MO.<a class="code" href="classllvm_1_1MachineOperand.html#a7059d68a29d5ecfb37623ab45cdb4e8d">getImm</a>();
+<a name="l00278"></a>00278   <span class="keywordflow">else</span>
+<a name="l00279"></a>00279     printOperand(MI, opNum, O);
+<a name="l00280"></a>00280 }
+<a name="l00281"></a>00281 
+<a name="l00282"></a>00282 <span class="keywordtype">void</span> MBlazeAsmPrinter::
+<a name="l00283"></a>00283 printMemOperand(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineInstr.html">MachineInstr</a> *MI, <span class="keywordtype">int</span> opNum, <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O,
+<a name="l00284"></a>00284                 <span class="keyword">const</span> <span class="keywordtype">char</span> *Modifier) {
+<a name="l00285"></a>00285   printOperand(MI, opNum, O);
+<a name="l00286"></a>00286   O << <span class="stringliteral">", "</span>;
+<a name="l00287"></a>00287   printOperand(MI, opNum+1, O);
+<a name="l00288"></a>00288 }
+<a name="l00289"></a>00289 <span class="comment"></span>
+<a name="l00290"></a>00290 <span class="comment">/// isBlockOnlyReachableByFallthough - Return true if the basic block has</span>
+<a name="l00291"></a>00291 <span class="comment">/// exactly one predecessor and the control transfer mechanism between</span>
+<a name="l00292"></a>00292 <span class="comment">/// the predecessor and this block is a fall-through.</span>
+<a name="l00293"></a>00293 <span class="comment"></span><span class="keywordtype">bool</span> MBlazeAsmPrinter::
+<a name="l00294"></a>00294 isBlockOnlyReachableByFallthrough(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *MBB)<span class="keyword"> const </span>{
+<a name="l00295"></a>00295   <span class="comment">// If this is a landing pad, it isn't a fall through.  If it has no preds,</span>
+<a name="l00296"></a>00296   <span class="comment">// then nothing falls through to it.</span>
+<a name="l00297"></a>00297   <span class="keywordflow">if</span> (MBB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a3f522ae33859d693fb5781efe690e9e6">isLandingPad</a>() || MBB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#ae1612b06274368fe13b574cbd9c4f768">pred_empty</a>())
+<a name="l00298"></a>00298     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00299"></a>00299 
+<a name="l00300"></a>00300   <span class="comment">// If there isn't exactly one predecessor, it can't be a fall through.</span>
+<a name="l00301"></a>00301   <a class="code" href="classllvm_1_1MachineBasicBlock.html#a502516f71f7824d46325d30ea41f34ba">MachineBasicBlock::const_pred_iterator</a> PI = MBB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#ab644fcf07a4c2708333cf66276282357">pred_begin</a>(), PI2 = PI;
+<a name="l00302"></a>00302   ++PI2;
+<a name="l00303"></a>00303   <span class="keywordflow">if</span> (PI2 != MBB-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a0359a738e0412c5a7ea55d61175e0661">pred_end</a>())
+<a name="l00304"></a>00304     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00305"></a>00305 
+<a name="l00306"></a>00306   <span class="comment">// The predecessor has to be immediately before this block.</span>
+<a name="l00307"></a>00307   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MachineBasicBlock.html">MachineBasicBlock</a> *Pred = *PI;
+<a name="l00308"></a>00308 
+<a name="l00309"></a>00309   <span class="keywordflow">if</span> (!Pred-><a class="code" href="classllvm_1_1MachineBasicBlock.html#a0fc7a349a4ab737607def6cb461791fd">isLayoutSuccessor</a>(MBB))
+<a name="l00310"></a>00310     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00311"></a>00311 
+<a name="l00312"></a>00312   <span class="comment">// If the block is completely empty, then it definitely does fall through.</span>
+<a name="l00313"></a>00313   <span class="keywordflow">if</span> (Pred-><a class="code" href="classllvm_1_1MachineBasicBlock.html#aa37d95a1d7bc824da0c596d8334c4ceb">empty</a>())
+<a name="l00314"></a>00314     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00315"></a>00315 
+<a name="l00316"></a>00316   <span class="comment">// Check if the last terminator is an unconditional branch.</span>
+<a name="l00317"></a>00317   <a class="code" href="classllvm_1_1MachineBasicBlock.html#a654b11787ac7c4344084d98bea7cf626">MachineBasicBlock::const_iterator</a> <a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a> = Pred-><a class="code" href="classllvm_1_1MachineBasicBlock.html#acbc921830578e2741be6549db716c0ce">end</a>();
+<a name="l00318"></a>00318   <span class="keywordflow">while</span> (I != Pred-><a class="code" href="classllvm_1_1MachineBasicBlock.html#ab2d91e7bec944efcbc39d8e30644f111">begin</a>() && !(--<a class="code" href="namespacellvm_1_1ARM__PROC.html#aac31dd660a6f18140efdd62b351cb11ba41e4a98ca287d35fab0923aa355d63a5">I</a>)->isTerminator())
+<a name="l00319"></a>00319     ; <span class="comment">// Noop</span>
+<a name="l00320"></a>00320   <span class="keywordflow">return</span> I == Pred-><a class="code" href="classllvm_1_1MachineBasicBlock.html#acbc921830578e2741be6549db716c0ce">end</a>() || !I->isBarrier();
+<a name="l00321"></a>00321 }
+<a name="l00322"></a>00322 
+<a name="l00323"></a>00323 <span class="comment">// Force static initialization.</span>
+<a name="l00324"></a><a class="code" href="MBlazeAsmPrinter_8cpp.html#a189a904ca3ab711f3872928de4e95ae1">00324</a> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> <span class="keywordtype">void</span> <a class="code" href="MBlazeAsmPrinter_8cpp.html#a189a904ca3ab711f3872928de4e95ae1">LLVMInitializeMBlazeAsmPrinter</a>() {
+<a name="l00325"></a>00325   <a class="code" href="structllvm_1_1RegisterAsmPrinter.html">RegisterAsmPrinter<MBlazeAsmPrinter></a> <a class="code" href="namespacellvm.html#a6569d00d31a5d74e563e2f39f82271ab">X</a>(<a class="code" href="namespacellvm.html#a2140a3da86d5fb3b3c7a14cb3e5ad080">TheMBlazeTarget</a>);
+<a name="l00326"></a>00326 }
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:35:43 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/MBlazeBaseInfo_8h__dep__incl.dot
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MBlazeBaseInfo_8h__dep__incl.dot?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MBlazeBaseInfo_8h__dep__incl.dot (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MBlazeBaseInfo_8h__dep__incl.dot Fri Dec 21 00:57:24 2012
@@ -0,0 +1,67 @@
+digraph G
+{
+  bgcolor="transparent";
+  edge [fontname="FreeSans",fontsize="10",labelfontname="FreeSans",labelfontsize="10"];
+  node [fontname="FreeSans",fontsize="10",shape=record];
+  Node1 [label="MBlazeBaseInfo.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="MBlazeAsmLexer.cpp",height=0.2,width=0.4,color="black",URL="$MBlazeAsmLexer_8cpp.html"];
+  Node1 -> Node3 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node3 [label="MBlazeAsmParser.cpp",height=0.2,width=0.4,color="black",URL="$MBlazeAsmParser_8cpp.html"];
+  Node1 -> Node4 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 [label="MBlaze.h",height=0.2,width=0.4,color="black",URL="$MBlaze_8h.html"];
+  Node4 -> Node5 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node5 [label="MBlazeDisassembler.cpp",height=0.2,width=0.4,color="black",URL="$MBlazeDisassembler_8cpp.html"];
+  Node4 -> Node6 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node6 [label="MBlazeInstPrinter.cpp",height=0.2,width=0.4,color="black",URL="$MBlazeInstPrinter_8cpp.html"];
+  Node4 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node7 [label="MBlazeAsmPrinter.cpp",height=0.2,width=0.4,color="black",URL="$MBlazeAsmPrinter_8cpp.html"];
+  Node4 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 [label="MBlazeInstrInfo.h",height=0.2,width=0.4,color="black",URL="$MBlazeInstrInfo_8h.html"];
+  Node8 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 [label="MBlazeTargetMachine.h",height=0.2,width=0.4,color="black",URL="$MBlazeTargetMachine_8h.html"];
+  Node9 -> Node7 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node9 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node10 [label="MBlazeDelaySlotFiller.cpp",height=0.2,width=0.4,color="black",URL="$MBlazeDelaySlotFiller_8cpp.html"];
+  Node9 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node11 [label="MBlazeInstrInfo.cpp",height=0.2,width=0.4,color="black",URL="$MBlazeInstrInfo_8cpp.html"];
+  Node9 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node12 [label="MBlazeISelDAGToDAG.cpp",height=0.2,width=0.4,color="black",URL="$MBlazeISelDAGToDAG_8cpp.html"];
+  Node9 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node13 [label="MBlazeISelLowering.cpp",height=0.2,width=0.4,color="black",URL="$MBlazeISelLowering_8cpp.html"];
+  Node9 -> Node14 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node14 [label="MBlazeSelectionDAGInfo.cpp",height=0.2,width=0.4,color="black",URL="$MBlazeSelectionDAGInfo_8cpp.html"];
+  Node9 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node15 [label="MBlazeTargetMachine.cpp",height=0.2,width=0.4,color="black",URL="$MBlazeTargetMachine_8cpp.html"];
+  Node8 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node16 [label="MBlazeFrameLowering.cpp",height=0.2,width=0.4,color="black",URL="$MBlazeFrameLowering_8cpp.html"];
+  Node8 -> Node11 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node8 -> Node17 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node17 [label="MBlazeMCInstLower.cpp",height=0.2,width=0.4,color="black",URL="$MBlazeMCInstLower_8cpp.html"];
+  Node4 -> Node18 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 [label="MBlazeRegisterInfo.h",height=0.2,width=0.4,color="black",URL="$MBlazeRegisterInfo_8h.html"];
+  Node18 -> Node8 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node18 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node19 [label="MBlazeRegisterInfo.cpp",height=0.2,width=0.4,color="black",URL="$MBlazeRegisterInfo_8cpp.html"];
+  Node18 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node20 [label="MBlazeSubtarget.cpp",height=0.2,width=0.4,color="black",URL="$MBlazeSubtarget_8cpp.html"];
+  Node4 -> Node21 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 [label="MBlazeISelLowering.h",height=0.2,width=0.4,color="black",URL="$MBlazeISelLowering_8h.html"];
+  Node21 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node21 -> Node13 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node22 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 [label="MBlazeFrameLowering.h",height=0.2,width=0.4,color="black",URL="$MBlazeFrameLowering_8h.html"];
+  Node22 -> Node9 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node22 -> Node16 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node10 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node12 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node19 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node20 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node15 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node4 -> Node23 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node23 [label="MBlazeTargetInfo.cpp",height=0.2,width=0.4,color="black",URL="$MBlazeTargetInfo_8cpp.html"];
+  Node1 -> Node24 [dir="back",color="midnightblue",fontsize="10",style="solid",fontname="FreeSans"];
+  Node24 [label="MBlazeMCCodeEmitter.cpp",height=0.2,width=0.4,color="black",URL="$MBlazeMCCodeEmitter_8cpp.html"];
+}

Added: www-releases/trunk/3.2/docs/doxygen/html/MBlazeDisassembler_8h__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MBlazeDisassembler_8h__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MBlazeDisassembler_8h__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MBlazeDisassembler_8h__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,5 @@
+<map id="G" name="G">
+<area shape="rect" href="$MCDisassembler_8h.html" title="llvm/MC/MCDisassembler.h" alt="" coords="161,84,353,111"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="107,239,291,265"/>
+<area shape="rect" href="$include_2llvm-c_2Disassembler_8h.html" title="llvm-c/Disassembler.h" alt="" coords="236,161,396,188"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/MBlazeDisassembler_8h__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MBlazeDisassembler_8h__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/MBlazeDisassembler_8h__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/MBlazeELFObjectWriter_8cpp.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MBlazeELFObjectWriter_8cpp.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MBlazeELFObjectWriter_8cpp.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MBlazeELFObjectWriter_8cpp.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,68 @@
+<!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: MBlazeELFObjectWriter.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_f975b82d147a340f2ab6ec1753ee61b7.html">MBlaze</a>      </li>
+      <li class="navelem"><a class="el" href="dir_ff89db33b3486973c60c3f7241231121.html">MCTargetDesc</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">MBlazeELFObjectWriter.cpp File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="MBlazeMCTargetDesc_8h_source.html">MCTargetDesc/MBlazeMCTargetDesc.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCELFObjectWriter_8h_source.html">llvm/MC/MCELFObjectWriter.h</a>"</code><br/>
+<code>#include "<a class="el" href="MCFixup_8h_source.html">llvm/MC/MCFixup.h</a>"</code><br/>
+<code>#include "<a class="el" href="ErrorHandling_8h_source.html">llvm/Support/ErrorHandling.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for MBlazeELFObjectWriter.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="MBlazeELFObjectWriter_8cpp__incl.png" border="0" usemap="#MBlazeELFObjectWriter_8cpp" alt=""/></div>
+<!-- MAP 0 -->
+</div>
+</div>
+<p><a href="MBlazeELFObjectWriter_8cpp_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:31 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/MBlazeFrameLowering_8cpp__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MBlazeFrameLowering_8cpp__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MBlazeFrameLowering_8cpp__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MBlazeFrameLowering_8cpp__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,48 @@
+<map id="G" name="G">
+<area shape="rect" href="$MBlazeFrameLowering_8h.html" title="MBlazeFrameLowering.h" alt="" coords="755,161,931,188"/>
+<area shape="rect" href="$MBlazeInstrInfo_8h.html" title="MBlazeInstrInfo.h" alt="" coords="627,84,757,111"/>
+<area shape="rect" href="$ErrorHandling_8h.html" title="llvm/Support/ErrorHandling.h" alt="" coords="1788,393,1993,420"/>
+<area shape="rect" href="$MachineFunction_8h.html" title="llvm/CodeGen/MachineFunction.h" alt="" coords="1647,239,1879,265"/>
+<area shape="rect" href="$MBlazeMachineFunction_8h.html" title="MBlazeMachineFunction.h" alt="" coords="2151,161,2335,188"/>
+<area shape="rect" href="$MachineFrameInfo_8h.html" title="llvm/CodeGen/MachineFrameInfo.h" alt="" coords="1963,316,2205,343"/>
+<area shape="rect" href="$MBlazeInstPrinter_8h.html" title="InstPrinter/MBlazeInstPrinter.h" alt="" coords="3827,84,4037,111"/>
+<area shape="rect" href="$Function_8h.html" title="llvm/Function.h" alt="" coords="193,239,308,265"/>
+<area shape="rect" href="$MachineInstrBuilder_8h.html" title="llvm/CodeGen/MachineInstrBuilder.h" alt="" coords="2643,161,2893,188"/>
+<area shape="rect" href="$MachineModuleInfo_8h.html" title="llvm/CodeGen/MachineModuleInfo.h" alt="" coords="3203,239,3451,265"/>
+<area shape="rect" href="$raw__ostream_8h.html" title="llvm/Support/raw_ostream.h" alt="" coords="3629,393,3829,420"/>
+<area shape="rect" href="$MachineRegisterInfo_8h.html" title="llvm/CodeGen/MachineRegisterInfo.h" alt="" coords="1180,239,1433,265"/>
+<area shape="rect" href="$DataLayout_8h.html" title="llvm/DataLayout.h" alt="" coords="2821,316,2957,343"/>
+<area shape="rect" href="$TargetOptions_8h.html" title="llvm/Target/TargetOptions.h" alt="" coords="4061,84,4256,111"/>
+<area shape="rect" href="$CommandLine_8h.html" title="llvm/Support/CommandLine.h" alt="" coords="2485,316,2696,343"/>
+<area shape="rect" href="$Debug_8h.html" title="llvm/Support/Debug.h" alt="" coords="4331,84,4491,111"/>
+<area shape="rect" href="$MBlaze_8h.html" title="MBlaze.h" alt="" coords="600,239,680,265"/>
+<area shape="rect" href="$TargetFrameLowering_8h.html" title="llvm/Target/TargetFrameLowering.h" alt="" coords="693,316,933,343"/>
+<area shape="rect" href="$MachineBasicBlock_8h.html" title="llvm/CodeGen/MachineBasicBlock.h" alt="" coords="959,393,1207,420"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="2285,471,2469,497"/>
+<area shape="rect" href="$MBlazeRegisterInfo_8h.html" title="MBlazeRegisterInfo.h" alt="" coords="288,161,440,188"/>
+<area shape="rect" href="$TargetInstrInfo_8h.html" title="llvm/Target/TargetInstrInfo.h" alt="" coords="1305,161,1500,188"/>
+<area shape="rect" href="$TargetRegisterInfo_8h.html" title="llvm/Target/TargetRegisterInfo.h" alt="" coords="400,316,619,343"/>
+<area shape="rect" href="$CallingConv_8h.html" title="llvm/CallingConv.h" alt="" coords="405,393,541,420"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="2504,471,2677,497"/>
+<area shape="rect" href="$ilist_8h.html" title="llvm/ADT/ilist.h" alt="" coords="1584,393,1699,420"/>
+<area shape="rect" href="$DebugLoc_8h.html" title="llvm/Support/DebugLoc.h" alt="" coords="2280,316,2461,343"/>
+<area shape="rect" href="$Allocator_8h.html" title="llvm/Support/Allocator.h" alt="" coords="2157,393,2331,420"/>
+<area shape="rect" href="$Recycler_8h.html" title="llvm/Support/Recycler.h" alt="" coords="1557,316,1725,343"/>
+<area shape="rect" href="$DenseMap_8h.html" title="llvm/ADT/DenseMap.h" alt="" coords="2749,393,2909,420"/>
+<area shape="rect" href="$SmallVector_8h.html" title="llvm/ADT/SmallVector.h" alt="" coords="2507,393,2675,420"/>
+<area shape="rect" href="$MCInstPrinter_8h.html" title="llvm/MC/MCInstPrinter.h" alt="" coords="3847,161,4017,188"/>
+<area shape="rect" href="$GlobalValue_8h.html" title="llvm/GlobalValue.h" alt="" coords="1800,316,1939,343"/>
+<area shape="rect" href="$BasicBlock_8h.html" title="llvm/BasicBlock.h" alt="" coords="195,316,325,343"/>
+<area shape="rect" href="$Argument_8h.html" title="llvm/Argument.h" alt="" coords="43,316,171,343"/>
+<area shape="rect" href="$Attributes_8h.html" title="llvm/Attributes.h" alt="" coords="44,393,169,420"/>
+<area shape="rect" href="$Pass_8h.html" title="llvm/Pass.h" alt="" coords="3315,393,3405,420"/>
+<area shape="rect" href="$Metadata_8h.html" title="llvm/Metadata.h" alt="" coords="3315,316,3437,343"/>
+<area shape="rect" href="$MachineLocation_8h.html" title="llvm/MC/MachineLocation.h" alt="" coords="3461,316,3656,343"/>
+<area shape="rect" href="$MCContext_8h.html" title="llvm/MC/MCContext.h" alt="" coords="2981,316,3139,343"/>
+<area shape="rect" href="$Dwarf_8h.html" title="llvm/Support/Dwarf.h" alt="" coords="3680,316,3832,343"/>
+<area shape="rect" href="$ValueHandle_8h.html" title="llvm/Support/ValueHandle.h" alt="" coords="4008,316,4205,343"/>
+<area shape="rect" href="$PointerIntPair_8h.html" title="llvm/ADT/PointerIntPair.h" alt="" coords="3429,393,3605,420"/>
+<area shape="rect" href="$SmallPtrSet_8h.html" title="llvm/ADT/SmallPtrSet.h" alt="" coords="2933,393,3101,420"/>
+<area shape="rect" href="$MachineInstrBundle_8h.html" title="llvm/CodeGen/MachineInstrBundle.h" alt="" coords="957,316,1208,343"/>
+<area shape="rect" href="$BitVector_8h.html" title="llvm/ADT/BitVector.h" alt="" coords="1232,316,1381,343"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/MBlazeISelDAGToDAG_8cpp__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MBlazeISelDAGToDAG_8cpp__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MBlazeISelDAGToDAG_8cpp__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MBlazeISelDAGToDAG_8cpp__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,46 @@
+<map id="G" name="G">
+<area shape="rect" href="$MBlaze_8h.html" title="MBlaze.h" alt="" coords="377,316,457,343"/>
+<area shape="rect" href="$ErrorHandling_8h.html" title="llvm/Support/ErrorHandling.h" alt="" coords="619,471,824,497"/>
+<area shape="rect" href="$Target_2TargetMachine_8h.html" title="llvm/Target/TargetMachine.h" alt="" coords="101,393,299,420"/>
+<area shape="rect" href="$MBlazeMachineFunction_8h.html" title="MBlazeMachineFunction.h" alt="" coords="1917,84,2101,111"/>
+<area shape="rect" href="$MachineFunction_8h.html" title="llvm/CodeGen/MachineFunction.h" alt="" coords="1611,161,1843,188"/>
+<area shape="rect" href="$MachineFrameInfo_8h.html" title="llvm/CodeGen/MachineFrameInfo.h" alt="" coords="2163,161,2405,188"/>
+<area shape="rect" href="$MBlazeRegisterInfo_8h.html" title="MBlazeRegisterInfo.h" alt="" coords="333,239,485,265"/>
+<area shape="rect" href="$MBlazeSubtarget_8h.html" title="MBlazeSubtarget.h" alt="" coords="1100,316,1244,343"/>
+<area shape="rect" href="$MBlazeTargetMachine_8h.html" title="MBlazeTargetMachine.h" alt="" coords="953,84,1124,111"/>
+<area shape="rect" href="$GlobalValue_8h.html" title="llvm/GlobalValue.h" alt="" coords="2125,84,2264,111"/>
+<area shape="rect" href="$Instructions_8h.html" title="llvm/Instructions.h" alt="" coords="2487,239,2623,265"/>
+<area shape="rect" href="$Type_8h.html" title="llvm/Type.h" alt="" coords="3040,548,3131,575"/>
+<area shape="rect" href="$Intrinsics_8h.html" title="llvm/Intrinsics.h" alt="" coords="1803,316,1923,343"/>
+<area shape="rect" href="$CFG_8h.html" title="llvm/Support/CFG.h" alt="" coords="2889,239,3033,265"/>
+<area shape="rect" href="$MachineConstantPool_8h.html" title="llvm/CodeGen/MachineConstantPool.h" alt="" coords="2531,84,2795,111"/>
+<area shape="rect" href="$MachineInstrBuilder_8h.html" title="llvm/CodeGen/MachineInstrBuilder.h" alt="" coords="1289,84,1540,111"/>
+<area shape="rect" href="$MachineRegisterInfo_8h.html" title="llvm/CodeGen/MachineRegisterInfo.h" alt="" coords="2129,239,2383,265"/>
+<area shape="rect" href="$SelectionDAGISel_8h.html" title="llvm/CodeGen/SelectionDAGISel.h" alt="" coords="2920,84,3157,111"/>
+<area shape="rect" href="$Debug_8h.html" title="llvm/Support/Debug.h" alt="" coords="3181,84,3341,111"/>
+<area shape="rect" href="$raw__ostream_8h.html" title="llvm/Support/raw_ostream.h" alt="" coords="3365,84,3565,111"/>
+<area shape="rect" href="$MBlazeBaseInfo_8h.html" title="MCTargetDesc/MBlazeBaseInfo.h" alt="" coords="424,393,653,420"/>
+<area shape="rect" href="$MBlazeMCTargetDesc_8h.html" title="MBlazeMCTargetDesc.h" alt="" coords="373,471,544,497"/>
+<area shape="rect" href="$TargetTransformImpl_8h.html" title="llvm/Target/TargetTransformImpl.h" alt="" coords="5,471,240,497"/>
+<area shape="rect" href="$DenseMap_8h.html" title="llvm/ADT/DenseMap.h" alt="" coords="1497,239,1657,265"/>
+<area shape="rect" href="$SmallVector_8h.html" title="llvm/ADT/SmallVector.h" alt="" coords="1913,471,2081,497"/>
+<area shape="rect" href="$TargetRegisterInfo_8h.html" title="llvm/Target/TargetRegisterInfo.h" alt="" coords="2048,316,2267,343"/>
+<area shape="rect" href="$ArrayRef_8h.html" title="llvm/ADT/ArrayRef.h" alt="" coords="2067,393,2211,420"/>
+<area shape="rect" href="$CallingConv_8h.html" title="llvm/CallingConv.h" alt="" coords="2271,393,2407,420"/>
+<area shape="rect" href="$TargetSubtargetInfo_8h.html" title="llvm/Target/TargetSubtargetInfo.h" alt="" coords="880,393,1112,420"/>
+<area shape="rect" href="$MCInstrItineraries_8h.html" title="llvm/MC/MCInstrItineraries.h" alt="" coords="1136,393,1333,420"/>
+<area shape="rect" href="$MBlazeInstrInfo_8h.html" title="MBlazeInstrInfo.h" alt="" coords="339,161,469,188"/>
+<area shape="rect" href="$MBlazeISelLowering_8h.html" title="MBlazeISelLowering.h" alt="" coords="977,239,1135,265"/>
+<area shape="rect" href="$MBlazeSelectionDAGInfo_8h.html" title="MBlazeSelectionDAGInfo.h" alt="" coords="693,161,883,188"/>
+<area shape="rect" href="$MBlazeIntrinsicInfo_8h.html" title="MBlazeIntrinsicInfo.h" alt="" coords="907,161,1059,188"/>
+<area shape="rect" href="$MBlazeFrameLowering_8h.html" title="MBlazeFrameLowering.h" alt="" coords="493,161,669,188"/>
+<area shape="rect" href="$TargetFrameLowering_8h.html" title="llvm/Target/TargetFrameLowering.h" alt="" coords="713,239,953,265"/>
+<area shape="rect" href="$MCStreamer_8h.html" title="llvm/MC/MCStreamer.h" alt="" coords="1611,316,1779,343"/>
+<area shape="rect" href="$DataLayout_8h.html" title="llvm/DataLayout.h" alt="" coords="1400,161,1536,188"/>
+<area shape="rect" href="$Constant_8h.html" title="llvm/Constant.h" alt="" coords="2019,161,2139,188"/>
+<area shape="rect" href="$InstrTypes_8h.html" title="llvm/InstrTypes.h" alt="" coords="3037,316,3163,343"/>
+<area shape="rect" href="$DerivedTypes_8h.html" title="llvm/DerivedTypes.h" alt="" coords="2897,471,3044,497"/>
+<area shape="rect" href="$Attributes_8h.html" title="llvm/Attributes.h" alt="" coords="2392,316,2517,343"/>
+<area shape="rect" href="$IntegersSubset_8h.html" title="llvm/Support/IntegersSubset.h" alt="" coords="2771,393,2987,420"/>
+<area shape="rect" href="$IntegersSubsetMapping_8h.html" title="llvm/Support/IntegersSubsetMapping.h" alt="" coords="2744,316,3013,343"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/MBlazeISelDAGToDAG_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MBlazeISelDAGToDAG_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MBlazeISelDAGToDAG_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MBlazeISelDAGToDAG_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,333 @@
+<!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: MBlazeISelDAGToDAG.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_f975b82d147a340f2ab6ec1753ee61b7.html">MBlaze</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">MBlazeISelDAGToDAG.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="MBlazeISelDAGToDAG_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- MBlazeISelDAGToDAG.cpp - A dag to dag inst selector for MBlaze ----===//</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 an instruction selector for the MBlaze target.</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><a class="code" href="MBlazeISelDAGToDAG_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">00014</a> <span class="preprocessor">#define DEBUG_TYPE "mblaze-isel"</span>
+<a name="l00015"></a>00015 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="MBlaze_8h.html">MBlaze.h</a>"</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include "<a class="code" href="MBlazeMachineFunction_8h.html">MBlazeMachineFunction.h</a>"</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="MBlazeRegisterInfo_8h.html">MBlazeRegisterInfo.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="MBlazeSubtarget_8h.html">MBlazeSubtarget.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="MBlazeTargetMachine_8h.html">MBlazeTargetMachine.h</a>"</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="GlobalValue_8h.html">llvm/GlobalValue.h</a>"</span>
+<a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="Instructions_8h.html">llvm/Instructions.h</a>"</span>
+<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="Intrinsics_8h.html">llvm/Intrinsics.h</a>"</span>
+<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="CFG_8h.html">llvm/Support/CFG.h</a>"</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="Type_8h.html">llvm/Type.h</a>"</span>
+<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="MachineConstantPool_8h.html">llvm/CodeGen/MachineConstantPool.h</a>"</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="MachineFunction_8h.html">llvm/CodeGen/MachineFunction.h</a>"</span>
+<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="MachineFrameInfo_8h.html">llvm/CodeGen/MachineFrameInfo.h</a>"</span>
+<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="MachineInstrBuilder_8h.html">llvm/CodeGen/MachineInstrBuilder.h</a>"</span>
+<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="MachineRegisterInfo_8h.html">llvm/CodeGen/MachineRegisterInfo.h</a>"</span>
+<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="SelectionDAGISel_8h.html">llvm/CodeGen/SelectionDAGISel.h</a>"</span>
+<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="Target_2TargetMachine_8h.html">llvm/Target/TargetMachine.h</a>"</span>
+<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="Debug_8h.html">llvm/Support/Debug.h</a>"</span>
+<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="ErrorHandling_8h.html">llvm/Support/ErrorHandling.h</a>"</span>
+<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="raw__ostream_8h.html">llvm/Support/raw_ostream.h</a>"</span>
+<a name="l00035"></a>00035 <span class="keyword">using namespace </span>llvm;
+<a name="l00036"></a>00036 
+<a name="l00037"></a>00037 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00038"></a>00038 <span class="comment">// Instruction Selector Implementation</span>
+<a name="l00039"></a>00039 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00040"></a>00040 
+<a name="l00041"></a>00041 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00042"></a>00042 <span class="comment">// MBlazeDAGToDAGISel - MBlaze specific code to select MBlaze machine</span>
+<a name="l00043"></a>00043 <span class="comment">// instructions for SelectionDAG operations.</span>
+<a name="l00044"></a>00044 <span class="comment">//===----------------------------------------------------------------------===//</span>
+<a name="l00045"></a>00045 <span class="keyword">namespace </span>{
+<a name="l00046"></a>00046 
+<a name="l00047"></a>00047 <span class="keyword">class </span>MBlazeDAGToDAGISel : <span class="keyword">public</span> <a class="code" href="classllvm_1_1SelectionDAGISel.html">SelectionDAGISel</a> {
+<a name="l00048"></a>00048 <span class="comment"></span>
+<a name="l00049"></a>00049 <span class="comment">  /// TM - Keep a reference to MBlazeTargetMachine.</span>
+<a name="l00050"></a>00050 <span class="comment"></span>  <a class="code" href="classllvm_1_1MBlazeTargetMachine.html">MBlazeTargetMachine</a> &TM;
+<a name="l00051"></a>00051 <span class="comment"></span>
+<a name="l00052"></a>00052 <span class="comment">  /// Subtarget - Keep a pointer to the MBlazeSubtarget around so that we can</span>
+<a name="l00053"></a>00053 <span class="comment">  /// make the right decision when generating code for different targets.</span>
+<a name="l00054"></a>00054 <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classllvm_1_1MBlazeSubtarget.html">MBlazeSubtarget</a> &Subtarget;
+<a name="l00055"></a>00055 
+<a name="l00056"></a>00056 <span class="keyword">public</span>:
+<a name="l00057"></a>00057   <span class="keyword">explicit</span> MBlazeDAGToDAGISel(<a class="code" href="classllvm_1_1MBlazeTargetMachine.html">MBlazeTargetMachine</a> &tm) :
+<a name="l00058"></a>00058   <a class="code" href="classllvm_1_1SelectionDAGISel.html">SelectionDAGISel</a>(tm),
+<a name="l00059"></a>00059   TM(tm), Subtarget(tm.<a class="code" href="classllvm_1_1TargetMachine.html#a5af2fed99951774b6a14d30ec6e73792">getSubtarget</a><<a class="code" href="classllvm_1_1MBlazeSubtarget.html">MBlazeSubtarget</a>>()) {}
+<a name="l00060"></a>00060 
+<a name="l00061"></a>00061   <span class="comment">// Pass Name</span>
+<a name="l00062"></a>00062   <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *getPassName()<span class="keyword"> const </span>{
+<a name="l00063"></a>00063     <span class="keywordflow">return</span> <span class="stringliteral">"MBlaze DAG->DAG Pattern Instruction Selection"</span>;
+<a name="l00064"></a>00064   }
+<a name="l00065"></a>00065 <span class="keyword">private</span>:
+<a name="l00066"></a>00066   <span class="comment">// Include the pieces autogenerated from the target description.</span>
+<a name="l00067"></a>00067 <span class="preprocessor">  #include "MBlazeGenDAGISel.inc"</span>
+<a name="l00068"></a>00068 <span class="comment"></span>
+<a name="l00069"></a>00069 <span class="comment">  /// getTargetMachine - Return a reference to the TargetMachine, casted</span>
+<a name="l00070"></a>00070 <span class="comment">  /// to the target-specific type.</span>
+<a name="l00071"></a>00071 <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classllvm_1_1MBlazeTargetMachine.html">MBlazeTargetMachine</a> &getTargetMachine() {
+<a name="l00072"></a>00072     <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="classllvm_1_1MBlazeTargetMachine.html">MBlazeTargetMachine</a> &<span class="keyword">></span>(TM);
+<a name="l00073"></a>00073   }
+<a name="l00074"></a>00074 <span class="comment"></span>
+<a name="l00075"></a>00075 <span class="comment">  /// getInstrInfo - Return a reference to the TargetInstrInfo, casted</span>
+<a name="l00076"></a>00076 <span class="comment">  /// to the target-specific type.</span>
+<a name="l00077"></a>00077 <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classllvm_1_1MBlazeInstrInfo.html">MBlazeInstrInfo</a> *getInstrInfo() {
+<a name="l00078"></a>00078     <span class="keywordflow">return</span> getTargetMachine().getInstrInfo();
+<a name="l00079"></a>00079   }
+<a name="l00080"></a>00080 
+<a name="l00081"></a>00081   <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *getGlobalBaseReg();
+<a name="l00082"></a>00082   <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *<a class="code" href="namespacellvm.html#af3ab12efdd6b4902d711e72b7a81f13b">Select</a>(<a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *<a class="code" href="regcomp_8c.html#a0240ac851181b84ac374872dc5434ee4">N</a>);
+<a name="l00083"></a>00083 
+<a name="l00084"></a>00084   <span class="comment">// Address Selection</span>
+<a name="l00085"></a>00085   <span class="keywordtype">bool</span> SelectAddrRegReg(<a class="code" href="classllvm_1_1SDValue.html">SDValue</a> N, <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> &Base, <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> &Index);
+<a name="l00086"></a>00086   <span class="keywordtype">bool</span> SelectAddrRegImm(<a class="code" href="classllvm_1_1SDValue.html">SDValue</a> N, <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> &Disp, <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> &Base);
+<a name="l00087"></a>00087 
+<a name="l00088"></a>00088   <span class="comment">// getI32Imm - Return a target constant with the specified value, of type i32.</span>
+<a name="l00089"></a>00089   <span class="keyword">inline</span> <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> getI32Imm(<span class="keywordtype">unsigned</span> Imm) {
+<a name="l00090"></a>00090     <span class="keywordflow">return</span> CurDAG->getTargetConstant(Imm, <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca04cca8bc12888d0a7238f55a6c550ad0">MVT::i32</a>);
+<a name="l00091"></a>00091   }
+<a name="l00092"></a>00092 };
+<a name="l00093"></a>00093 
+<a name="l00094"></a>00094 }
+<a name="l00095"></a>00095 <span class="comment"></span>
+<a name="l00096"></a>00096 <span class="comment">/// isIntS32Immediate - This method tests to see if the node is either a 32-bit</span>
+<a name="l00097"></a>00097 <span class="comment">/// or 64-bit immediate, and if the value can be accurately represented as a</span>
+<a name="l00098"></a>00098 <span class="comment">/// sign extension from a 32-bit value.  If so, this returns true and the</span>
+<a name="l00099"></a>00099 <span class="comment">/// immediate.</span>
+<a name="l00100"></a><a class="code" href="MBlazeISelDAGToDAG_8cpp.html#aaa81f937058dca65e08dd1c03fc6d6e5">00100</a> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="MBlazeISelDAGToDAG_8cpp.html#aaa81f937058dca65e08dd1c03fc6d6e5">isIntS32Immediate</a>(<a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *N, int32_t &Imm) {
+<a name="l00101"></a>00101   <span class="keywordtype">unsigned</span> Opc = N-><a class="code" href="classllvm_1_1SDNode.html#af0d328f3f61168f4ea7d6e4044af4f97">getOpcode</a>();
+<a name="l00102"></a>00102   <span class="keywordflow">if</span> (Opc != <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110aac2f0a84dd2aa5ee4c3f1385e9565f5e">ISD::Constant</a>)
+<a name="l00103"></a>00103     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00104"></a>00104 
+<a name="l00105"></a>00105   Imm = (int32_t)cast<ConstantSDNode>(N)->getZExtValue();
+<a name="l00106"></a>00106   <span class="keywordflow">if</span> (N-><a class="code" href="classllvm_1_1SDNode.html#aed0958deb6d25f9fdccd7518e26b50f8">getValueType</a>(0) == <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca04cca8bc12888d0a7238f55a6c550ad0">MVT::i32</a>)
+<a name="l00107"></a>00107     <span class="keywordflow">return</span> Imm == (int32_t)cast<ConstantSDNode>(N)->getZExtValue();
+<a name="l00108"></a>00108   <span class="keywordflow">else</span>
+<a name="l00109"></a>00109     <span class="keywordflow">return</span> Imm == (<a class="code" href="classint64__t.html">int64_t</a>)cast<ConstantSDNode>(N)->getZExtValue();
+<a name="l00110"></a>00110 }
+<a name="l00111"></a>00111 
+<a name="l00112"></a><a class="code" href="MBlazeISelDAGToDAG_8cpp.html#a0539b93a58669c483d314cadb647e893">00112</a> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="MBlazeISelDAGToDAG_8cpp.html#aaa81f937058dca65e08dd1c03fc6d6e5">isIntS32Immediate</a>(<a class="code" href="classllvm_1_1SDValue.html">SDValue</a> Op, int32_t &Imm) {
+<a name="l00113"></a>00113   <span class="keywordflow">return</span> <a class="code" href="MBlazeISelDAGToDAG_8cpp.html#aaa81f937058dca65e08dd1c03fc6d6e5">isIntS32Immediate</a>(Op.<a class="code" href="classllvm_1_1SDValue.html#a3fad042e27ba626acf5366c845b352d3" title="get the SDNode which holds the desired result">getNode</a>(), Imm);
+<a name="l00114"></a>00114 }
+<a name="l00115"></a>00115 
+<a name="l00116"></a>00116 <span class="comment"></span>
+<a name="l00117"></a>00117 <span class="comment">/// SelectAddressRegReg - Given the specified addressed, check to see if it</span>
+<a name="l00118"></a>00118 <span class="comment">/// can be represented as an indexed [r+r] operation.  Returns false if it</span>
+<a name="l00119"></a>00119 <span class="comment">/// can be more efficiently represented with [r+imm].</span>
+<a name="l00120"></a>00120 <span class="comment"></span><span class="keywordtype">bool</span> MBlazeDAGToDAGISel::
+<a name="l00121"></a>00121 SelectAddrRegReg(<a class="code" href="classllvm_1_1SDValue.html">SDValue</a> N, <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> &Base, <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> &Index) {
+<a name="l00122"></a>00122   <span class="keywordflow">if</span> (N.<a class="code" href="classllvm_1_1SDValue.html#a0caf6a31d8034336a9ba7791a5f583f1">getOpcode</a>() == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a4b437632fd9b97dd36010d85eb363efe">ISD::FrameIndex</a>) <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00123"></a>00123   <span class="keywordflow">if</span> (N.<a class="code" href="classllvm_1_1SDValue.html#a0caf6a31d8034336a9ba7791a5f583f1">getOpcode</a>() == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a59b314018a929255951f01f8daaae72f">ISD::TargetExternalSymbol</a> ||
+<a name="l00124"></a>00124       N.<a class="code" href="classllvm_1_1SDValue.html#a0caf6a31d8034336a9ba7791a5f583f1">getOpcode</a>() == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a87b8176af163ee944af127081d24f4a2">ISD::TargetGlobalAddress</a>)
+<a name="l00125"></a>00125     <span class="keywordflow">return</span> <span class="keyword">false</span>;  <span class="comment">// direct calls.</span>
+<a name="l00126"></a>00126 
+<a name="l00127"></a>00127   int32_t imm = 0;
+<a name="l00128"></a>00128   <span class="keywordflow">if</span> (N.<a class="code" href="classllvm_1_1SDValue.html#a0caf6a31d8034336a9ba7791a5f583f1">getOpcode</a>() == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a269996b43a1f3e1d1f84a70fd4387535" title="Simple integer binary arithmetic operators.">ISD::ADD</a> || N.<a class="code" href="classllvm_1_1SDValue.html#a0caf6a31d8034336a9ba7791a5f583f1">getOpcode</a>() == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a7415ab9f2172c59a2ee7c7a02afa56a4">ISD::OR</a>) {
+<a name="l00129"></a>00129     <span class="keywordflow">if</span> (<a class="code" href="MBlazeISelDAGToDAG_8cpp.html#aaa81f937058dca65e08dd1c03fc6d6e5">isIntS32Immediate</a>(N.<a class="code" href="classllvm_1_1SDValue.html#a5891be2cd50b5b7f01eb7c1cb0e7a682">getOperand</a>(1), imm))
+<a name="l00130"></a>00130       <span class="keywordflow">return</span> <span class="keyword">false</span>;    <span class="comment">// r+i</span>
+<a name="l00131"></a>00131 
+<a name="l00132"></a>00132     <span class="keywordflow">if</span> (N.<a class="code" href="classllvm_1_1SDValue.html#a5891be2cd50b5b7f01eb7c1cb0e7a682">getOperand</a>(0).<a class="code" href="classllvm_1_1SDValue.html#a0caf6a31d8034336a9ba7791a5f583f1">getOpcode</a>() == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a603c0651ff8c3a929c5e1d8b9a8f14cb">ISD::TargetJumpTable</a> ||
+<a name="l00133"></a>00133         N.<a class="code" href="classllvm_1_1SDValue.html#a5891be2cd50b5b7f01eb7c1cb0e7a682">getOperand</a>(1).<a class="code" href="classllvm_1_1SDValue.html#a0caf6a31d8034336a9ba7791a5f583f1">getOpcode</a>() == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a603c0651ff8c3a929c5e1d8b9a8f14cb">ISD::TargetJumpTable</a>)
+<a name="l00134"></a>00134       <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// jump tables.</span>
+<a name="l00135"></a>00135 
+<a name="l00136"></a>00136     Base = N.<a class="code" href="classllvm_1_1SDValue.html#a5891be2cd50b5b7f01eb7c1cb0e7a682">getOperand</a>(0);
+<a name="l00137"></a>00137     Index = N.<a class="code" href="classllvm_1_1SDValue.html#a5891be2cd50b5b7f01eb7c1cb0e7a682">getOperand</a>(1);
+<a name="l00138"></a>00138     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00139"></a>00139   }
+<a name="l00140"></a>00140 
+<a name="l00141"></a>00141   <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00142"></a>00142 }
+<a name="l00143"></a>00143 <span class="comment"></span>
+<a name="l00144"></a>00144 <span class="comment">/// Returns true if the address N can be represented by a base register plus</span>
+<a name="l00145"></a>00145 <span class="comment">/// a signed 32-bit displacement [r+imm], and if it is not better</span>
+<a name="l00146"></a>00146 <span class="comment">/// represented as reg+reg.</span>
+<a name="l00147"></a>00147 <span class="comment"></span><span class="keywordtype">bool</span> MBlazeDAGToDAGISel::
+<a name="l00148"></a>00148 SelectAddrRegImm(<a class="code" href="classllvm_1_1SDValue.html">SDValue</a> N, <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> &Base, <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> &Disp) {
+<a name="l00149"></a>00149   <span class="comment">// If this can be more profitably realized as r+r, fail.</span>
+<a name="l00150"></a>00150   <span class="keywordflow">if</span> (SelectAddrRegReg(N, Base, Disp))
+<a name="l00151"></a>00151     <span class="keywordflow">return</span> <span class="keyword">false</span>;
+<a name="l00152"></a>00152 
+<a name="l00153"></a>00153   <span class="keywordflow">if</span> (N.<a class="code" href="classllvm_1_1SDValue.html#a0caf6a31d8034336a9ba7791a5f583f1">getOpcode</a>() == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a269996b43a1f3e1d1f84a70fd4387535" title="Simple integer binary arithmetic operators.">ISD::ADD</a> || N.<a class="code" href="classllvm_1_1SDValue.html#a0caf6a31d8034336a9ba7791a5f583f1">getOpcode</a>() == <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a7415ab9f2172c59a2ee7c7a02afa56a4">ISD::OR</a>) {
+<a name="l00154"></a>00154     int32_t imm = 0;
+<a name="l00155"></a>00155     <span class="keywordflow">if</span> (<a class="code" href="MBlazeISelDAGToDAG_8cpp.html#aaa81f937058dca65e08dd1c03fc6d6e5">isIntS32Immediate</a>(N.<a class="code" href="classllvm_1_1SDValue.html#a5891be2cd50b5b7f01eb7c1cb0e7a682">getOperand</a>(1), imm)) {
+<a name="l00156"></a>00156       Disp = CurDAG->getTargetConstant(imm, <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca04cca8bc12888d0a7238f55a6c550ad0">MVT::i32</a>);
+<a name="l00157"></a>00157       <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1FrameIndexSDNode.html">FrameIndexSDNode</a> *FI = dyn_cast<FrameIndexSDNode>(N.<a class="code" href="classllvm_1_1SDValue.html#a5891be2cd50b5b7f01eb7c1cb0e7a682">getOperand</a>(0))) {
+<a name="l00158"></a>00158         Base = CurDAG->getTargetFrameIndex(FI->getIndex(), N.<a class="code" href="classllvm_1_1SDValue.html#a7d2ad4aa4277eb4e1138ff9791c8fbb7">getValueType</a>());
+<a name="l00159"></a>00159       } <span class="keywordflow">else</span> {
+<a name="l00160"></a>00160         Base = N.<a class="code" href="classllvm_1_1SDValue.html#a5891be2cd50b5b7f01eb7c1cb0e7a682">getOperand</a>(0);
+<a name="l00161"></a>00161       }
+<a name="l00162"></a>00162       <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// [r+i]</span>
+<a name="l00163"></a>00163     }
+<a name="l00164"></a>00164   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1ConstantSDNode.html">ConstantSDNode</a> *CN = dyn_cast<ConstantSDNode>(N)) {
+<a name="l00165"></a>00165     <span class="comment">// Loading from a constant address.</span>
+<a name="l00166"></a>00166     uint32_t Imm = CN->getZExtValue();
+<a name="l00167"></a>00167     Disp = CurDAG->getTargetConstant(Imm, CN->getValueType(0));
+<a name="l00168"></a>00168     Base = CurDAG->getRegister(MBlaze::R0, CN->getValueType(0));
+<a name="l00169"></a>00169     <span class="keywordflow">return</span> <span class="keyword">true</span>;
+<a name="l00170"></a>00170   }
+<a name="l00171"></a>00171 
+<a name="l00172"></a>00172   Disp = CurDAG->getTargetConstant(0, TM.getTargetLowering()->getPointerTy());
+<a name="l00173"></a>00173   <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1FrameIndexSDNode.html">FrameIndexSDNode</a> *FI = dyn_cast<FrameIndexSDNode>(N))
+<a name="l00174"></a>00174     Base = CurDAG->getTargetFrameIndex(FI->getIndex(), N.<a class="code" href="classllvm_1_1SDValue.html#a7d2ad4aa4277eb4e1138ff9791c8fbb7">getValueType</a>());
+<a name="l00175"></a>00175   <span class="keywordflow">else</span>
+<a name="l00176"></a>00176     Base = N;
+<a name="l00177"></a>00177   <span class="keywordflow">return</span> <span class="keyword">true</span>;      <span class="comment">// [r+0]</span>
+<a name="l00178"></a>00178 }
+<a name="l00179"></a>00179 <span class="comment"></span>
+<a name="l00180"></a>00180 <span class="comment">/// getGlobalBaseReg - Output the instructions required to put the</span>
+<a name="l00181"></a>00181 <span class="comment">/// GOT address into a register.</span>
+<a name="l00182"></a>00182 <span class="comment"></span><a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *MBlazeDAGToDAGISel::getGlobalBaseReg() {
+<a name="l00183"></a>00183   <span class="keywordtype">unsigned</span> <a class="code" href="namespacellvm_1_1PPCISD.html#a69ad64696d1df3be05f01dfb67f5bc66a9e4500d93af7f70fdff992d9d748559d">GlobalBaseReg</a> = getInstrInfo()->getGlobalBaseReg(MF);
+<a name="l00184"></a>00184   <span class="keywordflow">return</span> CurDAG->getRegister(GlobalBaseReg, TLI.getPointerTy()).getNode();
+<a name="l00185"></a>00185 }
+<a name="l00186"></a>00186 <span class="comment"></span>
+<a name="l00187"></a>00187 <span class="comment">/// Select instructions not customized! Used for</span>
+<a name="l00188"></a>00188 <span class="comment">/// expanded, promoted and normal instructions</span>
+<a name="l00189"></a>00189 <span class="comment"></span><a class="code" href="classllvm_1_1SDNode.html">SDNode</a>* <a class="code" href="namespacellvm.html#af3ab12efdd6b4902d711e72b7a81f13b">MBlazeDAGToDAGISel::Select</a>(<a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *Node) {
+<a name="l00190"></a>00190   <span class="keywordtype">unsigned</span> Opcode = Node-><a class="code" href="classllvm_1_1SDNode.html#af0d328f3f61168f4ea7d6e4044af4f97">getOpcode</a>();
+<a name="l00191"></a>00191   <a class="code" href="classllvm_1_1DebugLoc.html">DebugLoc</a> dl = Node-><a class="code" href="classllvm_1_1SDNode.html#a630d6793e4444e4996dfa80f1fce18c8" title="getDebugLoc - Return the source location info.">getDebugLoc</a>();
+<a name="l00192"></a>00192 
+<a name="l00193"></a>00193   <span class="comment">// If we have a custom node, we already have selected!</span>
+<a name="l00194"></a>00194   <span class="keywordflow">if</span> (Node-><a class="code" href="classllvm_1_1SDNode.html#a7ef138746b04be6d07091b9ba49d74da">isMachineOpcode</a>())
+<a name="l00195"></a>00195     <span class="keywordflow">return</span> NULL;
+<a name="l00196"></a>00196 <span class="comment"></span>
+<a name="l00197"></a>00197 <span class="comment">  ///</span>
+<a name="l00198"></a>00198 <span class="comment"></span>  <span class="comment">// Instruction Selection not handled by the auto-generated</span>
+<a name="l00199"></a>00199   <span class="comment">// tablegen selection should be handled here.</span><span class="comment"></span>
+<a name="l00200"></a>00200 <span class="comment">  ///</span>
+<a name="l00201"></a>00201 <span class="comment"></span>  <span class="keywordflow">switch</span> (Opcode) {
+<a name="l00202"></a>00202     <span class="keywordflow">default</span>: <span class="keywordflow">break</span>;
+<a name="l00203"></a>00203 
+<a name="l00204"></a>00204     <span class="comment">// Get target GOT address.</span>
+<a name="l00205"></a>00205     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110aaef4ead62e1835b863820f6c818c36ac" title="The address of the GOT.">ISD::GLOBAL_OFFSET_TABLE</a>:
+<a name="l00206"></a>00206       <span class="keywordflow">return</span> getGlobalBaseReg();
+<a name="l00207"></a>00207 
+<a name="l00208"></a>00208     <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110a4b437632fd9b97dd36010d85eb363efe">ISD::FrameIndex</a>: {
+<a name="l00209"></a>00209         <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> imm = CurDAG->getTargetConstant(0, <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca04cca8bc12888d0a7238f55a6c550ad0">MVT::i32</a>);
+<a name="l00210"></a>00210         <span class="keywordtype">int</span> FI = <a class="code" href="namespacellvm.html#a8d8db3a5b2508f7086ef2d43036007b3">dyn_cast</a><<a class="code" href="classllvm_1_1FrameIndexSDNode.html">FrameIndexSDNode</a>>(Node)->getIndex();
+<a name="l00211"></a>00211         <a class="code" href="structllvm_1_1EVT.html">EVT</a> VT = Node-><a class="code" href="classllvm_1_1SDNode.html#aed0958deb6d25f9fdccd7518e26b50f8">getValueType</a>(0);
+<a name="l00212"></a>00212         <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> TFI = CurDAG->getTargetFrameIndex(FI, VT);
+<a name="l00213"></a>00213         <span class="keywordtype">unsigned</span> Opc = MBlaze::ADDIK;
+<a name="l00214"></a>00214         <span class="keywordflow">if</span> (Node-><a class="code" href="classllvm_1_1SDNode.html#a52753947fce3a01b1c18dd4713c587e8">hasOneUse</a>())
+<a name="l00215"></a>00215           <span class="keywordflow">return</span> CurDAG->SelectNodeTo(Node, Opc, VT, TFI, imm);
+<a name="l00216"></a>00216         <span class="keywordflow">return</span> CurDAG->getMachineNode(Opc, dl, VT, TFI, imm);
+<a name="l00217"></a>00217     }
+<a name="l00218"></a>00218 
+<a name="l00219"></a>00219 <span class="comment"></span>
+<a name="l00220"></a>00220 <span class="comment">    /// Handle direct and indirect calls when using PIC. On PIC, when</span>
+<a name="l00221"></a>00221 <span class="comment">    /// GOT is smaller than about 64k (small code) the GA target is</span>
+<a name="l00222"></a>00222 <span class="comment">    /// loaded with only one instruction. Otherwise GA's target must</span>
+<a name="l00223"></a>00223 <span class="comment">    /// be loaded with 3 instructions.</span>
+<a name="l00224"></a>00224 <span class="comment"></span>    <span class="keywordflow">case</span> <a class="code" href="namespacellvm_1_1MBlazeISD.html#a4cbef502356ec86269d324dc7be5cbf7a61890dfa83aaea179b9063d02ed1ede0">MBlazeISD::JmpLink</a>: {
+<a name="l00225"></a>00225       <span class="keywordflow">if</span> (TM.getRelocationModel() == <a class="code" href="namespacellvm_1_1Reloc.html#af59f6dc86e80aaf56f1afd155eebf568adc2075e13a68142b26e05ac08bbfc320">Reloc::PIC_</a>) {
+<a name="l00226"></a>00226         <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> Chain  = Node-><a class="code" href="classllvm_1_1SDNode.html#a836c27481205f56e708fe0c15538d5ff">getOperand</a>(0);
+<a name="l00227"></a>00227         <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> Callee = Node-><a class="code" href="classllvm_1_1SDNode.html#a836c27481205f56e708fe0c15538d5ff">getOperand</a>(1);
+<a name="l00228"></a>00228         <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> R20Reg = CurDAG->getRegister(MBlaze::R20, <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca04cca8bc12888d0a7238f55a6c550ad0">MVT::i32</a>);
+<a name="l00229"></a>00229         <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> InFlag(0, 0);
+<a name="l00230"></a>00230 
+<a name="l00231"></a>00231         <span class="keywordflow">if</span> ((isa<GlobalAddressSDNode>(Callee)) ||
+<a name="l00232"></a>00232             (isa<ExternalSymbolSDNode>(Callee)))
+<a name="l00233"></a>00233         {<span class="comment"></span>
+<a name="l00234"></a>00234 <span class="comment">          /// Direct call for global addresses and external symbols</span>
+<a name="l00235"></a>00235 <span class="comment"></span>          <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> GPReg = CurDAG->getRegister(MBlaze::R15, <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca04cca8bc12888d0a7238f55a6c550ad0">MVT::i32</a>);
+<a name="l00236"></a>00236 
+<a name="l00237"></a>00237           <span class="comment">// Use load to get GOT target</span>
+<a name="l00238"></a>00238           <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> Ops[] = { Callee, GPReg, Chain };
+<a name="l00239"></a>00239           <a class="code" href="classllvm_1_1SDValue.html">SDValue</a> <a class="code" href="namespacellvm_1_1SPII.html#add994c36633ba2d8f6a1366b775e88a6a5069619ca8fdce305534f3fe85091a0f">Load</a> = <a class="code" href="classllvm_1_1SDValue.html">SDValue</a>(CurDAG->getMachineNode(MBlaze::LW, dl,
+<a name="l00240"></a>00240                                  <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca04cca8bc12888d0a7238f55a6c550ad0">MVT::i32</a>, <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca62a222acce6360abd2726719fabc2797">MVT::Other</a>, Ops, 3), 0);
+<a name="l00241"></a>00241           Chain = Load.<a class="code" href="classllvm_1_1SDValue.html#a040481b9bda32faa6b1435532405d88f">getValue</a>(1);
+<a name="l00242"></a>00242 
+<a name="l00243"></a>00243           <span class="comment">// Call target must be on T9</span>
+<a name="l00244"></a>00244           Chain = CurDAG->getCopyToReg(Chain, dl, R20Reg, Load, InFlag);
+<a name="l00245"></a>00245         } <span class="keywordflow">else</span><span class="comment"></span>
+<a name="l00246"></a>00246 <span class="comment">          /// Indirect call</span>
+<a name="l00247"></a>00247 <span class="comment"></span>          Chain = CurDAG->getCopyToReg(Chain, dl, R20Reg, Callee, InFlag);
+<a name="l00248"></a>00248 
+<a name="l00249"></a>00249         <span class="comment">// Emit Jump and Link Register</span>
+<a name="l00250"></a>00250         <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *ResNode = CurDAG->getMachineNode(MBlaze::BRLID, dl, <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca62a222acce6360abd2726719fabc2797">MVT::Other</a>,
+<a name="l00251"></a>00251                                                  <a class="code" href="classllvm_1_1MVT.html#afd69b4f2dff97a2d7c0192cc769ef50ca59a1908cf136662bcfdc11ed49515ca9">MVT::Glue</a>, R20Reg, Chain);
+<a name="l00252"></a>00252         Chain  = <a class="code" href="classllvm_1_1SDValue.html">SDValue</a>(ResNode, 0);
+<a name="l00253"></a>00253         InFlag = <a class="code" href="classllvm_1_1SDValue.html">SDValue</a>(ResNode, 1);
+<a name="l00254"></a>00254         ReplaceUses(<a class="code" href="classllvm_1_1SDValue.html">SDValue</a>(Node, 0), Chain);
+<a name="l00255"></a>00255         ReplaceUses(<a class="code" href="classllvm_1_1SDValue.html">SDValue</a>(Node, 1), InFlag);
+<a name="l00256"></a>00256         <span class="keywordflow">return</span> ResNode;
+<a name="l00257"></a>00257       }
+<a name="l00258"></a>00258     }
+<a name="l00259"></a>00259   }
+<a name="l00260"></a>00260 
+<a name="l00261"></a>00261   <span class="comment">// Select the default instruction</span>
+<a name="l00262"></a>00262   <a class="code" href="classllvm_1_1SDNode.html">SDNode</a> *ResNode = SelectCode(Node);
+<a name="l00263"></a>00263 
+<a name="l00264"></a>00264   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#ab8e34eca3b0817ef7a127913fbf6d9e4">errs</a>() << <span class="stringliteral">"=> "</span>);
+<a name="l00265"></a>00265   <span class="keywordflow">if</span> (ResNode == NULL || ResNode == Node)
+<a name="l00266"></a>00266     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(Node-><a class="code" href="classllvm_1_1SDNode.html#a535ca517df1b4ae62e75475141e65787" title="dump - Dump this node, for debugging.">dump</a>(CurDAG));
+<a name="l00267"></a>00267   <span class="keywordflow">else</span>
+<a name="l00268"></a>00268     <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(ResNode-><a class="code" href="classllvm_1_1SDNode.html#a535ca517df1b4ae62e75475141e65787" title="dump - Dump this node, for debugging.">dump</a>(CurDAG));
+<a name="l00269"></a>00269   <a class="code" href="Debug_8h.html#aef41e8aaf4c60819b30faf396cdf4978">DEBUG</a>(<a class="code" href="namespacellvm.html#ab8e34eca3b0817ef7a127913fbf6d9e4">errs</a>() << <span class="stringliteral">"\n"</span>);
+<a name="l00270"></a>00270   <span class="keywordflow">return</span> ResNode;
+<a name="l00271"></a>00271 }
+<a name="l00272"></a>00272 <span class="comment"></span>
+<a name="l00273"></a>00273 <span class="comment">/// createMBlazeISelDag - This pass converts a legalized DAG into a</span>
+<a name="l00274"></a>00274 <span class="comment">/// MBlaze-specific DAG, ready for instruction scheduling.</span>
+<a name="l00275"></a><a class="code" href="namespacellvm.html#a55f23752ba7ddda6f81adab78a7affba">00275</a> <span class="comment"></span><a class="code" href="classllvm_1_1FunctionPass.html">FunctionPass</a> *<a class="code" href="namespacellvm.html#a55f23752ba7ddda6f81adab78a7affba">llvm::createMBlazeISelDag</a>(<a class="code" href="classllvm_1_1MBlazeTargetMachine.html">MBlazeTargetMachine</a> &TM) {
+<a name="l00276"></a>00276   <span class="keywordflow">return</span> <span class="keyword">new</span> MBlazeDAGToDAGISel(TM);
+<a name="l00277"></a>00277 }
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:35:44 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/MBlazeISelLowering_8cpp__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MBlazeISelLowering_8cpp__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MBlazeISelLowering_8cpp__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MBlazeISelLowering_8cpp__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,48 @@
+<map id="G" name="G">
+<area shape="rect" href="$MBlazeISelLowering_8h.html" title="MBlazeISelLowering.h" alt="" coords="1063,161,1220,188"/>
+<area shape="rect" href="$ValueTypes_8h.html" title="llvm/CodeGen/ValueTypes.h" alt="" coords="1497,471,1692,497"/>
+<area shape="rect" href="$ErrorHandling_8h.html" title="llvm/Support/ErrorHandling.h" alt="" coords="1003,548,1208,575"/>
+<area shape="rect" href="$MBlazeSubtarget_8h.html" title="MBlazeSubtarget.h" alt="" coords="632,239,776,265"/>
+<area shape="rect" href="$CallingConv_8h.html" title="llvm/CallingConv.h" alt="" coords="2032,316,2168,343"/>
+<area shape="rect" href="$MBlazeMachineFunction_8h.html" title="MBlazeMachineFunction.h" alt="" coords="3468,161,3652,188"/>
+<area shape="rect" href="$MachineFunction_8h.html" title="llvm/CodeGen/MachineFunction.h" alt="" coords="3437,239,3669,265"/>
+<area shape="rect" href="$MachineFrameInfo_8h.html" title="llvm/CodeGen/MachineFrameInfo.h" alt="" coords="3744,239,3987,265"/>
+<area shape="rect" href="$MBlazeTargetMachine_8h.html" title="MBlazeTargetMachine.h" alt="" coords="1448,84,1619,111"/>
+<area shape="rect" href="$MBlazeTargetObjectFile_8h.html" title="MBlazeTargetObjectFile.h" alt="" coords="4112,84,4291,111"/>
+<area shape="rect" href="$DerivedTypes_8h.html" title="llvm/DerivedTypes.h" alt="" coords="3609,393,3756,420"/>
+<area shape="rect" href="$Function_8h.html" title="llvm/Function.h" alt="" coords="2348,161,2463,188"/>
+<area shape="rect" href="$GlobalVariable_8h.html" title="llvm/GlobalVariable.h" alt="" coords="2604,161,2759,188"/>
+<area shape="rect" href="$Intrinsics_8h.html" title="llvm/Intrinsics.h" alt="" coords="277,393,397,420"/>
+<area shape="rect" href="$CallingConvLower_8h.html" title="llvm/CodeGen/CallingConvLower.h" alt="" coords="2884,161,3119,188"/>
+<area shape="rect" href="$MachineInstrBuilder_8h.html" title="llvm/CodeGen/MachineInstrBuilder.h" alt="" coords="3143,161,3393,188"/>
+<area shape="rect" href="$MachineRegisterInfo_8h.html" title="llvm/CodeGen/MachineRegisterInfo.h" alt="" coords="4315,84,4568,111"/>
+<area shape="rect" href="$SelectionDAGISel_8h.html" title="llvm/CodeGen/SelectionDAGISel.h" alt="" coords="2036,161,2273,188"/>
+<area shape="rect" href="$Debug_8h.html" title="llvm/Support/Debug.h" alt="" coords="4592,84,4752,111"/>
+<area shape="rect" href="$raw__ostream_8h.html" title="llvm/Support/raw_ostream.h" alt="" coords="3588,471,3788,497"/>
+<area shape="rect" href="$MBlaze_8h.html" title="MBlaze.h" alt="" coords="952,239,1032,265"/>
+<area shape="rect" href="$SelectionDAG_8h.html" title="llvm/CodeGen/SelectionDAG.h" alt="" coords="1056,239,1269,265"/>
+<area shape="rect" href="$TargetLowering_8h.html" title="llvm/Target/TargetLowering.h" alt="" coords="1709,239,1909,265"/>
+<area shape="rect" href="$Target_2TargetMachine_8h.html" title="llvm/Target/TargetMachine.h" alt="" coords="1225,316,1423,343"/>
+<area shape="rect" href="$TargetTransformImpl_8h.html" title="llvm/Target/TargetTransformImpl.h" alt="" coords="1400,393,1635,420"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="3283,548,3467,575"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="3057,625,3231,652"/>
+<area shape="rect" href="$TargetSubtargetInfo_8h.html" title="llvm/Target/TargetSubtargetInfo.h" alt="" coords="45,316,277,343"/>
+<area shape="rect" href="$MCInstrItineraries_8h.html" title="llvm/MC/MCInstrItineraries.h" alt="" coords="301,316,499,343"/>
+<area shape="rect" href="$Attributes_8h.html" title="llvm/Attributes.h" alt="" coords="1883,316,2008,343"/>
+<area shape="rect" href="$DenseMap_8h.html" title="llvm/ADT/DenseMap.h" alt="" coords="2951,316,3111,343"/>
+<area shape="rect" href="$SmallVector_8h.html" title="llvm/ADT/SmallVector.h" alt="" coords="3236,316,3404,343"/>
+<area shape="rect" href="$MBlazeInstrInfo_8h.html" title="MBlazeInstrInfo.h" alt="" coords="908,161,1039,188"/>
+<area shape="rect" href="$MBlazeSelectionDAGInfo_8h.html" title="MBlazeSelectionDAGInfo.h" alt="" coords="1596,161,1785,188"/>
+<area shape="rect" href="$MBlazeIntrinsicInfo_8h.html" title="MBlazeIntrinsicInfo.h" alt="" coords="1809,161,1961,188"/>
+<area shape="rect" href="$MBlazeFrameLowering_8h.html" title="MBlazeFrameLowering.h" alt="" coords="1244,161,1420,188"/>
+<area shape="rect" href="$TargetFrameLowering_8h.html" title="llvm/Target/TargetFrameLowering.h" alt="" coords="1293,239,1533,265"/>
+<area shape="rect" href="$MCStreamer_8h.html" title="llvm/MC/MCStreamer.h" alt="" coords="3195,239,3363,265"/>
+<area shape="rect" href="$DataLayout_8h.html" title="llvm/DataLayout.h" alt="" coords="3035,239,3171,265"/>
+<area shape="rect" href="$TargetLoweringObjectFileImpl_8h.html" title="llvm/CodeGen/TargetLoweringObjectFileImpl.h" alt="" coords="4112,161,4421,188"/>
+<area shape="rect" href="$Type_8h.html" title="llvm/Type.h" alt="" coords="3473,471,3564,497"/>
+<area shape="rect" href="$GlobalValue_8h.html" title="llvm/GlobalValue.h" alt="" coords="2443,239,2581,265"/>
+<area shape="rect" href="$BasicBlock_8h.html" title="llvm/BasicBlock.h" alt="" coords="2085,239,2216,265"/>
+<area shape="rect" href="$Argument_8h.html" title="llvm/Argument.h" alt="" coords="2240,239,2368,265"/>
+<area shape="rect" href="$ilist__node_8h.html" title="llvm/ADT/ilist_node.h" alt="" coords="2623,316,2775,343"/>
+<area shape="rect" href="$OperandTraits_8h.html" title="llvm/OperandTraits.h" alt="" coords="2605,239,2757,265"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/MBlazeISelLowering_8h.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MBlazeISelLowering_8h.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MBlazeISelLowering_8h.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MBlazeISelLowering_8h.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,120 @@
+<!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: MBlazeISelLowering.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_f975b82d147a340f2ab6ec1753ee61b7.html">MBlaze</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> |
+<a href="#namespaces">Namespaces</a> |
+<a href="#enum-members">Enumerations</a> |
+<a href="#func-members">Functions</a>  </div>
+  <div class="headertitle">
+<div class="title">MBlazeISelLowering.h File Reference</div>  </div>
+</div>
+<div class="contents">
+<div class="textblock"><code>#include "<a class="el" href="MBlaze_8h_source.html">MBlaze.h</a>"</code><br/>
+<code>#include "<a class="el" href="MBlazeSubtarget_8h_source.html">MBlazeSubtarget.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="SelectionDAG_8h_source.html">llvm/CodeGen/SelectionDAG.h</a>"</code><br/>
+<code>#include "<a class="el" href="TargetLowering_8h_source.html">llvm/Target/TargetLowering.h</a>"</code><br/>
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for MBlazeISelLowering.h:</div>
+<div class="dyncontent">
+<div class="center"><img src="MBlazeISelLowering_8h__incl.png" border="0" usemap="#MBlazeISelLowering_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="MBlazeISelLowering_8h__dep__incl.png" border="0" usemap="#MBlazeISelLowering_8hdep" alt=""/></div>
+<!-- MAP 1 -->
+</div>
+</div>
+<p><a href="MBlazeISelLowering_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_1MBlazeTargetLowering.html">llvm::MBlazeTargetLowering</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_1MBlazeCC.html">llvm::MBlazeCC</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">namespace  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1MBlazeISD.html">llvm::MBlazeISD</a></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="namespacellvm_1_1MBlazeCC.html#aba42d64ed60fd2a2e8045b6d7f26958d">llvm::MBlazeCC::CC</a> { <br/>
+  <a class="el" href="namespacellvm_1_1MBlazeCC.html#aba42d64ed60fd2a2e8045b6d7f26958dacba70d93f64d47efb4536408c5b930c1">llvm::MBlazeCC::FIRST</a> =  0, 
+<a class="el" href="namespacellvm_1_1MBlazeCC.html#aba42d64ed60fd2a2e8045b6d7f26958da803e9659cf1f547193b57bfe2f1725d1">llvm::MBlazeCC::EQ</a>, 
+<a class="el" href="namespacellvm_1_1MBlazeCC.html#aba42d64ed60fd2a2e8045b6d7f26958da1deb45a5820a00f3ce575889004ec3fb">llvm::MBlazeCC::NE</a>, 
+<a class="el" href="namespacellvm_1_1MBlazeCC.html#aba42d64ed60fd2a2e8045b6d7f26958da1fc7f30e4f0d01b919e51852b6d10a29">llvm::MBlazeCC::GT</a>, 
+<br/>
+  <a class="el" href="namespacellvm_1_1MBlazeCC.html#aba42d64ed60fd2a2e8045b6d7f26958da98032688b24e60863d2dbc991a6abe54">llvm::MBlazeCC::LT</a>, 
+<a class="el" href="namespacellvm_1_1MBlazeCC.html#aba42d64ed60fd2a2e8045b6d7f26958da3f62d2091f7d8925e7b9548eacfbf367">llvm::MBlazeCC::GE</a>, 
+<a class="el" href="namespacellvm_1_1MBlazeCC.html#aba42d64ed60fd2a2e8045b6d7f26958da221153bd3e77f77d8001e49edea4677d">llvm::MBlazeCC::LE</a>
+<br/>
+ }</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1MBlazeISD.html#a4cbef502356ec86269d324dc7be5cbf7">llvm::MBlazeISD::NodeType</a> { <br/>
+  <a class="el" href="namespacellvm_1_1MBlazeISD.html#a4cbef502356ec86269d324dc7be5cbf7aea05194c2affd967451bcbffaeee92f3">llvm::MBlazeISD::FIRST_NUMBER</a> =  ISD::BUILTIN_OP_END, 
+<a class="el" href="namespacellvm_1_1MBlazeISD.html#a4cbef502356ec86269d324dc7be5cbf7a61890dfa83aaea179b9063d02ed1ede0">llvm::MBlazeISD::JmpLink</a>, 
+<a class="el" href="namespacellvm_1_1MBlazeISD.html#a4cbef502356ec86269d324dc7be5cbf7a253dc5e1116445aea8bfe6e7a4f1ee0e">llvm::MBlazeISD::GPRel</a>, 
+<a class="el" href="namespacellvm_1_1MBlazeISD.html#a4cbef502356ec86269d324dc7be5cbf7a9d8c53f67c96064e4726584031391ad1">llvm::MBlazeISD::Select_CC</a>, 
+<br/>
+  <a class="el" href="namespacellvm_1_1MBlazeISD.html#a4cbef502356ec86269d324dc7be5cbf7aa5369eef41800fa571102494951b09f7">llvm::MBlazeISD::Wrap</a>, 
+<a class="el" href="namespacellvm_1_1MBlazeISD.html#a4cbef502356ec86269d324dc7be5cbf7ac6446e23268defa36446d12ea6e205c0">llvm::MBlazeISD::ICmp</a>, 
+<a class="el" href="namespacellvm_1_1MBlazeISD.html#a4cbef502356ec86269d324dc7be5cbf7a4e52b775450b88b95f31bae9c160fe01">llvm::MBlazeISD::Ret</a>, 
+<a class="el" href="namespacellvm_1_1MBlazeISD.html#a4cbef502356ec86269d324dc7be5cbf7a7a4f0386e8e5084bf06772dbd1adf629">llvm::MBlazeISD::IRet</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">static CC </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1MBlazeCC.html#ad26dc00ca404fb8b4edb35eb66c6394c">llvm::MBlazeCC::getOppositeCondition</a> (CC cc)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classchar.html">char</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacellvm_1_1MBlazeCC.html#a398fe326fadee0197a7e2d0393c17d8e">llvm::MBlazeCC::MBlazeCCToString</a> (CC cc)</td></tr>
+</table>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:39:31 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/MBlazeISelLowering_8h__dep__incl.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MBlazeISelLowering_8h__dep__incl.png?rev=170845&view=auto
==============================================================================
Binary file - no diff available.

Propchange: www-releases/trunk/3.2/docs/doxygen/html/MBlazeISelLowering_8h__dep__incl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: www-releases/trunk/3.2/docs/doxygen/html/MBlazeInstPrinter_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MBlazeInstPrinter_8cpp_source.html?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MBlazeInstPrinter_8cpp_source.html (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MBlazeInstPrinter_8cpp_source.html Fri Dec 21 00:57:24 2012
@@ -0,0 +1,128 @@
+<!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: MBlazeInstPrinter.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_f975b82d147a340f2ab6ec1753ee61b7.html">MBlaze</a>      </li>
+      <li class="navelem"><a class="el" href="dir_2a15a6cf796d75cac59d407339e38772.html">InstPrinter</a>      </li>
+    </ul>
+  </div>
+</div>
+<div class="header">
+  <div class="headertitle">
+<div class="title">MBlazeInstPrinter.cpp</div>  </div>
+</div>
+<div class="contents">
+<a href="MBlazeInstPrinter_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//===-- MBlazeInstPrinter.cpp - Convert MBlaze MCInst to assembly syntax --===//</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 class prints an MBlaze MCInst to a .s file.</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><a class="code" href="MBlazeInstPrinter_8cpp.html#ad78e062f62e0d6e453941fb4ca843e4d">00014</a> <span class="preprocessor">#define DEBUG_TYPE "asm-printer"</span>
+<a name="l00015"></a>00015 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="MBlaze_8h.html">MBlaze.h</a>"</span>
+<a name="l00016"></a>00016 <span class="preprocessor">#include "<a class="code" href="MBlazeInstPrinter_8h.html">MBlazeInstPrinter.h</a>"</span>
+<a name="l00017"></a>00017 <span class="preprocessor">#include "<a class="code" href="MCInst_8h.html">llvm/MC/MCInst.h</a>"</span>
+<a name="l00018"></a>00018 <span class="preprocessor">#include "<a class="code" href="MCAsmInfo_8h.html">llvm/MC/MCAsmInfo.h</a>"</span>
+<a name="l00019"></a>00019 <span class="preprocessor">#include "<a class="code" href="MCExpr_8h.html">llvm/MC/MCExpr.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="FormattedStream_8h.html">llvm/Support/FormattedStream.h</a>"</span>
+<a name="l00022"></a>00022 <span class="keyword">using namespace </span>llvm;
+<a name="l00023"></a>00023 
+<a name="l00024"></a>00024 
+<a name="l00025"></a>00025 <span class="comment">// Include the auto-generated portion of the assembly writer.</span>
+<a name="l00026"></a>00026 <span class="preprocessor">#include "MBlazeGenAsmWriter.inc"</span>
+<a name="l00027"></a>00027 
+<a name="l00028"></a><a class="code" href="classllvm_1_1MBlazeInstPrinter.html#a46e8ee829b75f4f4cdf623ef5363df0b">00028</a> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MBlazeInstPrinter.html#a46e8ee829b75f4f4cdf623ef5363df0b">MBlazeInstPrinter::printInst</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCInst.html">MCInst</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>, <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O,
+<a name="l00029"></a>00029                                   <a class="code" href="classllvm_1_1StringRef.html">StringRef</a> Annot) {
+<a name="l00030"></a>00030   <a class="code" href="classllvm_1_1MBlazeInstPrinter.html#a2d92117fce8d2c52d21882c2f6e646b2">printInstruction</a>(MI, O);
+<a name="l00031"></a>00031   <a class="code" href="classllvm_1_1MCInstPrinter.html#aab90c946a08959c165433b2c125895ea" title="Utility function for printing annotations.">printAnnotation</a>(O, Annot);
+<a name="l00032"></a>00032 }
+<a name="l00033"></a>00033 
+<a name="l00034"></a><a class="code" href="classllvm_1_1MBlazeInstPrinter.html#a489ad0300f1d722507dc9bf2cdbf82c2">00034</a> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MBlazeInstPrinter.html#a489ad0300f1d722507dc9bf2cdbf82c2">MBlazeInstPrinter::printOperand</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCInst.html">MCInst</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>, <span class="keywordtype">unsigned</span> OpNo,
+<a name="l00035"></a>00035                                      <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O, <span class="keyword">const</span> <span class="keywordtype">char</span> *Modifier) {
+<a name="l00036"></a>00036   assert((Modifier == 0 || Modifier[0] == 0) && <span class="stringliteral">"No modifiers supported"</span>);
+<a name="l00037"></a>00037   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCOperand.html">MCOperand</a> &Op = MI-><a class="code" href="classllvm_1_1MCInst.html#a82523248f1c8145141a026cf3e57cf48">getOperand</a>(OpNo);
+<a name="l00038"></a>00038   <span class="keywordflow">if</span> (Op.<a class="code" href="classllvm_1_1MCOperand.html#a8951582e9d598a757b9e07e3e178c578">isReg</a>()) {
+<a name="l00039"></a>00039     O << <a class="code" href="classllvm_1_1MBlazeInstPrinter.html#ae2c9b40f3c6c6188638d7b2e4fc63e22">getRegisterName</a>(Op.<a class="code" href="classllvm_1_1MCOperand.html#a291c2118315720369e2c74913435c835" title="getReg - Returns the register number.">getReg</a>());
+<a name="l00040"></a>00040   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Op.<a class="code" href="classllvm_1_1MCOperand.html#a55eeb71ac0e60e12cb37f99e984bda81">isImm</a>()) {
+<a name="l00041"></a>00041     O << (int32_t)Op.<a class="code" href="classllvm_1_1MCOperand.html#a650484333896fc7e8485cfa30f6d7ad5">getImm</a>();
+<a name="l00042"></a>00042   } <span class="keywordflow">else</span> {
+<a name="l00043"></a>00043     assert(Op.<a class="code" href="classllvm_1_1MCOperand.html#aae789dd5c5d7cd72d506a2ee66a7053f">isExpr</a>() && <span class="stringliteral">"unknown operand kind in printOperand"</span>);
+<a name="l00044"></a>00044     O << *Op.<a class="code" href="classllvm_1_1MCOperand.html#a89ba9ada9753995d37920bd8a8c02662">getExpr</a>();
+<a name="l00045"></a>00045   }
+<a name="l00046"></a>00046 }
+<a name="l00047"></a>00047 
+<a name="l00048"></a><a class="code" href="classllvm_1_1MBlazeInstPrinter.html#a828e89f032f03026c84d615b85f8fbcc">00048</a> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MBlazeInstPrinter.html#a828e89f032f03026c84d615b85f8fbcc">MBlazeInstPrinter::printFSLImm</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCInst.html">MCInst</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>, <span class="keywordtype">int</span> OpNo,
+<a name="l00049"></a>00049                                     <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O) {
+<a name="l00050"></a>00050   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCOperand.html">MCOperand</a> &MO = MI-><a class="code" href="classllvm_1_1MCInst.html#a82523248f1c8145141a026cf3e57cf48">getOperand</a>(OpNo);
+<a name="l00051"></a>00051   <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MCOperand.html#a55eeb71ac0e60e12cb37f99e984bda81">isImm</a>())
+<a name="l00052"></a>00052     O << <span class="stringliteral">"rfsl"</span> << MO.<a class="code" href="classllvm_1_1MCOperand.html#a650484333896fc7e8485cfa30f6d7ad5">getImm</a>();
+<a name="l00053"></a>00053   <span class="keywordflow">else</span>
+<a name="l00054"></a>00054     <a class="code" href="classllvm_1_1MBlazeInstPrinter.html#a489ad0300f1d722507dc9bf2cdbf82c2">printOperand</a>(MI, OpNo, O, NULL);
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056 
+<a name="l00057"></a><a class="code" href="classllvm_1_1MBlazeInstPrinter.html#a341208d30dbdbd63c67121c19245e717">00057</a> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MBlazeInstPrinter.html#a341208d30dbdbd63c67121c19245e717">MBlazeInstPrinter::printUnsignedImm</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCInst.html">MCInst</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>, <span class="keywordtype">int</span> OpNo,
+<a name="l00058"></a>00058                                         <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O) {
+<a name="l00059"></a>00059   <span class="keyword">const</span> <a class="code" href="classllvm_1_1MCOperand.html">MCOperand</a> &MO = MI-><a class="code" href="classllvm_1_1MCInst.html#a82523248f1c8145141a026cf3e57cf48">getOperand</a>(OpNo);
+<a name="l00060"></a>00060   <span class="keywordflow">if</span> (MO.<a class="code" href="classllvm_1_1MCOperand.html#a55eeb71ac0e60e12cb37f99e984bda81">isImm</a>())
+<a name="l00061"></a>00061     O << (uint32_t)MO.<a class="code" href="classllvm_1_1MCOperand.html#a650484333896fc7e8485cfa30f6d7ad5">getImm</a>();
+<a name="l00062"></a>00062   <span class="keywordflow">else</span>
+<a name="l00063"></a>00063     <a class="code" href="classllvm_1_1MBlazeInstPrinter.html#a489ad0300f1d722507dc9bf2cdbf82c2">printOperand</a>(MI, OpNo, O, NULL);
+<a name="l00064"></a>00064 }
+<a name="l00065"></a>00065 
+<a name="l00066"></a><a class="code" href="classllvm_1_1MBlazeInstPrinter.html#ac086c4a7c98609e5b8ab1c22d3c3bb0f">00066</a> <span class="keywordtype">void</span> <a class="code" href="classllvm_1_1MBlazeInstPrinter.html#ac086c4a7c98609e5b8ab1c22d3c3bb0f">MBlazeInstPrinter::printMemOperand</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1MCInst.html">MCInst</a> *<a class="code" href="namespacellvm_1_1ARMCC.html#ac8391dd6b8083baa870dee5142ff22b6af6284b830f5e4fe2a8ddb9ff1a25ee46">MI</a>, <span class="keywordtype">int</span> OpNo,
+<a name="l00067"></a>00067                                         <a class="code" href="classllvm_1_1raw__ostream.html">raw_ostream</a> &O, <span class="keyword">const</span> <span class="keywordtype">char</span> *Modifier) {
+<a name="l00068"></a>00068   <a class="code" href="classllvm_1_1MBlazeInstPrinter.html#a489ad0300f1d722507dc9bf2cdbf82c2">printOperand</a>(MI, OpNo, O, NULL);
+<a name="l00069"></a>00069   O << <span class="stringliteral">", "</span>;
+<a name="l00070"></a>00070   <a class="code" href="classllvm_1_1MBlazeInstPrinter.html#a489ad0300f1d722507dc9bf2cdbf82c2">printOperand</a>(MI, OpNo+1, O, NULL);
+<a name="l00071"></a>00071 }
+</pre></div></div>
+</div>
+<hr>
+<p class="footer">
+Generated on Fri Dec 21 2012 00:35:44 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/MBlazeInstPrinter_8h__dep__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MBlazeInstPrinter_8h__dep__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MBlazeInstPrinter_8h__dep__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MBlazeInstPrinter_8h__dep__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,6 @@
+<map id="G" name="G">
+<area shape="rect" href="$MBlazeInstPrinter_8cpp.html" title="MBlazeInstPrinter.cpp" alt="" coords="5,84,163,111"/>
+<area shape="rect" href="$MBlazeAsmPrinter_8cpp.html" title="MBlazeAsmPrinter.cpp" alt="" coords="187,84,349,111"/>
+<area shape="rect" href="$MBlazeFrameLowering_8cpp.html" title="MBlazeFrameLowering.cpp" alt="" coords="373,84,563,111"/>
+<area shape="rect" href="$MBlazeMCTargetDesc_8cpp.html" title="MBlazeMCTargetDesc.cpp" alt="" coords="587,84,771,111"/>
+</map>

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

Added: www-releases/trunk/3.2/docs/doxygen/html/MBlazeInstrInfo_8cpp__incl.map
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/docs/doxygen/html/MBlazeInstrInfo_8cpp__incl.map?rev=170845&view=auto
==============================================================================
--- www-releases/trunk/3.2/docs/doxygen/html/MBlazeInstrInfo_8cpp__incl.map (added)
+++ www-releases/trunk/3.2/docs/doxygen/html/MBlazeInstrInfo_8cpp__incl.map Fri Dec 21 00:57:24 2012
@@ -0,0 +1,41 @@
+<map id="G" name="G">
+<area shape="rect" href="$MBlazeInstrInfo_8h.html" title="MBlazeInstrInfo.h" alt="" coords="1145,161,1276,188"/>
+<area shape="rect" href="$ErrorHandling_8h.html" title="llvm/Support/ErrorHandling.h" alt="" coords="1067,393,1272,420"/>
+<area shape="rect" href="$MBlazeTargetMachine_8h.html" title="MBlazeTargetMachine.h" alt="" coords="751,84,921,111"/>
+<area shape="rect" href="$MBlazeMachineFunction_8h.html" title="MBlazeMachineFunction.h" alt="" coords="2645,239,2829,265"/>
+<area shape="rect" href="$MachineInstrBuilder_8h.html" title="llvm/CodeGen/MachineInstrBuilder.h" alt="" coords="1769,239,2020,265"/>
+<area shape="rect" href="$MachineRegisterInfo_8h.html" title="llvm/CodeGen/MachineRegisterInfo.h" alt="" coords="2044,239,2297,265"/>
+<area shape="rect" href="$STLExtras_8h.html" title="llvm/ADT/STLExtras.h" alt="" coords="3215,393,3369,420"/>
+<area shape="rect" href="$ScoreboardHazardRecognizer_8h.html" title="llvm/CodeGen/ScoreboardHazardRecognizer.h" alt="" coords="3435,471,3749,497"/>
+<area shape="rect" href="$CommandLine_8h.html" title="llvm/Support/CommandLine.h" alt="" coords="2332,239,2543,265"/>
+<area shape="rect" href="$TargetRegistry_8h.html" title="llvm/Support/TargetRegistry.h" alt="" coords="121,161,327,188"/>
+<area shape="rect" href="$MBlaze_8h.html" title="MBlaze.h" alt="" coords="516,316,596,343"/>
+<area shape="rect" href="$MBlazeRegisterInfo_8h.html" title="MBlazeRegisterInfo.h" alt="" coords="1135,239,1287,265"/>
+<area shape="rect" href="$TargetInstrInfo_8h.html" title="llvm/Target/TargetInstrInfo.h" alt="" coords="1311,239,1505,265"/>
+<area shape="rect" href="$Target_2TargetMachine_8h.html" title="llvm/Target/TargetMachine.h" alt="" coords="457,393,655,420"/>
+<area shape="rect" href="$CodeGen_8h.html" title="llvm/Support/CodeGen.h" alt="" coords="203,471,379,497"/>
+<area shape="rect" href="$TargetTransformImpl_8h.html" title="llvm/Target/TargetTransformImpl.h" alt="" coords="403,471,637,497"/>
+<area shape="rect" href="$StringRef_8h.html" title="llvm/ADT/StringRef.h" alt="" coords="1223,471,1372,497"/>
+<area shape="rect" href="$type__traits_8h.html" title="llvm/Support/type_traits.h" alt="" coords="3004,548,3191,575"/>
+<area shape="rect" href="$DataTypes_8h.html" title="llvm/Support/DataTypes.h" alt="" coords="3220,625,3404,652"/>
+<area shape="rect" href="$TargetRegisterInfo_8h.html" title="llvm/Target/TargetRegisterInfo.h" alt="" coords="1236,316,1455,343"/>
+<area shape="rect" href="$Compiler_8h.html" title="llvm/Support/Compiler.h" alt="" coords="2340,471,2513,497"/>
+<area shape="rect" href="$MachineFunction_8h.html" title="llvm/CodeGen/MachineFunction.h" alt="" coords="1479,316,1711,343"/>
+<area shape="rect" href="$MBlazeSubtarget_8h.html" title="MBlazeSubtarget.h" alt="" coords="43,316,187,343"/>
+<area shape="rect" href="$MBlazeISelLowering_8h.html" title="MBlazeISelLowering.h" alt="" coords="452,239,609,265"/>
+<area shape="rect" href="$MBlazeSelectionDAGInfo_8h.html" title="MBlazeSelectionDAGInfo.h" alt="" coords="644,161,833,188"/>
+<area shape="rect" href="$MBlazeIntrinsicInfo_8h.html" title="MBlazeIntrinsicInfo.h" alt="" coords="857,161,1009,188"/>
+<area shape="rect" href="$MBlazeFrameLowering_8h.html" title="MBlazeFrameLowering.h" alt="" coords="783,239,959,265"/>
+<area shape="rect" href="$TargetFrameLowering_8h.html" title="llvm/Target/TargetFrameLowering.h" alt="" coords="820,316,1060,343"/>
+<area shape="rect" href="$MCStreamer_8h.html" title="llvm/MC/MCStreamer.h" alt="" coords="3353,316,3521,343"/>
+<area shape="rect" href="$DataLayout_8h.html" title="llvm/DataLayout.h" alt="" coords="2775,316,2911,343"/>
+<area shape="rect" href="$SmallVector_8h.html" title="llvm/ADT/SmallVector.h" alt="" coords="2972,393,3140,420"/>
+<area shape="rect" href="$DenseMap_8h.html" title="llvm/ADT/DenseMap.h" alt="" coords="2631,393,2791,420"/>
+<area shape="rect" href="$MachineFrameInfo_8h.html" title="llvm/CodeGen/MachineFrameInfo.h" alt="" coords="2935,316,3177,343"/>
+<area shape="rect" href="$MachineInstrBundle_8h.html" title="llvm/CodeGen/MachineInstrBundle.h" alt="" coords="1908,316,2159,343"/>
+<area shape="rect" href="$BitVector_8h.html" title="llvm/ADT/BitVector.h" alt="" coords="1735,316,1884,343"/>
+<area shape="rect" href="$IndexedMap_8h.html" title="llvm/ADT/IndexedMap.h" alt="" coords="2335,316,2505,343"/>
+<area shape="rect" href="$ScheduleHazardRecognizer_8h.html" title="llvm/CodeGen/ScheduleHazardRecognizer.h" alt="" coords="3485,548,3784,575"/>
+<area shape="rect" href="$Twine_8h.html" title="llvm/ADT/Twine.h" alt="" coords="671,316,796,343"/>
+<area shape="rect" href="$Triple_8h.html" title="llvm/ADT/Triple.h" alt="" coords="633,239,759,265"/>
+</map>

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





More information about the llvm-commits mailing list