For whatever the reason, x86 CallingConv::Fast (i.e. fastcc) was not passing scalar...
authorEvan Cheng <evan.cheng@apple.com>
Thu, 4 Sep 2008 22:59:58 +0000 (22:59 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Thu, 4 Sep 2008 22:59:58 +0000 (22:59 +0000)
commit4a03775777785ef758cff8c0699a6bf571a1f2b9
treea3e8d527e079840bf5627f2e68f73f901728eb1e
parentdeafefabae915cf20884fd829d2542f9626786e8
For whatever the reason, x86 CallingConv::Fast (i.e. fastcc) was not passing scalar arguments in registers. This patch defines a new fastcc CC which is slightly different from the FastCall CC. In addition to passing integer arguments in ECX and EDX, it also specify doubles are passed in 8-byte slots which are 8-byte aligned (instead of 4-byte aligned). This avoids a potential performance hazard where doubles span cacheline boundaries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55807 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86CallingConv.td
lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/2007-08-13-SpillerReuse.ll
test/CodeGen/X86/2008-02-22-ReMatBug.ll
test/CodeGen/X86/coalescer-commute3.ll
test/CodeGen/X86/combine-lds.ll
test/CodeGen/X86/fastcc.ll [new file with mode: 0644]