This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH, i386]: Determine AVX256 registers more reliably


Hello!

Attached patch uses for_each_rtx function to find AVX256 registers in
the RTX. The patch also implements better MODE_AFTER handling: we
already switched to DIRTY state if AVX256 is referenced through
MODE_NEEDED. We just force CLEAN state after vzeroupper/vzero and for
call instructions without AVX256 register returns.

2012-11-10  Uros Bizjak  <ubizjak@gmail.com>

	PR target/47440
	* config/i386/i386.c (check_avx256_stores): Remove.
	(ix86_check_avx256_register): New.
	(ix86_avx_u128_mode_needed): Use ix86_check_avx256_register.
	Check the whole RTX for 256bit registers using for_each_rtx.
	(ix86_check_avx_stores): New.
	(ix86_avx_u128_mode_after): Change mode of CALL RTX to AVX_U128_CLEAN
	if there are no 256bit registers used in the function return register.
	(ix86_avx_u128_mode_entry): Use ix86_check_avx256_register.
	(ix86_avx_u128_mode_exit): Ditto.

Patch was bootstrapped and regression tested on x86_64-pc-linux-gnu,
tested by Vladimir on SPEC2000/2006 and will be committed to mainline
SVN after a re-bootstrap.

Uros.

Attachment: p.diff.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]