[llvm-commits] [llvm] r55881 - /llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
Duncan Sands
baldrick at free.fr
Thu Sep 11 03:19:26 PDT 2008
> yes would perfectly make sense to add:
> // The first 3 float or double arguments, if the call is not a vararg
> // call and if SSE2 is available, are passed in SSE registers.
> CCIfNotVarArg<CCIfType<[f32,f64],
> CCIfSubtarget<"hasSSE2()",
> CCAssignToReg<[XMM0,XMM1,XMM2]>>>>,
>
> // Doubles get 8-byte slots that are 8-byte aligned.
> CCIfType<[f64], CCAssignToStack<8, 8>>,
>
> to CC_X86_32_TailCall.
Another difference is:
Tailcall:
// The first 3 integer arguments, if marked 'inreg' and if the call is not
// a vararg call, are passed in integer registers.
CCIfNotVarArg<CCIfInReg<CCIfType<[i32], CCAssignToReg<[EAX, EDX]>>>>,
FastCC:
// The first 2 integer arguments are passed in ECX/EDX
CCIfType<[i32], CCAssignToReg<[ECX, EDX]>>,
Ciao,
Duncan.
More information about the llvm-commits
mailing list