search for: wincall

Displaying 7 results from an estimated 7 matches for "wincall".

2010 Oct 20
2
[LLVMdev] llvm register reload/spilling around calls
...> XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7, XMM8, XMM9, XMM10, > XMM11, XMM12, XMM13, XMM14, XMM15, EFLAGS], > > This is the fixed list of call-clobbered registers. It should really > be controlled by the calling convention of the called function > instead. > > The WINCALL* instructions only exist because of this. Ahh I see now. I hacked this up and indeed the code looks much better. I can't force it to use win64 calling conventions right? Would do just fine for this case (much closer to a cold calling convention, I really only need 5 preserved xmm regs). Roland...
2010 Oct 20
0
[LLVMdev] llvm register reload/spilling around calls
...3, XMM4, XMM5, XMM6, XMM7, XMM8, XMM9, XMM10, >> XMM11, XMM12, XMM13, XMM14, XMM15, EFLAGS], >> >> This is the fixed list of call-clobbered registers. It should really >> be controlled by the calling convention of the called function >> instead. >> >> The WINCALL* instructions only exist because of this. > Ahh I see now. I hacked this up and indeed the code looks much better. > I can't force it to use win64 calling conventions right? No, only by targeting Windows. > Would do just fine for this case (much closer to a cold calling > conventi...
2010 Oct 20
1
[LLVMdev] llvm register reload/spilling around calls
...XMM8, XMM9, XMM10, >>> XMM11, XMM12, XMM13, XMM14, XMM15, EFLAGS], >>> >>> This is the fixed list of call-clobbered registers. It should really >>> be controlled by the calling convention of the called function >>> instead. >>> >>> The WINCALL* instructions only exist because of this. >> Ahh I see now. I hacked this up and indeed the code looks much better. >> I can't force it to use win64 calling conventions right? > > No, only by targeting Windows. > >> Would do just fine for this case (much closer to a...
2010 Oct 20
0
[LLVMdev] llvm register reload/spilling around calls
...M5, MM6, MM7, XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7, XMM8, XMM9, XMM10, XMM11, XMM12, XMM13, XMM14, XMM15, EFLAGS], This is the fixed list of call-clobbered registers. It should really be controlled by the calling convention of the called function instead. The WINCALL* instructions only exist because of this. One problem is that calling conventions are handled while building the selection DAG, and the DAG doesn't really know to represent clobbered registers. Perhaps X86TargetLowering::LowerCall() could decorate the X86ISD::CALL node with the calling conven...
2010 Oct 20
3
[LLVMdev] llvm register reload/spilling around calls
Thanks for giving it a look! On 19.10.2010 23:21, Jakob Stoklund Olesen wrote: > On Oct 19, 2010, at 11:40 AM, Roland Scheidegger wrote: > >> So I saw that the code is doing lots of register >> spilling/reloading. Now I understand that due to calling >> conventions, there's not really a way to avoid this - I tried using >> coldcc but apparently the backend
2010 Oct 20
0
[LLVMdev] llvm register reload/spilling around calls
...robably be to add separate X86ISD opcodes for > each desired set of call-clobbered registers. The problem is the large number of call-like instructions. We would need copies of CALL*, TCRETURN*, and TAILJMP* for each calling convention. I was hoping we could avoid that, and even get rid of the WINCALL instructions. What if InstrEmitter::EmitMachineNode called a target hook to add call-clobbered registers when II.isCall()? We would need some way of communicating the calling convention to the target hook. An immediate operand could work. /jakob
2010 Oct 20
4
[LLVMdev] llvm register reload/spilling around calls
On Oct 19, 2010, at 8:00 PM, Jakob Stoklund Olesen wrote: > > > One problem is that calling conventions are handled while building the selection DAG, and the DAG doesn't really know to represent clobbered registers. > > Perhaps X86TargetLowering::LowerCall() could decorate the X86ISD::CALL node with the calling convention somehow? > > Dan, do you have any thoughts on