This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/24073] New: (vector float){a, b, 0, 0} code gen is not good
- From: "pinskia at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 27 Sep 2005 04:06:11 -0000
- Subject: [Bug target/24073] New: (vector float){a, b, 0, 0} code gen is not good
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Take the following example:
#define vector __attribute__((vector_size(16)))
float a; float b;
vector float f(void) { return (vector float){ a, b, 0.0, 0.0}; }
---
Currently we get:
subl $12, %esp
movss _b, %xmm0
movss _a, %xmm1
unpcklps %xmm0, %xmm1
movaps %xmm1, %xmm0
xorl %eax, %eax
xorl %edx, %edx
movl %eax, (%esp)
movl %edx, 4(%esp)
xorps %xmm1, %xmm1
movlhps %xmm1, %xmm0
addl $12, %esp
------
We should be able to produce:
movss _b, %xmm0
movss _a, %xmm1
shufps 60, /*[0, 3, 3, 0]*/, %xmm1, %xmm0 // _a, 0, 0, _b
shufps 201, /*[3, 0, 2, 1]*/, %xmm0, %xmm0 // _a, _b, 0, 0
This is from Nathan Begeman.
--
Summary: (vector float){a, b, 0, 0} code gen is not good
Product: gcc
Version: 4.1.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: minor
Priority: P2
Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pinskia at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24073
- Follow-Ups:
- [Bug target/24073] (vector float){a, b, 0, 0} code gen is not good
- From: pinskia at gcc dot gnu dot org
- [Bug target/24073] (vector float){a, b, 0, 0} code gen is not good
- From: pinskia at gcc dot gnu dot org
- [Bug target/24073] (vector float){a, b, 0, 0} code gen is not good
- From: pinskia at gcc dot gnu dot org
- [Bug target/24073] (vector float){a, b, 0, 0} code gen is not good
- From: belyshev at depni dot sinp dot msu dot ru
- [Bug target/24073] (vector float){a, b, 0, 0} code gen is not good
- From: uros at kss-loka dot si
- [Bug target/24073] (vector float){a, b, 0, 0} code gen is not good
- From: uros at kss-loka dot si
- [Bug target/24073] (vector float){a, b, 0, 0} code gen is not good
- From: pinskia at gcc dot gnu dot org