<div dir="ltr">hi,<div><br></div><div>I'm investigate long integer(128 bit or 256 bit) support on LLVM. When doing multiplication of two 128 bit integer, during the legalize type phase, LLVM will use a LibCall to implement this. When lowering the Libcall result on X86 target, it use `RetCC_X86` to assign location.</div>
<div><br></div><div>As defined in `llvm/lib/Target/X86/X86CallingConv.td`:</div><div><br></div><div>```</div><div>CCIfType<[i32], CCAssignToReg<[EAX, EDX, ECX]>><br></div><div>```</div><div><br></div><div>So, if the result 128 bit long, it can't allocate more register for this result, cause `RetCC_X86` to return true at line 173 of `/home/chouqin/workspace/llvm/lib/CodeGen/CallingConvLower.cpp`:</div>
<div><br></div><div>```</div><div>if (Fn(0, VT, VT, CCValAssign::Full, ISD::ArgFlagsTy(), *this)) {<br></div><div>```</div><div><div><br></div><div>Could please tell me how to handle this?</div><div><br></div><div><br></div>
-- <br><div dir="ltr">Qiping Li, Programmer<br><div>Email: <a href="mailto:liqiping1991@gmail.com" target="_blank">liqiping1991@gmail.com</a></div><div>Mobile: 15700080842</div></div>
</div></div>