default.cc=cdecl

cdecl=cc
cc.cdecl.argn=stack
cc.cdecl.ret=eax

cdecl-fastcall-ms=cc
cc.cdecl-fastcall-ms.arg0=ecx
cc.cdecl-fastcall-ms.argn=stack
cc.cdecl-fastcall-ms.ret=eax

optlink=cc
cc.optlink.arg0=eax
cc.optlink.arg1=edx
cc.optlink.arg2=ecx
cc.optlink.argn=stack
cc.optlink.ret=eax

stdcall=cc
cc.stdcall.argn=stack
cc.stdcall.ret=eax

fastcall=cc
cc.fastcall.arg0=ecx
cc.fastcall.arg1=edx
cc.fastcall.argn=stack
cc.fastcall.ret=eax

borland=cc
cc.borland.ret=eax
cc.borland.arg0=eax
cc.borland.arg1=edx
cc.borland.arg2=ecx
cc.borland.argn=stack_rev

watcom=cc
cc.watcom.ret=eax
cc.watcom.arg0=eax
cc.watcom.arg1=edx
cc.watcom.arg2=ebx
cc.watcom.arg3=ecx
cc.watcom.argn=stack

pascal=cc
cc.pascal.ret=eax
cc.pascal.argn=stack_rev

# reverse argument calling convention. only for gcc and dmd, ldc2 uses normal cdecl CC
dlang=cc
cc.dlang.ret=eax
cc.dlang.ret2=edx
cc.dlang.revarg=1
cc.dlang.arg0=edi
cc.dlang.arg1=esi
cc.dlang.arg2=edx
cc.dlang.arg3=ecx
cc.dlang.arg4=r8d
cc.dlang.arg5=r9d
cc.dlang.argn=stack_rev
