<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:Arial;
        color:windowtext;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Hola LLVMers,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>I’m looking to make use of the vectorization primitives
in the Intel chip with the code we generate from LLVM and so I’ve started
experimenting with it.  What is the state of the machine code generated
for vectors?  In my tinkering, I seem to be getting some wonky machine
instructions, but I’m most likely just doing something wrong and I’m
hoping you can set me in the correct course.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>My minimal function creates a float4 vector with a specified
scalar in all the elements.  It then extracts the third element and
returns it. <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>We are currently using the JIT and I’m currently
synced to about a week after the 2.0 branch, so I’m admittedly stale by
about a month.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>In LLVM IR:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>; ModuleID = 'test vectors'<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>define float @vSelect3(float %x) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>body:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>        %pv = alloca
<4 x
float>               
; <<4 x float>*> [#uses=1]<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>        %v = load <4 x
float>*
%pv             
; <<4 x float>> [#uses=1]<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>        %v1 =
insertelement <4 x float> %v, float %x, i32
0             ;
<<4 x<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>float>> [#uses=1]<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>        %v2 =
insertelement <4 x float> %v1, float %x, i32
1            ; <<4
x<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>float>> [#uses=1]<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>        %v3 =
insertelement <4 x float> %v2, float %x, i32
2            ; <<4
x<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>float>> [#uses=1]<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>        %v4 =
insertelement <4 x float> %v3, float %x, i32 3           
; <<4 x<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>float>> [#uses=1]<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>        %s =
extractelement <4 x float> %v4, i32
3             
; <float> [#uses<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>=1]<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>        ret float %s<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>In Intel assembly, I get the following:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=1 color=gray face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New";color:gray'>00000000`01b80010
83ec20         
sub     esp,20h<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=gray face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New";color:gray'>00000000`01b80013
f30f10442424    movss   xmm0,dword ptr [esp+24h]  
</span></font><font size=1 color=gray face=Wingdings><span style='font-size:
8.0pt;font-family:Wingdings;color:gray'>ß</span></font><font size=1
color=gray face="Courier New"><span style='font-size:8.0pt;font-family:"Courier New";
color:gray'> </span></font><font size=1 face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New"'>this loads x into the low
float of xmm0<font color=gray><span style='color:gray'><o:p></o:p></span></font></span></font></p>

<p class=MsoNormal><font size=1 color=gray face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New";color:gray'>00000000`01b80019
0f284c2404      movaps  xmm1,xmmword ptr [esp+4]  
</span></font><font size=1 color=gray face=Wingdings><span style='font-size:
8.0pt;font-family:Wingdings;color:gray'>ß</span></font><font size=1
color=gray face="Courier New"><span style='font-size:8.0pt;font-family:"Courier New";
color:gray'> </span></font><font size=1 color=red face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New";color:red'>this seg faults
because esp+4 isn’t 16-byte aligned<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:8.0pt;
font-family:"Courier New"'>What is that line trying to achieve?  X is at
[esp+24].  There weren’t any other parameters.  <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=gray face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New";color:gray'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=1 color=gray face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New";color:gray'>00000000`01b8001e
f30f10c8        movss   xmm1,xmm0<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=gray face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New";color:gray'>00000000`01b80022
8b442424        mov    
eax,dword ptr [esp+24h]<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=gray face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New";color:gray'>00000000`01b80026
660fc4c802      pinsrw  xmm1,eax,2<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=gray face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New";color:gray'>00000000`01b8002b
89c1           
mov     ecx,eax<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=gray face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New";color:gray'>00000000`01b8002d
c1e910         
shr     ecx,10h<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=gray face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New";color:gray'>00000000`01b80030
660fc4c903      pinsrw  xmm1,ecx,3<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=gray face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New";color:gray'>00000000`01b80035
660fc4c804      pinsrw  xmm1,eax,4<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=gray face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New";color:gray'>00000000`01b8003a
660fc4c905      pinsrw  xmm1,ecx,5<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=gray face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New";color:gray'>00000000`01b8003f
660fc4c806      pinsrw  xmm1,eax,6<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=gray face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New";color:gray'>00000000`01b80044
660fc4c907      pinsrw  xmm1,ecx,7<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=gray face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New";color:gray'>00000000`01b80049
0fc6c903        shufps  xmm1,xmm1,3<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=gray face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New";color:gray'>00000000`01b8004d
f30f110c24      movss   dword ptr [esp],xmm1<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=gray face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New";color:gray'>00000000`01b80052
d90424         
fld     dword ptr [esp]<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=gray face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New";color:gray'>00000000`01b80055
83c420         
add     esp,20h<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=gray face="Courier New"><span
style='font-size:8.0pt;font-family:"Courier New";color:gray'>00000000`01b80058
c3             
ret<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>The code used to generate and run the program was:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>#include</span></font><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'> <font color=maroon><span
style='color:maroon'>"llvm/Module.h"<o:p></o:p></span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>#include</span></font><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'> <font color=maroon><span
style='color:maroon'>"llvm/DerivedTypes.h"<o:p></o:p></span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>#include</span></font><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'> <font color=maroon><span
style='color:maroon'>"llvm/Constants.h"<o:p></o:p></span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>#include</span></font><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'> <font color=maroon><span
style='color:maroon'>"llvm/Instructions.h"<o:p></o:p></span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>#include</span></font><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'> <font color=maroon><span
style='color:maroon'>"llvm/ModuleProvider.h"<o:p></o:p></span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>#include</span></font><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'> <font color=maroon><span
style='color:maroon'>"llvm/Analysis/Verifier.h"<o:p></o:p></span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>#include</span></font><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'> <font color=maroon><span
style='color:maroon'>"llvm/System/DynamicLibrary.h"<o:p></o:p></span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>#include</span></font><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'> <font color=maroon><span
style='color:maroon'>"llvm/ExecutionEngine/JIT.h"<o:p></o:p></span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>#include</span></font><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'> <font color=maroon><span
style='color:maroon'>"llvm/ExecutionEngine/Interpreter.h"<o:p></o:p></span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>#include</span></font><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'> <font color=maroon><span
style='color:maroon'>"llvm/ExecutionEngine/GenericValue.h"<o:p></o:p></span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>#include</span></font><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'> <font color=maroon><span
style='color:maroon'>"llvm/Support/ManagedStatic.h"<o:p></o:p></span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>#include</span></font><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'> <font color=maroon><span
style='color:maroon'><iostream><o:p></o:p></span></font></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>using</span></font><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'> <font color=blue><span
style='color:blue'>namespace</span></font> llvm;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>Value* makeVector(Value* s, <font
color=blue><span style='color:blue'>unsigned</span></font> <font color=blue><span
style='color:blue'>int</span></font> dim, BasicBlock* basicBlock)<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>{<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>   
AllocaInst* pV = <font color=blue><span style='color:blue'>new</span></font>
AllocaInst(VectorType::get(Type::FloatTy,dim),<font color=maroon><span
style='color:maroon'>"pv"</span></font>,basicBlock);<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>    Value* v
= <font color=blue><span style='color:blue'>new</span></font> LoadInst(pV,<font
color=maroon><span style='color:maroon'>"v"</span></font>,basicBlock);<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>    <font
color=blue><span style='color:blue'>for</span></font> (<font color=blue><span
style='color:blue'>unsigned</span></font> <font color=blue><span
style='color:blue'>int</span></font> i = 0 ; i < dim ; ++i)<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>       
v = <font color=blue><span style='color:blue'>new</span></font>
InsertElementInst(v,s,i,<font color=maroon><span style='color:maroon'>"v"</span></font>,basicBlock);<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>    <font
color=blue><span style='color:blue'>return</span></font> v;<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>}<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>Function*
generateVectorAndSelect(Module* pModule)<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>{<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>   
std::vector<Type <font color=blue><span style='color:blue'>const</span></font>*>
params;<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>   
params.push_back(Type::FloatTy);<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>   
FunctionType* funcType = FunctionType::get(Type::FloatTy,params,NULL);<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>    Function*
func = cast<Function>(pModule->getOrInsertFunction(<font color=maroon><span
style='color:maroon'>"vSelect3"</span></font>,funcType));<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>   
BasicBlock* basicBlock = <font color=blue><span style='color:blue'>new</span></font>
BasicBlock(<font color=maroon><span style='color:maroon'>"body"</span></font>,func);<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>   
Function::arg_iterator args = func->arg_begin();<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>    Argument*
x = args;<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>   
x->setName(<font color=maroon><span style='color:maroon'>"x"</span></font>);<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>    <o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>    Value* v1
= makeVector(x,4,basicBlock);<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>    <o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>    Value* s
= <font color=blue><span style='color:blue'>new</span></font>
ExtractElementInst(v1,3,<font color=maroon><span style='color:maroon'>"s"</span></font>,basicBlock);<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>    <font
color=blue><span style='color:blue'>new</span></font> ReturnInst(s,basicBlock);<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>    <font
color=blue><span style='color:blue'>return</span></font> func;<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>}<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>// modified from the
fibonacci example<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=blue
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:blue'>int</span></font><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'> main(<font color=blue><span
style='color:blue'>int</span></font> argc, <font color=blue><span
style='color:blue'>char</span></font> **argv) <o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>{<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>    Module*
pVectorModule = <font color=blue><span style='color:blue'>new</span></font>
Module(<font color=maroon><span style='color:maroon'>"test vectors"</span></font>);<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>    Function*
pMain = generateVectorAndSelect(pVectorModule);<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>   
pVectorModule->print(std::cout);<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>   
GenericValue gv1, gv2, gvR;<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>   
gv1.FloatVal = 2.0f;<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>   
ExistingModuleProvider *pMP = <font color=blue><span style='color:blue'>new</span></font>
ExistingModuleProvider(pVectorModule);<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>   
pMP->getModule()->setDataLayout(<font color=maroon><span
style='color:maroon'>"e-p:32:32:32-i1:8:8:8-i8:8:8:8-i32:32:32:32-f32:32:32:32"</span></font>);<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>   
ExecutionEngine *pEE = ExecutionEngine::create(pMP, <font color=blue><span
style='color:blue'>false</span></font>);<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>   
std::vector<GenericValue> args;<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>   
args.push_back(gv1);<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>   
GenericValue result = pEE->runFunction(pMain, args);<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>    <font
color=blue><span style='color:blue'>return</span></font> 0;<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'>}<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Any help would be appreciated.  <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>.  <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Thanks,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Chuck.</span></font><font size=2 face=Arial><span
style='font-size:10.0pt;font-family:Arial'><o:p></o:p></span></font></p>

</div>

</body>

</html>