<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:Garamond;
        panose-1:2 2 4 4 3 3 1 1 8 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">In x86 ABI terms, a result that is a vector is returned in %xmm0 (or %ymm0/%zmm0 if the size is >128 bits). All other scalar types are returned via %rax (or some
 subslice thereof).<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">The way you’re calling the function is expecting the value to be found in %rax, where the callee is trying to return it in %xmm0, which means you’re reading the
 results of some scratch register. What you’ll want to do is either use the gcc/clang vector intrinsics to get a vector type for the function call or modify the code to read/write the vectors via memory references rather than passing them as arguments/return
 values.<o:p></o:p></span></p>
<p class="MsoNormal"><a name="_MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></a></p>
<p class="MsoNormal" style="margin-left:.5in"><a name="_____replyseparator"></a><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> llvm-dev [mailto:llvm-dev-bounces@lists.llvm.org]
<b>On Behalf Of </b>Jia Yu via llvm-dev<br>
<b>Sent:</b> Monday, July 23, 2018 6:02<br>
<b>To:</b> stefan.graenitz@gmail.com<br>
<b>Cc:</b> llvm-dev@lists.llvm.org<br>
<b>Subject:</b> Re: [llvm-dev] LLVM FunctionType cannot be returned as VectorType?<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<div>
<p class="MsoNormal" style="margin-left:.5in">Hi Stefan,<o:p></o:p></p>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Thank you very much for answering my question!<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">I followed your suggestion but the function still cannot return the correct result. I also set target-feature attributes for my function. I am using LLVM 6.0.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal" style="margin-left:.5in">It only prints out some random large numbers but the correct answer is supposed to be all 0.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;margin-left:.5in">
Can you please help me figure out what's going on here? Any help will be greatly appreciated.<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal" style="margin-left:.5in;background:white">///////////////////////////////////////////////////////////////////////////////////////////<o:p></o:p></p>
</div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">My function prototype definition:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal" style="margin-left:.5in">auto vectorDataType = VectorType::get(IntegerType::getIntNTy(TheContext, 64), 4);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                    std::vector<Type *> vecArguments;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                    for (Uint64 nodeId = startOfLeaves; nodeId < numNodes; ++nodeId) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                        vecArguments.push_back(vectorDataType);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                    }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                    proto = FunctionType::get(vectorDataType,//int64*4 = __m256i<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                                              vecArguments, false);<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;margin-left:.5in">
<span style="background:white">///////////////////////////////////////////////////////////////////////////////////////////</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">The generated IR:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal" style="margin-left:.5in">define <4 x i64> @tpchq6(<4 x i64> %leaf7, <4 x i64> %leaf8, <4 x i64> %leaf9, <4 x i64> %leaf10, <4 x i64> %leaf11, <4 x i64> %leaf12, <4 x i64> %leaf13, <4 x i64> %leaf14) #0 {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">entry:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">  %addtmp = add <4 x i64> %leaf8, %leaf7<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">  %addtmp1 = add <4 x i64> %addtmp, %leaf9<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">  %addtmp4 = add <4 x i64> %addtmp1, %leaf10<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">  %addtmp2 = add <4 x i64> %addtmp4, %leaf11<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">  %addtmp3 = add <4 x i64> %addtmp2, %leaf12<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">  %addtmp5 = add <4 x i64> %addtmp3, %leaf13<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">  %addtmp6 = add <4 x i64> %addtmp5, %leaf14<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">  ret <4 x i64> %addtmp6<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">}<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal" style="margin-left:.5in;background:white">///////////////////////////////////////////////////////////////////////////////////////////<o:p></o:p></p>
</div>
<p class="MsoNormal" style="margin-left:.5in"><br>
My JIT function call:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal" style="margin-left:.5in">using VecInt = int64_t[4];<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal" style="margin-left:.5in">auto function = (int64_t *(*)(<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                            VecInt<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                            , VecInt<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                            , VecInt<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                            , VecInt<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                            , VecInt<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                            , VecInt<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                            , VecInt<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                            , VecInt<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                    ))(TheExecutionEngine->getFunctionAddress(TheFunction->getName().str()));<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">VecInt argsX = {0,0,0,0};<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">int64_t* result = function(argsX,argsX,argsX,argsX,argsX,argsX,argsX,argsX);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><span style="background:white">///////////////////////////////////////////////////////////////////////////////////////////</span><br>
My output result:<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal" style="margin-left:.5in">422162285262848 562251371602737 843692813695832 422162285262848<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;margin-left:.5in">
<span style="background:white">It only prints out some random large numbers but the correct answer is supposed to be all 0.</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;margin-left:.5in">
<span style="background:white">///////////////////////////////////////////////////////////////////////////////////////////</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Thanks,<br>
Jia<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><span style="font-family:"Garamond",serif;color:#666666">------------------------------------</span><o:p></o:p></p>
</div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:10.0pt;font-family:"Garamond",serif;color:#666666">Jia Yu,</span><o:p></o:p></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:10.0pt;font-family:"Garamond",serif;color:#666666">Ph.D. Student in </span><span style="font-family:"Garamond",serif;color:#666666">Computer Science</span><o:p></o:p></p>
<div>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<span style="font-size:10.0pt;font-family:"Garamond",serif;color:#666666"><a href="http://www.asu.edu/" target="_blank">Arizona State University</a> </span><o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
</div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal" style="margin-left:.5in">On Sun, Jul 22, 2018 at 8:51 AM Stefan Gränitz <<a href="mailto:stefan.graenitz@gmail.com">stefan.graenitz@gmail.com</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<p class="MsoNormal" style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;margin-left:.5in">
Hi Jia<br>
<br>
I don't think this is a problem with the ExecutionEngine. Your problem comes from the confusion of the "Vector Type" in LLVM IR [1] with the "std::vector" data structure in the C++ STL. While there is no direct relation between the two, you should be able to
 use a std::vector to provide the input for the <4 x i61> Vector Type by passing the std::vector's raw data [3].<br>
<br>
However, it would be easier with something like this:<br>
<br>
using VecInt = int64[4];<br>
VecInt args0 { 0, 1, 2, 3 };<br>
...<br>
VecInt result = function(args0, ...);<br>
<br>
Btw.: Note that you may need to set target-feature attributes for your function like so: [3]<br>
<br>
Hope it helps.<br>
<br>
Cheers,<br>
Stefan<br>
<br>
[1] <a href="https://llvm.org/docs/LangRef.html#vector-type" target="_blank">https://llvm.org/docs/LangRef.html#vector-type</a><br>
[2] <a href="https://en.cppreference.com/w/cpp/container/vector" target="_blank">
https://en.cppreference.com/w/cpp/container/vector</a><br>
[3] <a href="https://en.cppreference.com/w/cpp/container/vector/data" target="_blank">
https://en.cppreference.com/w/cpp/container/vector/data</a><br>
[4] <a href="https://github.com/weliveindetail/DecisionTreeCompiler/blob/master/compiler/DecisionTreeCompiler.cpp#L83" target="_blank">
https://github.com/weliveindetail/DecisionTreeCompiler/blob/master/compiler/DecisionTreeCompiler.cpp#L83</a><o:p></o:p></p>
<div>
<p class="MsoNormal" style="margin-left:.5in">Am 20.07.18 um 02:02 schrieb Jia Yu via llvm-dev:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal" style="margin-left:.5in">Dear all, <o:p></o:p></p>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">I am using LLVM C++ API to generate some code. In particular, I am dealing with AVX2 SIMD API which uses __m256i.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">My function input types a set of vectors and return type is also a vector.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">///////////////////////////////////////////////////////////////////////////////////////////<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                arguments.push_back(VectorType::get(IntegerType::getIntNTy(TheContext, 64), 4));//int64*4 = __m256i<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                FunctionType * proto = FunctionType::get(VectorType::get(IntegerType::getIntNTy(TheContext, 64), 4),//int64*4 = __m256i<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                                                         arguments, false);<o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="margin-left:.5in">///////////////////////////////////////////////////////////////////////////////////////////<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<p class="MsoNormal" style="margin-left:.5in">I can successfully use this way to produce the IR of my function properly like this:<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal" style="margin-left:.5in">///////////////////////////////////////////////////////////////////////////////////////////<o:p></o:p></p>
</div>
<div>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif;color:black">define <4 x i64> @tpchq6(<4 x i64> %leaf7, <4 x i64> %leaf8, <4 x i64> %leaf9, <4 x i64> %leaf10, <4 x i64> %leaf11, <4 x i64> %leaf12, <4 x i64> %leaf13, <4 x i64> %leaf14) {</span><o:p></o:p></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif;color:black">entry:</span><o:p></o:p></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif;color:black">  %addtmp = add <4 x i64> %leaf14, %leaf13</span><o:p></o:p></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif;color:black">  %leaf8.neg = sub <4 x i64> zeroinitializer, %leaf8</span><o:p></o:p></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif;color:black">  %xortmp = xor <4 x i64> %addtmp, %leaf11</span><o:p></o:p></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif;color:black">  %addtmp1 = add <4 x i64> %leaf8.neg, %leaf7</span><o:p></o:p></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif;color:black">  %subtmp = add <4 x i64> %addtmp1, %leaf9</span><o:p></o:p></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif;color:black">  %addtmp2 = add <4 x i64> %subtmp, %leaf10</span><o:p></o:p></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif;color:black">  %addtmp3 = add <4 x i64> %addtmp2, %xortmp</span><o:p></o:p></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif;color:black">  ret <4 x i64> %addtmp3</span><o:p></o:p></p>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif;color:black">}</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in;background:white">///////////////////////////////////////////////////////////////////////////////////////////<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<p class="MsoNormal" style="margin-left:.5in">However, when I use JIT ExectionEngine to run it, it cannot return the Vector type properly. I tried the jit execution engine with non-vector return like int64, it works fine.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">My code is as follows: It always tells me segment fault<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal" style="margin-left:.5in;background:white">///////////////////////////////////////////////////////////////////////////////////////////<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">// Define the input/output data type in LLVM function<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> typedef std::vector<int64_t> VecInt;<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal" style="margin-left:.5in">auto function = reinterpret_cast<VecInt (*)(VecInt , VecInt, VecInt, VecInt, VecInt, VecInt, VecInt, VecInt)>(TheExecutionEngine->getFunctionAddress(TheFunction->getName().str()));<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">VecInt result = function(functionCallArgs[0],functionCallArgs[1],functionCallArgs[2],functionCallArgs[3],<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">                            functionCallArgs[4],functionCallArgs[5],functionCallArgs[6],functionCallArgs[7]);<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">std::cout<<"result size "<< <span style="background:white">
result</span>.size()<<"\n";<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal" style="margin-left:.5in;background:white">///////////////////////////////////////////////////////////////////////////////////////////<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in;background:white"><o:p> </o:p></p>
</div>
<p class="MsoNormal" style="margin-left:.5in"><br>
Can someone tell me whether this is the correct way to retrieve the vector return type? Or is the vector type return supported?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Thanks,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">Jia Yu<br clear="all">
<o:p></o:p></p>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<p style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;margin-bottom:.0001pt">
<o:p> </o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;margin-left:.5in">
<o:p> </o:p></p>
<pre style="margin-left:.5in">_______________________________________________<o:p></o:p></pre>
<pre style="margin-left:.5in">LLVM Developers mailing list<o:p></o:p></pre>
<pre style="margin-left:.5in"><a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><o:p></o:p></pre>
<pre style="margin-left:.5in"><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><o:p></o:p></pre>
</blockquote>
<p class="MsoNormal" style="margin-left:.5in"><br>
<br>
<o:p></o:p></p>
<pre style="margin-left:.5in">-- <o:p></o:p></pre>
<pre style="margin-left:.5in"><a href="https://weliveindetail.github.io/blog/" target="_blank">https://weliveindetail.github.io/blog/</a><o:p></o:p></pre>
<pre style="margin-left:.5in"><a href="https://cryptup.org/pub/stefan.graenitz@gmail.com" target="_blank">https://cryptup.org/pub/stefan.graenitz@gmail.com</a><o:p></o:p></pre>
</div>
</blockquote>
</div>
</div>
</body>
</html>