[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