李奇平
2014-Apr-26 03:35 UTC
[LLVMdev] Can't Handle LibCall Result for 128 bit Multiplication on X86_32
hi, 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. As defined in `llvm/lib/Target/X86/X86CallingConv.td`: ``` CCIfType<[i32], CCAssignToReg<[EAX, EDX, ECX]>> ``` 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`: ``` if (Fn(0, VT, VT, CCValAssign::Full, ISD::ArgFlagsTy(), *this)) { ``` Could please tell me how to handle this? -- Qiping Li, Programmer Email: liqiping1991 at gmail.com Mobile: 15700080842 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140426/d8fbc71d/attachment.html>