[Bug target/24073] (vector float){a, b, 0, 0} code gen is not good
uros at kss-loka dot si
gcc-bugzilla@gcc.gnu.org
Tue Sep 27 11:41:00 GMT 2005
------- Additional Comments From uros at kss-loka dot si 2005-09-27 11:41 -------
I think that following example wins the contest:
vector float f(void) { return (vector float){ a, a, b, b}; }
gcc -O2 -msse -fomit-frame-pointer
subl $28, %esp
movss a, %xmm0
movss %xmm0, 4(%esp)
movss b, %xmm0
movd 4(%esp), %mm0
punpckldq %mm0, %mm0
movss %xmm0, 4(%esp)
movq %mm0, 16(%esp)
movd 4(%esp), %mm0
punpckldq %mm0, %mm0
movq %mm0, 8(%esp)
movlps 16(%esp), %xmm1
movhps 8(%esp), %xmm1
addl $28, %esp
movaps %xmm1, %xmm0
ret
Note the usage of MMX registers.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24073
More information about the Gcc-bugs
mailing list