[Bug c/42596] Integer/Floating point vector casts generate XMM register moves from and to the same register

adam at consulting dot net dot nz gcc-bugzilla@gcc.gnu.org
Sun Jan 3 23:20:00 GMT 2010



------- Comment #3 from adam at consulting dot net dot nz  2010-01-03 23:20 -------
This is a demo of poor code generation with XMM global register variables
("hardregs") and the vector extensions. Intrinsics are too low level. The
vector extensions can continue to work on a platform without x86 intrinsics
(just replace register variable definitions with, e.g., __thread variable
definitions on a foreign architecture).

test_fp_vectors_containing_fp_data() indicates that code generation can be
optimal with XMM global register variables+vector extensions. But only if the
register variables are defined as the same type as the calculation. This is not
a reasonable restriction for an XMM global register variable that has to
contain integer and/or floating point data over the lifetime of a program.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42596



More information about the Gcc-bugs mailing list