Commit 7650b83e by Jan Hubicka Committed by Jan Hubicka

i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used for w64 ABI.

	* i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used for w64 ABI.
	* i386.c (struct ix86_frame): Add padding0 and nsseregs.
	(ix86_nsaved_regs): Count only general purpose regs.
	(ix86_nsaved_sseregs): New.
	(ix86_compute_frame_layout): Update nsseregs; set preferred alignment
	to 16 for w64; compute padding and size of sse reg save area.
	(ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only general
	purpose regs.
	(ix86_emit_save_sse_regs_using_mov): New.
	(ix86_expand_prologue): Save SSE regs if needed.
	(ix86_emit_restore_regs_using_mov): Use only general purpose regs.
	(ix86_emit_restore_sse_regs_using_mov): New.
	(ix86_expand_epilogue): Save SSE regs if needed.

Co-Authored-By: Kai Tietz <kai.tietz@onevision.com>

From-SVN: r143119
parent 9aa5c1b2
2009-01-06 Jan Hubicka <jh@suse.cz>
Kai Tietz <kai.tietz@onevision.com>
* i386.h (CONDITIONAL_CALL_USAGE): SSE regs are not used for w64 ABI.
* i386.c (struct ix86_frame): Add padding0 and nsseregs.
(ix86_nsaved_regs): Count only general purpose regs.
(ix86_nsaved_sseregs): New.
(ix86_compute_frame_layout): Update nsseregs; set preferred alignment
to 16 for w64; compute padding and size of sse reg save area.
(ix86_emit_save_regs, ix86_emit_save_regs_using_mov): Save only general
purpose regs.
(ix86_emit_save_sse_regs_using_mov): New.
(ix86_expand_prologue): Save SSE regs if needed.
(ix86_emit_restore_regs_using_mov): Use only general purpose regs.
(ix86_emit_restore_sse_regs_using_mov): New.
(ix86_expand_epilogue): Save SSE regs if needed.
2009-01-06 Jan Hubicka <jh@suse.cz>
Kai Tietz <kai.tietz@onevision.com>
* i386.h (ACCUMULATE_OUTGOING_ARGS): Enable for MSABI
* i386.c (init_cumulative_args): Disallow calls of MSABI functions when
accumulate outgoing args is off.
......
......@@ -968,8 +968,12 @@ do { \
&& ((cfun && cfun->machine->call_abi == MS_ABI) \
|| (!cfun && DEFAULT_ABI == MS_ABI))) \
{ \
int i; \
call_used_regs[4 /*RSI*/] = 0; \
call_used_regs[5 /*RDI*/] = 0; \
for (i = 0; i < 8; i++) \
call_used_regs[45+i] = 0; \
call_used_regs[27] = call_used_regs[28] = 0; \
} \
} while (0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment